Fail2Ban настройка

Fail2Ban позволяет обезопасить сервер от взлома путём подбора пароля. Уже писал про принцип действия в статье «Защита от подбора пароля к SSH«, но решил описать процесс настройки более подробно. Всё будем делать для популярной системы Centos6. Для других систем команды установки могут отличаться.

Устанавливаем Fail2Ban

yum install fail2ban-server

Настраиваем

Заходим в папку /etc/fail2ban/ и находим там файл jail.conf. Это файл настроек программы. Он содержит настройки «по умолчанию» и перезаписывается при каждом обновлении fail2ban, поэтому не стоит в нём ничего менять. Необходимо скопировать этот файл в jail.local, в ту же папку:

cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

В jail.local будут хранится наши настройки. Файл можно изменять и он не будет затираться при обновлении. Если в jail.local укажем не все настройки, то недостающие будут браться из jail.conf.

Fail2Ban работает через файлы логов. К примеру, если хотим обезопасить вход по ssh, то fail2ban откроет логи входа на сервер и выяснит всё о неудачных попытках входа через ssh. А именно: периодичность неудачных входов и количество попыток. Эти данные будут использоваться для блокировки нарушителей.

Ставим защиту на ssh

Открываем jail.local и видим довольно подробные инструкции. Сначала выставим пороговые значения неудачных попыток и время, на которое нарушитель будет попадать в блокировку. Для этого находим строку (примерно 50-ая в файле):

# «bantime» is the number of seconds that a host is banned.

bantime = 3600

После нескольких неудачных попыток входа ip адрес входящего будет попадать в бан лист на час. И все подключения от этого ip будут сбрасываться. Я редко ошибаюсь при вводе пароля, поэтому установил это bantime = 360000 (блокировка на 4 дня)

Чуть ниже идут два параметра:

# A host is banned if it has generated «maxretry» during the last «findtime» seconds.

findtime = 3600

# «maxretry» is the number of failures before a host get banned.

maxretry = 3

Нарушителем будет считаться тот, кто попытается сделать maxretry неудачных попыток входа в течении findtime. Т.е. если в течении 3600 секунд сделаешь 3 неудачные попытки входа, то неминуемо отправляешься в бан. Мои настройки установлены на maxretry = 2 и findtime = 36000 (2 неудачные попытки за 10 часов).

С определением наказания для нарушителей и критерием их отлова закончили. Теперь необходимо применить это наказание. Но тут нас ждёт обилие выбора (файл jail.local ниже 200-ой строки). Мы можем установить защиту на ssh, ftp, roundcube, groupoffice, drupal, sendmail, mysqld и даже counter-strike. Механизм везде одинаковый, поэтому рассмотрим на примере ssh. Находим строку [sshd] и вставляем после неё enabled = true, чтобы получилось:

[sshd]

enabled = true

Сохраняем файл jail.local. И перезапускаем fail2ban:

sudo service fail2ban restart

Скорость запуска программы зависит от размера лог файла. Ведь при каждом запуске происходит сканирование на предмет нарушений. Если вы несколько дней назад делали неудачные попытки входа и они есть в логах, то тоже попадёте в бан. Поэтому рекомендую проверить логи, чтобы не заблокировать себя любимого.

Если fail2ban настроен верно, то можно дать команду серверу fail2ban-client status. Появится список активированных «тюрем» (jail):

fail2ban

Чтобы посмотреть содержание тюрьмы «sshd» можно ввести:

fail2ban-client status sshd

Теперь проверим действительно ли работает Fail2Ban и запросим список заблокированных адресов через команду iptables -L

fail2ban

Конечно, необходимо чтобы в файле логов (по умолчанию /var/log/secure) были не успешные попытки входа. Иначе список заблокированных в iptables будет пуст.

Напоследок не забудем прописать Fail2Ban в автозагрузку командой:

chkconfig fail2ban on

Разблокировать IP

Чтобы удалить ip из бан листа ssh, необходимо ввести следующую команду в консоли:

fail2ban-client set sshd unbanip 123.123.123.123

Вместо sshd поставьте название jail, в которую попал ip адрес.

Итог

Fail2Ban обезопасит сервер от взлома путём подбора пароля. Программа довольно эффективна и не требует постоянного присмотра. Категорически рекомендую.



2016-11-05T20:42:46
Интернет