freebsd:network:fail2ban
Различия
Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
| freebsd:network:fail2ban [2020/06/17 14:44] – andrei | freebsd:network:fail2ban [2020/06/17 19:34] (текущий) – [Jail] andrei | ||
|---|---|---|---|
| Строка 20: | Строка 20: | ||
| ==== PF ==== | ==== PF ==== | ||
| + | В дистрибутиве идет очень мудреный конфиг для pf. Да и на FreeBSD 12.1 он у меня не запустился (вылетал с ошибкой при запуске fail2ban). Поэтому я написал свой простенький набор действий. | ||
| + | Создаем файл / | ||
| + | |||
| + | < | ||
| + | [Definition] | ||
| + | actionstart = | ||
| + | actionstop = | ||
| + | actioncheck = | ||
| + | actionban = /sbin/pfctl -t < | ||
| + | actionunban = /sbin/pfctl -t < | ||
| + | |||
| + | [Init] | ||
| + | tablename = fail2ban | ||
| + | </ | ||
| + | |||
| + | Где: | ||
| + | * **actionban** команда для блокировки ip адреса; | ||
| + | * **actionunban** команда для разблокировки; | ||
| + | * **tablename** имя таблицы в конфиге pf. | ||
| + | |||
| + | Осталось только настроиться сам pf. В файл / | ||
| + | |||
| + | < | ||
| + | table < | ||
| + | |||
| + | block return in quick from < | ||
| + | </ | ||
| + | |||
| + | ==== Sendmail ==== | ||
| + | |||
| + | Так же в состав fail2ban не входят скрипты для блокировки буртефорса паролей в sendmail-е. Но это можно легко исправить. =) По умолчанию в лог / | ||
| + | |||
| + | < | ||
| + | define(`confLOG_LEVEL', | ||
| + | </ | ||
| + | |||
| + | И пересобрать его: | ||
| + | |||
| + | < | ||
| + | cd /etc/mail | ||
| + | make install | ||
| + | service sendmail restart | ||
| + | </ | ||
| + | |||
| + | Теперь в файле / | ||
| + | |||
| + | < | ||
| + | Jun 17 17:58:14 gw3 sm-mta[37333]: | ||
| + | </ | ||
| + | |||
| + | Вот их мы и будем отслеживать. Для чего напишем наш собственный фильтр. Создаем файл / | ||
| + | |||
| + | < | ||
| + | # Fail2Ban filter for sendmail authentication failures | ||
| + | # | ||
| + | |||
| + | [INCLUDES] | ||
| + | |||
| + | before = common.conf | ||
| + | |||
| + | [Definition] | ||
| + | |||
| + | _daemon = sendmail | ||
| + | |||
| + | failregex = ^%(__prefix_line)s\w{12, | ||
| + | |||
| + | ignoreregex = | ||
| + | </ | ||
| + | ==== Jail ==== | ||
| + | |||
| + | Переходим к настройки самого fail2ban. Создаем файл / | ||
| - | jail.local: | ||
| < | < | ||
| [DEFAULT] | [DEFAULT] | ||
| banaction = my-pf | banaction = my-pf | ||
| - | action = my-pf[table=bruteforce] | + | ignoreip = 127.0.0.1 10.1.1.0/24 |
| - | ignoreip = 127.0.0.1 10.30.10.0/24 | + | bantime |
| - | bantime | + | findtime = 1h |
| - | findtime | + | |
| maxretry = 3 | maxretry = 3 | ||
| - | |||
| [ssh] | [ssh] | ||
| Строка 55: | Строка 123: | ||
| [sendmail-sasl] | [sendmail-sasl] | ||
| enabled | enabled | ||
| + | bantime | ||
| filter | filter | ||
| - | action = my-pf[table=bruteforce] | ||
| - | port=" | ||
| logpath | logpath | ||
| </ | </ | ||
| - | my-pf.conf: | + | Где: |
| - | < | + | * **banaction** подключение нашего конфиги для работы с pf; |
| - | [Definition] | + | * **ignoreip** список адресов, |
| - | actionstart = | + | * **bantime** на какое время блокировать |
| - | actionstop = | + | * **findtime** промежуток времени в который учитываются повторения. |
| - | actioncheck = | + | |
| - | actionban = /sbin/pfctl -t < | + | |
| - | actionunban = /sbin/pfctl -t < | + | |
| - | [Init] | + | Поумолчанию я блокирую ip на 2 часа, но для нашего правила sendmail-sasl я делал исключение - в таблицу они попадают на сутки. |
| - | tablename = fail2ban | + | |
| - | </ | + | |
| - | sendmail-sasl.conf: | + | ===== Запуск и отладка ===== |
| - | < | + | |
| - | # Fail2Ban filter for sendmail authentication failures | + | |
| - | # | + | |
| - | [INCLUDES] | + | Запускаем: |
| - | before = common.conf | + | <code> |
| - | + | service fail2ban start | |
| - | [Definition] | + | |
| - | + | ||
| - | _daemon = sendmail | + | |
| - | + | ||
| - | failregex = ^%(__prefix_line)s\w{12, | + | |
| - | + | ||
| - | ignoreregex = | + | |
| </ | </ | ||
| - | sendmail: | + | Проверить работу можно изучая лог файл / |
| < | < | ||
| - | define(`confLOG_LEVEL', | + | fail2ban-client status |
| - | </ | + | fail2ban-client status ssh |
| + | </ | ||
freebsd/network/fail2ban.1592405069.txt.gz · Последнее изменение: — andrei
