Вопрос: Denyhosts vs fail2ban vs iptables - лучший способ предотвратить вход в систему с использованием грубой силы?


Я настраиваю сервер LAMP и должен предотвращать SSH / FTP / etc. попытка перебора в грубой силе от успеха. Я видел много рекомендаций как для denyhosts, так и для fail2ban, но немного сравнил их. Я также читал, что правило IPTables может заполнить ту же функцию.

Почему я должен выбрать один из этих методов над другим? Как люди на serverfault справляются с этой проблемой?


54
2018-04-03 01:07


Источник




Ответы:


IIRC, DenyHosts будут следить за вашим сервисом SSH. Если вам это нужно, чтобы защитить другие сервисы, Fail2ban определенно лучший выбор. Он настраивается для просмотра почти любой службы, если вы хотите настроить ее конфигурацию, но это не обязательно, поскольку новые версии Fail2ban включают в себя набор правил, подходящих для многих популярных демонов сервера. Использование fail2ban по простому пределу скорости iptables имеет то преимущество, что полностью блокирует атакующего в течение определенного времени, а не просто уменьшает, как быстро он может забивать ваш сервер. Я использовал fail2ban с отличными результатами на нескольких производственных серверах и никогда не видел одного из тех серверов, которые были нарушены приложением грубой силы, так как я начал использовать его.


49
2018-04-04 05:33



Обратите внимание, что DenyHosts будет блокировать другие службы - основное отличие заключается в том, что fail2ban использует iptables, тогда как DenyHosts использует hosts.deny, некоторые службы не смотрят на файлы hosts, такие как Apache. - jammypeach
Чтобы добавить еще одну опцию в таблицу, я недавно обнаружил, что конфигуратор брандмауэра ufw также позволяет применять (неконфигурируемый) предел скорости для любого TCP или UDP-порта. Если вы уже используете UFW, это может быть хорошим вариантом, вместо настройки и запуска дополнительного демона. - spiffytech
Первое, что нужно сделать для предотвращения бремени нарушений, - это использовать достаточно сильный пароль (или даже полностью отключить пароль authether :). Ограничение скорости (в одиночку) для этого является слабым. Я не пробовал альтернативы, но я сам использовал fail2ban и счел весьма полезным отбивать боты-пароли. - Petr Gladkikh
По моему опыту, fail2ban требует немного больше работы, чтобы заставить его на самом деле что-либо делать. Напротив, вы можете в значительной степени просто установить RPM denyhosts и запустить его, чтобы защитить свой сервер, когда вы разрабатываете более сложные параметры. Я определенно согласен, что fail2ban «лучше», но для легкой защиты вы не можете победить denyhosts. - Ralph Bolton


лучший способ предотвратить вход в систему с использованием грубой силы?

Не позволяйте им добраться до вашей машины в первую очередь! Существует множество способов остановить попытки грубой силы, прежде чем они дойдут до вашего хозяина или даже на уровне SSH.

Сказав, что защита вашей операционной системы чем-то вроде fail2ban - отличная идея. Fail2ban немного отличается от DenyHosts, хотя они играют в одном и том же пространстве. Fail2ban использует iptables.

http://en.wikipedia.org/wiki/Fail2ban

Fail2ban похож на DenyHosts ... но в отличие от DenyHosts, который   фокусируется на SSH, fail2ban может быть настроен для мониторинга любой службы, которая   записывает попытки входа в файл журнала и вместо использования   /etc/hosts.deny только для блокировки IP-адресов / хостов, fail2ban может использовать   Netfilter / iptables и TCP Wrappers /etc/hosts.deny.

Существует ряд важных методов безопасности, которые следует учитывать, чтобы помочь предотвратить вход в систему с использованием грубой силы:

SSH:

  • Не разрешать root для входа в систему
  • Не разрешайте ssh-пароли (используйте аутентификацию с использованием секретного ключа)
  • Не слушайте на каждом интерфейсе
  • Создайте сетевой интерфейс для SSH (например, eth1), который отличается от интерфейса, на который вы подаете запросы (например, eth0)
  • Не используйте общие имена пользователей
  • Используйте список разрешений и разрешайте пользователям, которым нужен SSH-доступ
  • Если вам нужен доступ в Интернет ... Ограничить доступ к конечному набору IP-адресов. Один статический IP-адрес идеален, однако его блокировка до x.x.0.0 / 16 лучше, чем 0.0.0.0/0
  • Если возможно найти способ подключения без доступа в Интернет, таким образом вы можете отказать в любом интернет-трафике для SSH (например, с помощью AWS вы можете получить прямое соединение, которое обходит Интернет, оно называется Direct Connect)
  • Использовать программное обеспечение, такое как fail2ban, для обнаружения любых грубых атак
  • Убедитесь, что ОС всегда обновляется, в частности, пакеты безопасности и ssh

Заявка:

  • Убедитесь, что ваше приложение всегда актуально, в частности пакеты безопасности
  • Заблокируйте страницы приложения «admin». Многие из приведенных выше рекомендаций относятся также к области администрирования вашего приложения.
  • Пароль. Защитите свою область администрирования, что-то вроде htpasswd для веб-консоли, спроецирует любые уязвимости в базовом приложении и создаст дополнительный барьер для входа.
  • Блокировать права доступа к файлам. «Загрузить папки» печально известны тем, что они являются точками входа всяких неприятных вещей.
  • Подумайте о том, чтобы разместить ваше приложение за частной сетью и выставлять только внешний балансировщик нагрузки и скачок (это типичная настройка в AWS с использованием VPC)

17
2018-05-12 10:42



Не могли бы вы подробнее остановиться на заявлении «Есть много способов остановить попытки грубой силы, прежде чем они доберутся до вашего хозяина или даже на уровне SSH». Меня особенно интересует, если у вас есть предложения для размещенных компьютеров, на которых у вас нет контроля над внешними сетями. Благодаря! - Kevin Keane


ДРУГОЙ БОЛЬШОЙ ПУТЬ ДЛЯ ЗАЩИТЫ SSH (Я использовал это в течение десятилетия или лучше) заключается в том, чтобы использовать последние библиотеки в iptables изначально (в зависимости от вашего дистрибутива).
В принципе, его можно использовать в качестве портового детонации, встроенного в iptables. Это избавит вас от многих головных болей. До тех пор, пока вы можете подключиться к tcp (telnet - это один из способов. Я также использовал ssh-клиентов и указал их на порт. Все, что будет делать tcp-соединение с указанным номером порта. Я смотрю на вас, Putty!) Из клиент, инициирующий ssh-соединение, вы можете использовать это.

Ниже приведен пример, в котором iptables откроет порт 22 для вашего хоста, когда вы подключаете telnet от вашего хоста к серверу на порту 4103. Затем вы можете использовать telnet для порта 4102 или 4104, чтобы закрыть открытие сеанса. Причиной как для 4102, так и для 4104 является сохранение простого сканирования tcp от открытия 22. Только подключение tcp (telnet) к порту 4103 позволит вам войти.

Наслаждайтесь!

О, и я одобряю Fail2Ban. Больше гибкости, и мне нравится, что запрет происходит в iptables, а не tcpwrappers.

SSH PORTKNOCKING

iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -m recent --rcheck --name SSH -j ACCEPT
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 4102 -m recent --name SSH --remove -j DROP
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 4103 -m recent --name SSH --set -j DROP
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 4104 -m recent --name SSH --remove -j DROP

7
2017-09-29 22:11





Я использую правила iptables для ограничения скорости новых соединений с одного и того же IP-адреса (в основном, SSH, но он отлично работает и для FTP). Преимущество, как я вижу, над «fail2ban» и другими подобными инструментами заключается в том, что маршрут iptables происходит полностью в режиме ядра и не полагается на какие-либо инструменты пользовательского режима для хвоста / анализа файлов журнала.

Сотни неудачных ssh-логинов

Если вы можете это сделать, ограничение адресов источников, которые могут получить доступ к указанным protcols, очевидно, поможет.

С SSH вы действительно должны использовать аутентификацию сертификата и не принимать пароли в любом случае.


6
2018-04-03 01:12



@ mc0e - Я не буду следовать. - Evan Anderson


Одно замечание о Fail2Ban заключается в том, что он, по-видимому, использует на 10 Мбайт больше памяти, чем DenyHosts. Поэтому, если вы используете VPS на 128 Мбайт, вам может понадобиться изучить это. Кроме того, готовый fail2ban настроен только на SSH, что означает, что без изменений в config - DenyHosts делает то же самое в меньшей памяти.


5
2017-09-25 18:49



Попробуйте добавить «ulimit -s 256» в / etc / default / fail2ban. Снижение на моей системе 10 МБ. - pkoch


Еще одно отличие между Fail2ban и Denyhosts заключается в том, что Denyhosts может совместно использовать список блоков с другими пользователями Denyhosts. С Fail2ban вы можете блокировать только IP-адреса, которые ваш сервер видел раньше - с помощью Denyhosts попытка грубой силы может даже не попасть на ваш сервер, если кто-то еще ее видел, а список блоков загружается на ваш сервер до того, как злоумышленник попадает на ваш компьютер.

Еще одно отличие заключается в том, что Fail2ban использует iptables, а Denyhosts использует tcpwrappers. Другие упомянули эту разницу раньше, но есть несколько примечательных примечаний.

iptables ограничено количеством IP-адресов, которые можно эффективно блокировать. Вероятно, это одна из причин, почему Fail2ban не имеет механизма для обмена списками блоков.

Другим эффектом является то, что когда iptables заменяется на nftables, Fail2ban, вероятно, перестанет работать или должен быть перезаписан. Вероятно, Denyhosts продолжит работу.

Таким образом, у обоих есть преимущества и недостатки. Мне нравятся оба; для себя я использую Denyhosts, потому что обычно я только хочу защитить SSH, и мне нравится делиться списком блоков.


4
2017-11-08 19:29





denyhosts для ssh. fail2ban более полный (HTTP, FTP и т. д.). Оба используют iptables за кулисами.


3
2018-04-03 01:13



И «denyhosts», и «fail2ban» используют iptables для выполнения своего «блокирующего» поведения, но они не используют iptables для ограничения скорости. Они анализируют журналы в «пользовательской земле» и действуют на записи журнала. - Evan Anderson
@Evan, denyhosts не использует iptables (по умолчанию). Он использует обертки TCP и обновляет ваш /etc/hosts.deny, когда система должна быть запрещена. - Zoredache
@Zoredache: Я стою исправлено. Когда enver использовал «denyhosts» раньше, я сделал неправильное предположение о том, как он вызывает свою «блокирующую» функциональность. Тем не менее, являюсь инструментом анализа / обработки логов для пользовательской области, я бы предпочел использовать строгое решение на основе iptables для «denyhosts». - Evan Anderson


Вместо того, чтобы возиться с утомительными iptables или конфигурацией fail2ban, почему бы не открыть открытое сообщество для вас всю работу и вместо этого использовать CSF / LFD? Я могу порекомендовать его выше всех других упомянутых опций. Видеть http://configserver.com/cp/csf.html для чего он может работать для ваших серверов. CSF не требует панели управления, он предлагает простой пользовательский интерфейс, для тех, кто не хочет делать это с помощью оболочки. И это много стабильных надежных Perl-скриптов нерезидентов.


1
2018-05-12 09:54



Это больше похоже на рекламу и заслоняет реальный вопрос. - Drew Khoury
Ну нет, я не замалчивал актуальный вопрос. Я передал альтернативу, которая помешала бы вам даже побеспокоить себя этим вопросом. Серьезно, CSF / LFD - это не просто еще одна система управления брандмауэром, она выросла из-за того, что здесь есть проблемы. Почему кто-то НЕ хочет развиваться? Это экономит вам много времени, потому что другие уже решили это. Вот почему CSF существует. - Ben
Для того, что это стоит, как человек, который ценит способность зарабатывать свое время, если цена правильная, я бы предпочел бы «решение« играть в плей-офф »для такого рода вещей, даже если это стоит несколько долларов. Таким образом, мне не нужно тратить время на изучение того, что мне действительно неинтересно, но признайте важность защиты. - David