Fail2ban debian 9 настройка
Обновлено: 01.07.2024
Для защиты вашего сервера от брутфорс-атак (взломов путем перебора паролей) лучше всего настроить и использовать авторизацию по ключу вместо авторизации по паролю.
Другим способом защиты может быть использование утилиты Fail2ban. Fail2ban анализирует логи служб, работающих на сервере, и при обнаружении подозрительной активности блокирует IP-адреса возможных злоумышленников. Fail2ban может использоваться для защиты Apache, FTP, dovecot и многих других сервисов.
В рамках этой статьи мы рассмотрим базовую настройку Fail2ban для защиты службы SSH от подбора пароля.
Установка
Для установки Fail2ban на Ubuntu/Debian выполните:
Для установки на CentOS:
Добавьте Fail2ban в автозагрузку:
На Ubuntu защита для SSH начнет работать сразу после установки. По умолчанию Fail2ban будет на 10 минут блокировать IP-адреса, с которых в течение 10 минут было выполнено 5 неудачных попыток авторизации.
Эти и другие параметры работы утилиты можно изменить в ее настройках.
Конфигурационный файл Fail2ban
Настройки Fail2ban хранятся в конфигурационном файле /etc/fail2ban/jail.conf .
Настройки разделены по секциям. В [DEFAULT] указываются общие параметры, которые определяют работу Fail2ban в целом и применяются для большинства служб. Специфические настройки для той или иной службы прописываются внутри соответствующей секции (например, [sshd] , [apache-auth] , [vsftpd] ).
Менять какие-либо параметры напрямую в файле jail.conf не рекомендуется. Вместо этого необходимо создать новый файл jail.local , разместив его в той же директории.
Можно либо сделать копию оригинального файла (может быть удобно, если вы планируете настроить Fail2ban для защиты нескольких служб, не только SSH):
Либо создать пустой файл с таким именем и внести нужные параметры в него:
В новом файле будет достаточно указать только те настройки, значения которых вы хотите изменить: для всех параметров, которые вы не пропишете отдельно, Fail2ban будет применять значения по умолчанию.
Настройка защиты SSH
Откройте файл jail.local для редактирования:
Пример настроек, которые можно добавить в файл:
Такая настройка означает, что если с какого-либо IP-адреса, за исключением указанного в ignoreip , в течение 2 минут будут выполнены 3 неудачные попытки авторизоваться, Fail2ban заблокирует этот адрес на 12 часов.
В секции DEFAULT могут быть указаны такие параметры, как период блокировки ( bantime ), количество попыток ( maxretry ) и пр., но в рамках данной инструкции мы пропишем большинство настроек в отдельной секции для SSH, а в раздел DEFAULT включим только параметр ignoreip :
- ignoreip — это "белый список" IP-адресов, то есть те адреса, которые не будут заблокированы при неудачных попытках подключения. Здесь можно прописать ваш собственный IP (если он статический, а не динамический), с которого вы подключаетесь к серверу. Можно указать несколько адресов через пробел или маску подсети.
В секции [sshd] указываются настройки для работы Fail2ban с конкретной службой - SSH. В зависимости от системы, секция может называться [sshd], [ssh] или [ssh-iptables] (можно проверить в файле jail.conf ).
Как упоминалось выше, при отсутствии того или иного параметра в этом файле, Fail2ban будет использовать значения по умолчанию. Соответственно, указать требуется только те настройки, значения которых нужно изменить.
Здесь мы прописали параметры:
Дополнительно могут быть настроены и другие параметры, например:
- port — порт, используемый службой, в данном случае SSH. Если SSH у вас работает на нестандартном порту (то есть не 22), пропишите его здесь. Если порт стандартный, указывать эту настройку необязательно.
- logpath — путь к файлу лога, который анализирует Fail2ban. По умолчанию это стандартный путь к логу sshd.
- action — выполняемое действие при блокировке IP. По умолчанию выполняется блок подозрительного IP путем изменения правил iptables .
Чтобы заблокировать все порты для этого IP, можно использовать: action = iptables-allports .
Если на сервере настроен firewalld или ufw , то для фильтрации с их помощью нужно указать соответствующее значение для action: firewallcmd-ipset и ufw , соответственно.
Полный список действий доступен в /etc/fail2ban/action.d .
После сохранения изменений перезапустите Fail2ban:
Проверка
После настройки Fail2ban имеет смысл проверить его работу. Лучше делать это не сразу, а спустя пару часов после сохранения настроек, тогда результат будет более наглядным.
В этой статье мы вновь вернемся к теме безопасности сервера и расскажем, как защитить VPS при помощи программы Fail2ban. Основное ее предназначение — защита хоста от несанкционированного доступа, что возможно благодаря тщательному отслеживанию сетевой активности на основных портах и чтению журналов записей (лог-файлов). Программа особенно эффективна против так называемых brute-force атак, поскольку она нейтрализует атакующего таким образом, что все пакеты, отправленные с устройства, IP-адрес которого по той или иной причине попал в черный список, отбрасываются. Блокировка настраивается путем внесения изменений в правила iptables. Итак, приступим к настройке арендованного VPS сервера.
Содержание
Установка на Ubuntu 14.04
1. Для установки программы Fail2ban выполните следующие команды:
2. Для того, чтобы установленное программное обеспечение работало должным образом, вам необходимо внести поправки в конфигурационный файл. По умолчанию таковым является /etc/fail2ban/jail.conf.
Однако разработчики крайне не рекомендуют редактировать его напрямую, чтобы избежать осложнений при работе с сервером. Поэтому создайте локальную копию данного файла командой:
Далее вам нужно будет выполнять редактирование только /etc/fail2ban/jail.local. Он будет подключен системой автоматически и имеет высший приоритет при исполнении.
3. Откройте файл jail.local для редактирования одной из команд: Если вам удобнее работать с редактором nano:
Если для вас предпочтительнее редактор vi:
Обратите внимание на секцию [DEFAULT].
Она содержит в себе основные правила, заданные по умолчанию для Fail2ban.
ignoreip — значения этого параметра говорят о том, какие IP-адреса блокироваться не будут вовсе. Если вы хотите, чтобы Fail2ban игнорировал при проверке несколько IP-адресов, их необходимо указать в значении ignoreip через пробел.
bantime — данный параметр означает время в секундах, в течение которого подозрительный IP будет заблокирован. Изначально его значение составляет 10 минут.
findtime — определяет промежуток времени в секундах, в течение которого программой будет определяться наличие подозрительной активности.
maxretry — допустимое число неуспешных попыток получения доступа к серверу. При превышении указанного значения IP попадает в бан.
Ниже будут представлены другие секции, при помощи которых можно настроить защиту различных сервисов, установленных на ваш виртуальный сервер, например, ssh, ftp и прочих. Подробная процедура их настройки будет рассмотрена в конце данной статьи в разделе «Настройка Fail2ban».
4. После редактирования jail.local обязательно сделайте перезапуск Fail2ban командами
Установка Fail2ban на CentOS 6.*
1. Чтобы установить программу на виртуальный сервер, выполните поочередно такие команды:
2. По аналогии с п. 2 в инструкции для Ubuntu создайте локальную копию конфигурационного файла и откройте этот файл для редактирования командами:
3. Активируйте защиту своего VPS там, где нужно, редактируя содержимое jail.local. Подробная инструкция по настройке представлена далее в разделе «Настройка Fail2ban». Внимательно следите за корректностью пути к файлу хранения логов в значении параметра logpath.
4. После редактирования конфигурационного файла перезапустите Fail2ban командой
Установка Fail2ban на Debian 7
1. Установка программы на VPS выполняется следующим набором команд:
2. Повторите п. 2 из двух предыдущих разделов для создания локальной копии конфигурационного файла jail.conf:
3. Настройка алгоритма работы Fail2ban задается точно таким же образом, как и для операционных систем Ubuntu и CentOS. Вам необходимо активировать нужные секции jail.local ([ssh], [apache] и прочие, в зависимости от портов, защиту которых вы хотите активировать) и сохранить результаты редактирования конфигурационного файла. Более подробное описание этой процедуры представлено ниже в разделе «Настройка Fail2ban».
4. После правки конфигурационного файла выполните перезапуск Fail2ban командой
Настройка Fail2ban
Первым делом настройте защиту своего VPS по протоколу SSH при помощи программы Fail2ban. Для этого найдите в файле jail.local секцию [ssh].
Она должна быть активна по умолчанию. Тем не менее, на всякий случай, убедитесь, что в значении параметра enabled установлено true, а не false.
Укажите значения параметров, на основании которых Fail2ban должен выполнять отслеживание активности:
filter — фильтр, который будет использоваться. По умолчанию это /etc/fail2ban/filter.d/sshd.conf;
action — действия, которые будет выполнять Fail2ban при обнаружении атакующего IP-адреса, все правила реагирования на действия злоумышленника описаны в файле /etc/fail2ban/action.d. Соответственно, в качестве значения параметра action не может быть указана информация, которой нет в файле /etc/fail2ban/action.d;
logpath — полный путь к файлу, в который будет записываться информация о попытках получения доступа к VPS.
findtime — время в секундах, в течение которого наблюдается подозрительная активность;
maxretry — разрешенное количество повторных попыток подключения к серверу;
bantime — промежуток времени, в течение которого попавший в черный список IP будет оставаться заблокированным.
Стоит обратить внимание на тот факт, что вовсе необязательно прописывать значения вышеуказанных параметров в каждой секции. Если их не упоминать, в действие вступят настройки, указанные в главном разделе [DEFAULT]. Главное, чтобы для переменной enabled было указано значение true.
Защита протокола SSH
Рассмотрим применение параметров реагирования более детально. Пример конфигурации Fail2ban на порту SSH:
В качестве значения переменной sender после fail2ban@ укажите домен либо хостнейм VPS.
Дополнительно для защиты SSH активируйте следующую секцию:
Для хранения больших списков заблокированных IP-адресов можно использовать комбинацию Netfilter/Iptables и IPsets. Чтобы настроить работу Fai2ban таким образом, активируйте раздел [ssh-iptables-ipset4]:
После правки конфигурационного файла сохраните внесенные изменения.
Аналогичным образом можно защитить и прочие сервисы.
Защита почтового сервера
Ниже представлены примеры настроек конфигурационного файла для защиты почтового сервера postfix.
Защиту почтового сервера dovecot можно активировать следующим образом:
Пример конфигурации jail.local для защиты roundcube:
Защита веб-сервера (apache)
Для защиты веб-сервера Apache можно использовать следующие настройки Fail2ban:
Как вы уже могли заметить, в используемых выше секциях файла jail.local отсутствуют значения параметра action. В этом случае при обнаружении атаки на сервис apache программа Fail2ban будет выполнять действие, определенное в секции [DEFAULT], а именно action = iptables-multiport. Это значит, что атакующий IP-адрес будет заблокирован в iptables при помощи так называемого модуля multiports. Модуль multiports позволяет настроить правило сразу для диапазонов портов.
Защита FTP сервера
Для защиты FTP-сервера vsftpd с помощью Fail2ban можно использовать следующие параметры:
Не забудьте о необходимости перезапуска Fail2ban после каждого редактирования конфигурационного файла.
На этом настройка Fail2ban завершена. Ознакомиться с полным списком правил, которыми программа будет руководствоваться при мониторинге активности на вашем VPS, можно с помощью команды sudo iptables –L
Основные моменты по установке и настройке программы рассмотрены. В случае, если какой-то IP-адрес будет заблокирован Fail2ban по ошибке, удалить его из черного списка можно командой:
SSH довольно безопасен, особенно если вы примете разумные меры предосторожности, такие как требование аутентификации на основе пары ключей. Тем не менее, в дикой природе по-прежнему существует множество ботов, которые пытаются найти уязвимые хосты, пытаясь войти в систему с распространенными скомпрометированными именами пользователей и паролями, такими как root / root или admin / admin. Хотя маловероятно, что они добьются успеха, они все равно будут использовать вашу пропускную способность и генерировать огромное количество журналов.
Установка fail2ban на Ubuntu
Ручная установка
Установить fail2ban в Ubuntu (и других дистрибутивах на основе Debian) очень просто:
Проверяем как это работает
Вы можете проверить, запущена ли служба, с помощью следующей команды:
$ sudo systemctl status fail2ban
Вывод должен быть похож на следующий — статус службы должен быть активным:
Посмотрим, как fail2ban изменил правила iptables:
Вы также должны увидеть, что в конфигурации iptables есть новая цепочка f2b-sshd, на которую ссылается правило цепочки INPUT:
Пакет fail2ban содержит инструмент под названием fail2ban-client. Он позволяет вам проверять статус службы и взаимодействовать с ней (например, позволяет вручную блокировать и разблокировать IP-адреса, включать и отключать тюрьмы и т. д.)
Посмотрим, какие jails активны:
Есть только один jail — sshd — которsq отвечает за мониторинг журналов SSH-сервера на предмет неудачного входа в систему и настройку правил брандмауэра для блокировки дальнейших попыток.
Теперь мы можем проверить статистику по sshd jail:
Настройка fail2ban
В большинстве случаев конфигурации по умолчанию должно быть достаточно. Тем не менее, полезно понимать, что это за значения по умолчанию и как их можно изменить в соответствии с вашими потребностями.
В стандартной конфигурации fail2ban защитит SSH-сервер и заблокирует злоумышленника на 10 минут после 5 неудачных попыток входа в систему в течение 10 минут. Файл конфигурации по умолчанию можно найти в /etc/fail2ban/jail.conf. Файл хорошо документирован и в основном не требует пояснений. Имейте в виду, что вам не следует вносить какие-либо изменения в этот файл, так как он может быть перезаписан во время обновления fail2ban.
После изменения конфигурации не забудьте перезапустить службу:
Должен заметить, что в данном случае я изменил параметры конфигурации, понимая стратегию атаки и получил суточный список атакующих хостов и заблокировал его.
Но об этом позже расскажу в отдельной заметке, если эта будет кому то полезна и интересна.
Fail2ban — простой в использовании локальный сервис, который отслеживает log–файлы запущенных программ, и на основании различных условий блокирует по IP найденных нарушителей.
Программа умеет бороться с различными атаками на все популярные *NIX–сервисы, такие как Apache, Nginx, ProFTPD, vsftpd, Exim, Postfix, named, и т.д.
Но в первую очередь Fail2ban известен благодаря готовности «из коробки» к защите SSH–сервера от атак типа «bruteforce», то есть к защите SSH от перебора паролей.
Установка Fail2ban
Готовые пакеты Fail2ban можно найти в официальных репозиториях всех популярных Linux дистрибутивов.
Установка Fail2ban на Debian/Ubuntu:
Установка Fail2ban на CentOS/Fedora/RHEL:
Конфигурация Fail2ban
На данном этапе Fail2ban уже готов к работе, базовая защита SSH сервера от перебора паролей будет включена по умолчанию. Но лучше всё-же внести некоторые изменения следуя рекомендациям ниже.
- /etc/fail2ban/fail2ban.conf — отвечает за настройки запуска процесса Fail2ban.
- /etc/fail2ban/jail.conf — содержит настройки защиты конкретных сервисов, в том числе sshd.
Файл jail.conf поделён на секции, так называемые «изоляторы» (jails), каждая секция отвечает за определённый сервис и тип атаки:
Параметры из секции [DEFAULT] применяются ко всем остальным секциям, если не будут переопределены.
Секция [ssh] отвечает за защиту SSH от повторяющихся неудачных попыток авторизации на SSH–сервере, проще говоря, «brute–force».
Подробнее по каждому из основных параметров файла jail.conf:
ignoreip — IP–адреса, которые не должны быть заблокированы. Можно задать список IP-адресов разделённых пробелами, маску подсети, или имя DNS–сервера.
bantime — время бана в секундах, по истечении которого IP–адрес удаляется из списка заблокированных.
maxretry — количество подозрительных совпадений, после которых применяется правило. В контексте [ssh] — это число неудавшихся попыток логина, после которых происходит блокировка.
enabled — значение true указывает что данный jail активен, false выключает действие изолятора.
port — указывает на каком порту или портах запущен целевой сервис. Стандартный порт SSH–сервера — 22 , или его буквенное наименование — ssh .
filter — имя фильтра с регулярными выражениями, по которым идёт поиск «подозрительных совпадений» в журналах сервиса. Фильтру sshd соответствует файл /etc/fail2ban/filter.d/sshd.conf .
logpath — путь к файлу журнала, который программа Fail2ban будет обрабатывать с помощью заданного ранее фильтра. Вся история удачных и неудачных входов в систему, в том числе и по SSH, по умолчанию записывается в log–файл /var/log/auth.log .
Рекомендации по настройке Fail2ban
Не рекомендуется оставлять параметр ignoreip со значением по умолчанию 127.0.0.1/8 , это создаёт очевидную угрозу в многопользовательских системах — если злоумышленник получил доступ хотя–бы к одному shell–аккаунту, то он имеет возможность беспрепятственно запустить bruteforce–программу для атаки на root или других пользователей прямо с этого–же сервера.
Новая опция findtime — определяет длительность интервала в секундах, за которое событие должно повториться определённое количество раз, после чего санкции вступят в силу. Если специально не определить этот параметр, то будет установлено значение по умолчанию равное 600 (10 минут). Проблема в том, что ботнеты, участвующие в «медленном брутфорсе», умеют обманывать стандартное значение. Иначе говоря, при maxretry равным 6, атакующий может проверить 5 паролей, затем выждать 10 минут, проверить ещё 5 паролей, повторять это снова и снова, и его IP забанен не будет. В целом, это не угроза, но всё же лучше банить таких ботов.
Прежде чем вносить изменения следуя рекомендациям, отметим, что не стоит редактировать основной файл настроек jail.conf , для этого предусмотрены файлы с расширением *.local , которые автоматически подключаются и имеют высший приоритет.
Осталось перезапустить Fail2ban:
Заключение
В статье затронуты только базовые возможности Fail2Ban, применимые для защиты SSH на типовом Linux–сервере. Более подробную документацию по программе вы можете найти в официальной Wiki на авторском веб–сайте.
Читайте также: