В операционной системе Ubuntu 18.04.4 LTS, 20.04.1 LTS Fail2ban ставиться очень просто, если вам нужна только защита SSH и вы используете для настройки фаервола iptables для начинающих: Простое управление брандмауэром с UFW.
$ sudo apt install fail2ban
И всё, ваш ssh демон -защищен!!!
Использование и установка Fail2ban Debian
- Установка в Debian# apt install fail2ban
- Параметры настройки, содержащиеся в .local-файлах, имеют преимущество над аналогичными параметрами, записанными в .conf-файлах. На практике это означает, что сначала считывается содержимое .conf-файлов, а затем содержимое .local-файлов, поэтому значения ранее определённых параметров могут быть заменены.cd /etc/fail2ban; cp -p fail2ban.conf fail2ban.local; cp -p jail.conf jail.local;
- jail.local
[DEFAULT]
# "ignoreip" can be an IP address, a CIDR mask or a DNS host
ignoreip = 127.0.0.1/8
# bantime в секундах, если указать отрицательное число (-1), то заблокирует навечно.
bantime = 600
maxretry = 3
# Адрес, на который слать уведомления о событиях
destemail = admin@example.org
# Имя пользователя от которого приходят сообщения, по умолчанию Fail2Ban
sendername = you name computer
# Какое из действий выполнить, например action_mw, action_mwl и др.
action = %(action_mwl)s
- рабочий jail.local для SSH, Pure-FTPd (syslog вместо auth.log)jail.local
[DEFAULT]
ignoreip = 127.0.0.1/8
#bantime = -1
bantime = 600
maxretry = 3
backend = auto
destemail = admin@example.org
# ACTIONS
banaction = iptables-multiport
#mta = sendmail
mta = mail
protocol = tcp
chain = INPUT
action = %(action_mwl)s
# JAILS
[ssh]
enabled = true
#mta = mail[name=ssh Atacced!!!]
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 6
[pure-ftpd]
enabled = true
#mta = mail[name=pure-ftpd Atacced!!!]
port = ftp,ftp-data,ftps,ftps-data
filter = pure-ftpd
#logpath = /var/log/auth.log
logpath = /var/log/syslog
maxretry = 6
- Можно вручную тестировать фильтры, например для Pure-FTPd быстрая установка и настройка в любом LinuxsyslogNov 19 15:56:17 cz5234 pure-ftpd: (?@10.26.10.251) [WARNING] Authentication failed for user [dark33] Nov 19 15:56:19 cz5234 pure-ftpd: (?@10.26.10.251) [WARNING] Authentication failed for user [dark33]
# fail2ban-regex /var/log/syslog /etc/fail2ban/filter.d/pure-ftpd.conf
[roundcube-auth]
enabled = true
filter = roundcube-auth-new
port = http,https
#logpath = /var/log/roundcube/userlogins
logpath = /var/log/roundcube/errors
- зменим регулярное выражениеroundcube-auth-new.conf
failregex = ^\s*(\[(\s[+-][0-9]{4})?\])?(: IMAP Error)?: (FAILED login|Login failed) for .*? from <HOST>(\. .* in .*?/rcube_imap\.php on line \d+ \(\S+ \S+\))?$
- Проверим правило
# fail2ban-regex /var/log/roundcube/errors /etc/fail2ban/filter.d/roundcube-auth-new.conf
Установка и использование Fail2ban RHEL/CentOS
По молчанию утилиты Fail2ban нет в стандартном репозитории. Fail2ban можно поставить например из EPEL repository используя YUM.
Инсталляция Fail2ba в CentOS
yum update yum install epel-release yum install fail2ban
По умолчанию, в CentOS fail2ban выключен, включаем и запускаем:
systemctl enable fail2ban systemctl start fail2ban
Создаем jail.local, в котором опишем наши настройки
cp -p jail.conf jail.local
Пример настройки Fail2ban и Nginx
Настроим Fail2ban nginx-limit-req для связки с Nginx. Предварительно вы должны настроить встроенный модуль ngx_http_limit_req_module. Добавим в jail.local
[nginx-limit-req] enabled = true filter = nginx-limit-req port = http,https logpath = /var/log/nginx/*error.log bantime = 600 maxretry = 5
Сам фильтр идет в комплекте с и находится в файле /etc/fail2ban/filter.d/nginx-limit-req.conf Проверяем на ошибки:
fail2ban-client status nginx-limit-req
Управление запрещенными IP и fail2ban-client
Управление запрещенными IP (manage bans IPs).
- Просмотр запрещенных IP в Руководство по iptables: Настройка и оптимизация фаервола Linux:iptables -L
- Для разблокирования конкретного IP, нужно узнать номер строки правила и потом удалить строку под этим номером с указанием имени Chain. Например, удалим 60 строку правила для цепи fail2ban-ssh:iptables -nvL –line-numbers iptables -D f2b-sshd 60
- Для просмотра состояния и заблокированных ip используйте встроенную утилиту fail2ban-client
fail2ban-client status sshd
Status for the jail: sshd |- Filter | |- Currently failed: 3 | |- Total failed: 18 | `- File list: /var/log/auth.log `- Actions |- Currently banned: 6 |- Total banned: 6 `- Banned IP list: 106.13.144.207 180.76.246.205 200.160.111.222 157.245.193.50 179.111.233.126 43.154.104.207
Bug Fail2ban 1970
Версия демона Fail2ban 0.8.6 присылает на почту уведомление с неправильной датой 1970-01-01 01:00. Варианты решения:
- Обновить Fail2ban
- Использовать в jail.local mta = mail вместо mta = sendmail
- Во всех конфигурационных файлах “/etc/fail2ban/action.d/sendmail*.conf ” заменить строчкуDate: `date -u +”%%a, %%d %%h %%Y %%T +0000″`наDate: `date –rfc-2822 -u`
Fail2ban просмотреть полный список заблокированных IP-адресов
Лучший способ просмотреть полный список заблокированных IP-адресов – проверить файл журнала:
sudo zgrep 'Ban' /var/log/fail2ban.log*
Второй способ, посмотреть чистый список правил iptables:
sudo iptables -L INPUT -v -n | less
Свежие комментарии