Настраиваем FAIL2BAN на Debian 11 с межсетевым экраном UFW для защиты SSH
Программа fail2ban жизненно необходима на каждом linux сервере, как только он будет доступен в интернете. Армия ботов постоянно сканирует доступное адресное пространство с целью получить доступ к любому устройству, будь-то сервер, компьютер, маршрутизатор, коммутатор, точка доступа, видеокамера или что-то еще.
10 лет назад я уже писал о защите от broot force (полный перебор или метод «грубой силы»). С тех пор вышли новые версии операционных систем. Поэтому я написал новую более актуальную статью по настройке fail2ban на операционной системе Debian 11.
Как установить fail2ban в операционной системе Debian 11
Программа fail2ban присутствует в репозиториях Debian 11, поэтому для ее установки просто выполните следующую команду в консоли от имени root-пользователя:
# apt install fail2ban
Затем добавьте fail2ban а автозагрузку:
# systemctl enable fail2ban
И запустите:
# systemctl start fail2ban
С настройками по-умолчанию fail2ban на 99% снимает проблему подбора паролей методом перебора. При условии что сам пароль сложный (строчные и прописные буквы, цифры, спецсимволы) и длинный (не менее 16 символов).
Нужно ли ставить fail2ban
Если вы думаете, что ваш сервер не представляет никакой ценности, никому не нужен и никто не будет пытаться получить к нему доступ, то это далеко не так. Взламывают всех без разбора.
Приведу результат блокировок fail2ban на свежем сервере, которому 10 дней от роду, и на котором ничего не установлено.
Выполните следующую команду в консоли, чтобы посмотреть статистику работы fail2ban для SSH
# fail2ban-client status sshd
Как видно у моего сервера за 10 дней более 1000 ошибочных подключений (то есть с неправильным паролем) и это был не я 🙂
Fail2bat заблокировал более 300 IP адресов с которых были попытки подключений.
Вывод очевиден: программу fail2ban или ей подобную нужно ставить обязательно.
Расширенные настройки fail2ban
Чтобы усложнить жизнь хакерам и их ботам нужно изменить настройки по-умолчанию fail2ban. Для этого уменьшим пограничное количество ошибочных подключений и увеличим время блокировки IP адреса с которого производятся подключения.
Внесите изменения в файл /etc/fail2ban/jail.local
. Если он отсутствует, то создайте его.
Для защиты SSH у меня такая конфигурация:
[DEFAULT] bantime = 604800 maxretry = 3 findtime = 7200 banaction = ufw [sshd] enabled = true
где
- bantime — это время в секундах на которое блокируется IP адрес с ошибочными подключениями. В моем примере — 7 дней.
- maxretry — это количество неудачных попыток до попадания в стоп-лист
- findtime — это временной интервал секундах определяющий количество неудачных попыток. В моем примере — 2 часа
- banaction — это брандмауэр с помощью котрого будут блокировать IP адреса. В моем примере — это UFW.
При таких настройках если в течении 2-х часов с одного IP адреса будет 3 неудачных подключения, то такой IP адрес будет заблокирован на 7 дней с помощью брандмауэра UFW.
Чтобы настройки вступили в силу перезапустите fail2ban:
# systemctl restart fail2ban
Как удалить IP адрес из черного списка fail2ban
Если нужно снять блокировку с конкретного IP адреса выполните следующую команду. В этом примере удалим адрес из таблицы sshd:
# fail2ban-client set sshd unbanip XXX.YYY.ZZZ.AAA
где XXX.YYY.ZZZ.AAA — адрес который нужно разблокировать.
Вывод
Это далеко не полное описание возможностей программы fail2ban. Я привел пример защиты только для SSH.
Ставить защиту в виде fail2ban или подобной программы нужно обязательно.
Благодарности
При написании статьи были использованы следующие источники: