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

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


fail2ban

Различия

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

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

fail2ban [2020/03/21 11:00]
fail2ban [2020/06/13 13:45] (текущий)
Строка 1: Строка 1:
 +====== Fail2ban ======
 +{{htmlmetatags>
 +metatag-description=(Как защитить сервера VPS, VE при помощи программы Fail2ban. Fail2ban монитор системные логи на предмет автоматизированных атак на систему.)
 +}}
 +
 +
 +{{ ::fail2ban.png?nolink&400 |}}
 +
 +  * Homepage: [[http://www.fail2ban.org/|Fail2ban]]
 +
 +Основной задачей **Fail2ban** является обнаружение и блокирование отдельных IP-адресов, с которых производятся попытки несанкционированного проникновения в защищаемую систему. Такие "враждебные" IP-адреса определяются по результатам наблюдения за файлами журналов - log-файлами (например, /var/log/secure, /var/log/auth.log, /var/log/apache/access.log и т.д.). Если с какого-либо IP-адреса выполняется слишком много попыток зарегистрироваться в защищаемой системе или производятся какие-либо другие подозрительные действия, то хост с этим IP-адресом блокируется на некоторый интервал времени, определённый системным администратором, т.е. ни один пакет, посланный с такого заблокированного хоста, не будет принят. Такая блокировка выполняется посредством изменения правил (rules) сетевого экрана (iptables).
 +
 +Описанная выше функциональная схема позволяет защищаться от так называемых "brute force" атак, т.е. от многочисленных попыток войти в систему с различными вариантами паролей. Атаки такого рода достаточно часто практикуются сетевыми взломщиками.
 +
 +===== Использование и установка Fail2ban Debian  =====
 +
 +  * Установка в Debian<file bash>
 +# aptitude install fail2ban</file>
 +  * Параметры настройки, содержащиеся в .local-файлах, имеют преимущество над аналогичными параметрами, записанными в .conf-файлах. На практике это означает, что сначала считывается содержимое .conf-файлов, а затем содержимое .local-файлов, поэтому значения ранее определённых параметров могут быть заменены. <file bash>
 +cd /etc/fail2ban;
 +cp -p fail2ban.conf fail2ban.local;
 +cp -p jail.conf jail.local;
 +</file>
 +  * jail.local<file bash>
 +[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
 +</file>
 +  * рабочий jail.local для SSH, [[pure-ftpd?&#dontresolve|Pure-FTPd]](syslog вместо auth.log)<file bash 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
 +</file>
 +  * Можно вручную тестировать фильтры, например для [[Pure-FTPd]]<file bash syslog>
 +Nov 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]
 +</file><file bash>
 +# fail2ban-regex /var/log/syslog /etc/fail2ban/filter.d/pure-ftpd.conf
 +</file>
 +  * [[RoundCube]]<file>
 +[roundcube-auth]
 +
 +enabled  = true
 +filter   = roundcube-auth-new
 +port     = http,https
 +#logpath  = /var/log/roundcube/userlogins
 +logpath  = /var/log/roundcube/errors
 +</file>Изменим регулярное выражение<file perl 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+\))?$
 +
 +</file>Проверим правило<file>
 +# fail2ban-regex /var/log/roundcube/errors /etc/fail2ban/filter.d/roundcube-auth-new.conf
 +</file>
 +===== Установка и использование Fail2ban RHEL/CentOS =====
 +
 +По молчанию утилиты Fail2ban нет в стандартном репозитории. Fail2ban можно поставить например из EPEL repository используя [[yum?&#epel|YUM]].
 +
 +Инсталляция Fail2ba в CentOS<file>
 +# yum update
 +# yum install epel-release
 +# yum install fail2ban
 +</file>
 +
 +===== Управление запрещенными IP =====
 +Управление запрещенными IP (manage bans IPs).
 +  * Просмотр запрещенных IP в [[iptables]]:<file bash>
 +iptables -L
 +</file>
 +  * Для разблокирования конкретного IP, нужно узнать номер строки правила и потом удалить строку под этим номером с указанием имени Chain. Например, удалим 60 строку правила для цепи fail2ban-ssh:<file bash>
 +iptables -nvL --line-numbers
 +iptables -D fail2ban-ssh 60
 +</file>
 +===== 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 " заменить строчку<file python>
 +Date: `date -u +"%%a, %%d %%h %%Y %%T +0000"`
 +</file>на<file python>
 +Date: `date --rfc-2822 -u`
 +</file>