- Исходные данные
# uname -sr FreeBSD 10.3-RELEASE # pkg info | grep fail2ban py27-fail2ban-0.9.4 Scans log files and bans IP that makes too many password failures
- ipfw
Таблица 1 у меня используется для разрешений, таблица 2 - для персонального вечного бана, поэтому для нарушителей, отловленных fail2ban, будем использовать отдельную таблицу с номером 3. Добавляем запрещающее правило в файл с правилами ipfw./sbin/ipfw -q add deny log all from table\(3\) to me /sbin/ipfw -q add deny log all from me to table\(3\)
Перезапускаем ipfw# /etc/rc.d/ipfw restart
- Установка
# /usr/ports/security/py-fail2ban # make install clean
- Настройка
/etc/rc.conffail2ban_enable="YES"
/usr/local/etc/rc.d/fail2ban/fail2ban.conf
в этом файле менять особо нечего, если только dbpurgeage - период, после истечения которого, ip-адрес нарушителя удаляется из базы fail2ban.
/usr/local/etc/rc.d/fail2ban/jail.conf - файл настроек бана, делаем из на его основе рабочий (иначе при обновлении порта все ваши настройки затрутся):# cd /usr/local/etc/rc.d/fail2ban # cp jail.conf jail.local
Дальше работаем с /usr/local/etc/rc.d/fail2ban/jail.local:[DEFAULT] # белый список ip (через пробел) ignoreip = 127.0.0.1/8 192.168.1.1
ПО УМОЛЧАНИЮ ВСЕ JAILS ВНУТРИ ЭТОГО ФАЙЛА ОТКЛЮЧЕНЫ, поэтому нужные jails необходимо настроить вручную.
Для включения jail обязательно добавляемenabled = true
для бана через ipfw меняем action наaction = bsd-ipfw[table=3, tablearg=JAILNAME]
Настраиваем блокировку подбора пароля, например для ssh[sshd] enabled = true port = ssh logpath = %(sshd_log)s backend = %(sshd_backend)s action = bsd-ipfw[table=3, tablearg=22] # ищем в логе три неудачных попытки, после чего баним maxretry = 3 # бан в секундах, 10800 - 3 часа, если не задавать, то # используется bantime из [DEFAULT] # вместо 10800 можно использовать 180m bantime = 10800
- Запускаем
# /usr/local/etc/rc.d/fail2ban start
- Проверка
fail2ban, проверяем, например jail asterisk (настройки [asterisk] сделаны по аналогии с [sshd])# fail2ban-client status asterisk Status for the jail: asterisk |- Filter | |- Currently failed: 0 | |- Total failed: 0 | `- File list: /var/log/asterisk/messages `- Actions |- Currently banned: 1 |- Total banned: 1 `- Banned IP list: 142.54.161.10
ipfw# ipfw table 3 list 142.54.161.10/32 0
- Как разбанить ip
Пожалуй, самая главная команда:# fail2ban-client set <JAIL> unbanip <IP>
Статья опубликована: 2016-04-10 12:52:17
Последние правки: 2018-10-24 21:48:04
fail2ban - программа для защиты от подбора паролей для ssh, asterisk и множества других сервисов. Настраиваем работу fail2ban в FreeBSD в связке с ipfw (по умолчанию fail2ban настроен на iptables).