freebsd:network:fail2ban
Различия
Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
| freebsd:network:fail2ban [2020/06/17 14:13] – [Настройка] andrei | freebsd:network:fail2ban [2020/06/17 19:34] (текущий) – [Jail] andrei | ||
|---|---|---|---|
| Строка 4: | Строка 4: | ||
| ===== Введение ===== | ===== Введение ===== | ||
| - | ===== Настройка ===== | ||
| - | jail.local: | + | Bruteforce ( перебор паролей) |
| - | < | + | |
| - | [DEFAULT] | + | |
| - | banaction = my-pf | + | |
| - | action = my-pf[table=bruteforce] | + | |
| - | ignoreip = 127.0.0.1 10.30.10.0/24 | + | |
| - | bantime | + | |
| - | findtime | + | |
| - | maxretry | + | ===== Установка ===== |
| + | Для установки нам надо знать какая версия python, и выбрать подходящий пакет с fail2ban. В моем случает это py37-fail2ban. Устанавливаем его и включаем в rc.conf: | ||
| - | [ssh] | + | < |
| - | enabled = true | + | pkg install py37-fail2ban |
| - | filter = bsd-sshd | + | service fail2ban enable |
| - | logpath = /var/log/auth.log | + | </code> |
| - | [dovecot] | + | ===== Настройка ===== |
| - | enabled | + | |
| - | filter | + | |
| - | [sendmail] | + | ==== PF ==== |
| - | enabled | + | |
| - | filter | + | |
| - | [sendmail-auth] | + | В дистрибутиве идет очень мудреный конфиг для pf. Да и на FreeBSD 12.1 он у меня не запустился (вылетал с ошибкой при запуске fail2ban). Поэтому я написал свой простенький набор действий. |
| - | enabled = true | + | |
| - | [sendmail-reject] | + | Создаем файл / |
| - | enabled = true | + | |
| - | + | ||
| - | [sendmail-sasl] | + | |
| - | enabled | + | |
| - | filter | + | |
| - | action | + | |
| - | port=" | + | |
| - | logpath | + | |
| - | </ | + | |
| - | my-pf.conf: | ||
| < | < | ||
| [Definition] | [Definition] | ||
| Строка 58: | Строка 36: | ||
| </ | </ | ||
| - | sendmail-sasl.conf: | + | Где: |
| + | * **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 | # Fail2Ban filter for sendmail authentication failures | ||
| Строка 75: | Строка 89: | ||
| ignoreregex = | ignoreregex = | ||
| </ | </ | ||
| + | ==== Jail ==== | ||
| + | |||
| + | Переходим к настройки самого fail2ban. Создаем файл / | ||
| - | sendmail: | ||
| < | < | ||
| - | define(`confLOG_LEVEL', | + | [DEFAULT] |
| + | banaction = my-pf | ||
| + | ignoreip = 127.0.0.1 | ||
| + | bantime | ||
| + | findtime = 1h | ||
| + | |||
| + | maxretry = 3 | ||
| + | |||
| + | [ssh] | ||
| + | enabled = true | ||
| + | filter = bsd-sshd | ||
| + | logpath = / | ||
| + | |||
| + | [dovecot] | ||
| + | enabled = true | ||
| + | filter = dovecot | ||
| + | |||
| + | [sendmail] | ||
| + | enabled = true | ||
| + | filter = bsd-sendmail | ||
| + | |||
| + | [sendmail-auth] | ||
| + | enabled = true | ||
| + | |||
| + | [sendmail-reject] | ||
| + | enabled = true | ||
| + | |||
| + | [sendmail-sasl] | ||
| + | enabled | ||
| + | bantime | ||
| + | filter | ||
| + | logpath | ||
| </ | </ | ||
| + | Где: | ||
| + | * **banaction** подключение нашего конфиги для работы с pf; | ||
| + | * **ignoreip** список адресов, | ||
| + | * **bantime** на какое время блокировать ip; | ||
| + | * **findtime** промежуток времени в который учитываются повторения. | ||
| + | |||
| + | Поумолчанию я блокирую ip на 2 часа, но для нашего правила sendmail-sasl я делал исключение - в таблицу они попадают на сутки. | ||
| + | |||
| + | ===== Запуск и отладка ===== | ||
| + | |||
| + | Запускаем: | ||
| + | |||
| + | < | ||
| + | service fail2ban start | ||
| + | </ | ||
| + | |||
| + | Проверить работу можно изучая лог файл / | ||
| + | < | ||
| + | fail2ban-client status | ||
| + | fail2ban-client status ssh | ||
| + | </ | ||
freebsd/network/fail2ban.1592403181.txt.gz · Последнее изменение: — andrei
