Инструменты пользователя

Инструменты сайта


freebsd:network:fail2ban

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
freebsd:network:fail2ban [2020/06/17 14:35] – [Введение] andreifreebsd:network:fail2ban [2020/06/17 19:34] (текущий) – [Jail] andrei
Строка 6: Строка 6:
  
 Bruteforce ( перебор паролей) - это плохо и с ним надо бороться. Для решение этой задачи был разработан набор скриптов fail2ban. Из коробки он у меня отказался работать с pf, и не смог удовлетворить все мои потребности: в частности не хватало скриптов для блокировки подбора паролей в sendmail. Bruteforce ( перебор паролей) - это плохо и с ним надо бороться. Для решение этой задачи был разработан набор скриптов fail2ban. Из коробки он у меня отказался работать с pf, и не смог удовлетворить все мои потребности: в частности не хватало скриптов для блокировки подбора паролей в sendmail.
-===== Настройка ===== 
  
-jail.local: +===== Установка =====
-<code> +
-[DEFAULT] +
-banaction my-pf +
-action my-pf[table=bruteforce] +
-ignoreip 127.0.0.1 10.30.10.0/24 +
-bantime  7200 +
-findtime  259200+
  
-maxretry = 3+Для установки нам надо знать какая версия python, и выбрать подходящий пакет с fail2ban. В моем случает это py37-fail2ban. Устанавливаем его и включаем в rc.conf:
  
 +<code>
 +pkg install py37-fail2ban
 +service fail2ban enable
 +</code>
  
-[ssh] +===== Настройка =====
-enabled true +
-filter bsd-sshd +
-logpath /var/log/auth.log+
  
-[dovecot] +==== PF ====
-enabled true +
-filter dovecot+
  
-[sendmail] +В дистрибутиве идет очень мудреный конфиг для pf. Да и на FreeBSD 12.1 он у меня не запустился (вылетал с ошибкой при запуске fail2ban). Поэтому я написал свой простенький набор действий.
-enabled = true +
-filter = bsd-sendmail+
  
-[sendmail-auth] +Создаем файл /usr/local/etc/fail2ban/action.d/my-pf.local со следующим содержанием:
-enabled = true+
  
-[sendmail-reject] 
-enabled = true 
- 
-[sendmail-sasl] 
-enabled  = true 
-filter   = sendmail-sasl 
-action = my-pf[table=bruteforce] 
-port="submission,465,smtp", protocol=tcp] 
-logpath  = /var/log/maillog 
-</code> 
- 
-my-pf.conf: 
 <code> <code>
 [Definition] [Definition]
Строка 60: Строка 36:
 </code> </code>
  
-sendmail-sasl.conf:+Где: 
 +  * **actionban** команда для блокировки ip адреса; 
 +  * **actionunban** команда для разблокировки; 
 +  * **tablename** имя таблицы в конфиге pf. 
 + 
 +Осталось только настроиться сам pf. В файл /etc/pf.conf добавляем: 
 + 
 +<code> 
 +table <fail2ban> persist 
 + 
 +block return in quick from <fail2ban> 
 +</code> 
 + 
 +==== Sendmail ==== 
 + 
 +Так же в состав fail2ban не входят скрипты для блокировки буртефорса паролей в sendmail-е. Но это можно легко исправить. =) По умолчанию в лог /var/log/auth.log не записывается ip злоумышленника, а только сам факт ошибки авторизации. Но нужный нам адрес можно получить другим способом. Для этого необходимо добавить следующую директиву в конфиг sendmail-а: 
 + 
 +<code> 
 +define(`confLOG_LEVEL', `10')dnl 
 +</code> 
 + 
 +И пересобрать его: 
 + 
 +<code> 
 +cd /etc/mail 
 +make install 
 +service sendmail restart 
 +</code> 
 + 
 +Теперь в файле /var/log/maillog будут записываться примерно такие строчки: 
 + 
 +<code> 
 +Jun 17 17:58:14 gw3 sm-mta[37333]: 05HEve20037333: AUTH failure (LOGIN): authentication failure (-13) SASL(-13): authentication failure: checkpass failed, relay=[46.38.145.247] 
 +</code> 
 + 
 +Вот их мы и будем отслеживать. Для чего напишем наш собственный фильтр. Создаем файл /usr/local/etc/fail2ban/filter.d/sendmail-sasl.conf со слудующим содержанием: 
 <code> <code>
 # Fail2Ban filter for sendmail authentication failures # Fail2Ban filter for sendmail authentication failures
Строка 77: Строка 89:
 ignoreregex = ignoreregex =
 </code> </code>
 +==== Jail ====
 +
 +Переходим к настройки самого fail2ban. Создаем файл /usr/local/etc/fail2ban/jail.local:
  
-sendmail: 
 <code> <code>
-define(`confLOG_LEVEL', `10')dnl+[DEFAULT] 
 +banaction = my-pf 
 +ignoreip = 127.0.0.1 10.1.1.0/24 
 +bantime  = 2h 
 +findtime = 1h 
 + 
 +maxretry = 3 
 + 
 +[ssh] 
 +enabled = true 
 +filter = bsd-sshd 
 +logpath = /var/log/auth.log 
 + 
 +[dovecot] 
 +enabled = true 
 +filter = dovecot 
 + 
 +[sendmail] 
 +enabled = true 
 +filter = bsd-sendmail 
 + 
 +[sendmail-auth] 
 +enabled = true 
 + 
 +[sendmail-reject] 
 +enabled = true 
 + 
 +[sendmail-sasl] 
 +enabled  = true 
 +bantime  = 24h 
 +filter   = sendmail-sasl 
 +logpath  = /var/log/maillog
 </code> </code>
  
 +Где:
 +  * **banaction** подключение нашего конфиги для работы с pf;
 +  * **ignoreip** список адресов, которые не надо блокировать;
 +  * **bantime** на какое время блокировать ip;
 +  * **findtime** промежуток времени в который учитываются повторения.
 +
 +Поумолчанию я блокирую ip на 2 часа, но для нашего правила sendmail-sasl я делал исключение - в таблицу они попадают на сутки.
 +
 +===== Запуск и отладка =====
 +
 +Запускаем:
 +
 +<code>
 +service fail2ban start
 +</code>
 +
 +Проверить работу можно изучая лог файл /var/log/fail2ban.log. А так же припомощи специальной команды:
 +<code>
 +fail2ban-client status
 +fail2ban-client status ssh
 +</code> 
freebsd/network/fail2ban.1592404532.txt.gz · Последнее изменение: andrei