<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>http://wiki.putyato.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0_%D0%B8_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_Fail2ban_%D0%BD%D0%B0_CentOS</id>
	<title>Настройка и использование Fail2ban на CentOS - История изменений</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.putyato.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0_%D0%B8_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_Fail2ban_%D0%BD%D0%B0_CentOS"/>
	<link rel="alternate" type="text/html" href="http://wiki.putyato.ru/index.php?title=%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0_%D0%B8_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_Fail2ban_%D0%BD%D0%B0_CentOS&amp;action=history"/>
	<updated>2026-06-06T11:15:39Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.42.3</generator>
	<entry>
		<id>http://wiki.putyato.ru/index.php?title=%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0_%D0%B8_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_Fail2ban_%D0%BD%D0%B0_CentOS&amp;diff=22&amp;oldid=prev</id>
		<title>Admin: Новая страница: «=== Установка и запуск === Для систем на базе пакетов Debian или Red Hat команды будут немного отличаться.  &#039;&#039;&#039;а) CentOS / Red Hat:&#039;&#039;&#039; &lt;pre&gt; yum install epel-release, fail2ban -y &lt;/pre&gt;  &#039;&#039;&#039;б) Ubuntu / Debian:&#039;&#039;&#039; &lt;pre&gt; apt-get install fail2ban &lt;/pre&gt;  Для запуска службы вводим следующие команды: &lt;pre&gt; systemctl enable fail2ban systemctl start fail2ba...»</title>
		<link rel="alternate" type="text/html" href="http://wiki.putyato.ru/index.php?title=%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0_%D0%B8_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_Fail2ban_%D0%BD%D0%B0_CentOS&amp;diff=22&amp;oldid=prev"/>
		<updated>2024-10-10T10:41:12Z</updated>

		<summary type="html">&lt;p&gt;Новая страница: «=== Установка и запуск === Для систем на базе пакетов Debian или Red Hat команды будут немного отличаться.  &amp;#039;&amp;#039;&amp;#039;а) CentOS / Red Hat:&amp;#039;&amp;#039;&amp;#039; &amp;lt;pre&amp;gt; yum install epel-release, fail2ban -y &amp;lt;/pre&amp;gt;  &amp;#039;&amp;#039;&amp;#039;б) Ubuntu / Debian:&amp;#039;&amp;#039;&amp;#039; &amp;lt;pre&amp;gt; apt-get install fail2ban &amp;lt;/pre&amp;gt;  Для запуска службы вводим следующие команды: &amp;lt;pre&amp;gt; systemctl enable fail2ban systemctl start fail2ba...»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;=== Установка и запуск ===&lt;br /&gt;
Для систем на базе пакетов Debian или Red Hat команды будут немного отличаться.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;а) CentOS / Red Hat:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install epel-release, fail2ban -y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;б) Ubuntu / Debian:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get install fail2ban&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для запуска службы вводим следующие команды:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable fail2ban&lt;br /&gt;
systemctl start fail2ban&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Базовая настройка ===&lt;br /&gt;
Процесс настройки fail2ban не зависит от дистрибутива Linux. Основной конфигурационный файл находится по пути &amp;#039;&amp;#039;&amp;#039;/etc/fail2ban/jail.conf&amp;#039;&amp;#039;&amp;#039;. Однако, его не рекомендуется менять и для настройки используют подключаемые файлы из каталога &amp;#039;&amp;#039;&amp;#039;/etc/fail2ban/jail.d&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
Для начала создаем первый файл, в котором будут храниться настройки по умолчанию:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
nano /etc/fail2ban/jail.d/default.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Приведем его к виду. Настройка будет немного отличаться в зависимости от операционной системы.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;а) для CentOS / Red Hat:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[DEFAULT]&lt;br /&gt;
maxretry = 4&lt;br /&gt;
findtime = 480&lt;br /&gt;
bantime = 720&lt;br /&gt;
action = firewallcmd-ipset&lt;br /&gt;
ignoreip = 127.0.0.1/8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;б) для Ubuntu / Debian:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[DEFAULT]&lt;br /&gt;
maxretry = 4&lt;br /&gt;
findtime = 480&lt;br /&gt;
bantime = 720&lt;br /&gt;
action = iptables&lt;br /&gt;
ignoreip = 127.0.0.1/8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;* где:&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;maxretry&amp;#039;&amp;#039;&amp;#039; — количество действий, которые разрешено совершить до бана.&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;findtime&amp;#039;&amp;#039;&amp;#039; — время в секундах, в течение которого учитывается maxretry;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;bantime&amp;#039;&amp;#039;&amp;#039; — время, на которое будет блокироваться IP-адрес;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;action&amp;#039;&amp;#039;&amp;#039; — действия, которое будет выполняться, если Fail2ban обнаружит активность, соответствующую критериям поиска;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;ignoreip&amp;#039;&amp;#039;&amp;#039; — игнорировать защиту, если запросы приходят с перечисленных адресов.&amp;#039;&amp;#039;&lt;br /&gt;
&amp;#039;&amp;#039;* В данном примере, если в течение 8 минут (480) будет найдено 5 строк (maxretry = 4), содержащих критерий фильтра, Fail2ban заблокирует IP-адрес, с которого идет подключение на 12 минут (720);&amp;#039;&amp;#039;&lt;br /&gt;
&amp;#039;&amp;#039;* В секции [DEFAULT] хранятся общие настройки для всех правил. Каждую из настроек можно переопределить при конфигурировании самого правила.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Настройка правил ===&lt;br /&gt;
Для нового правила необходимо создать конфигурационный файл в каталоге &amp;#039;&amp;#039;&amp;#039;/etc/fail2ban/jail.d&amp;#039;&amp;#039;&amp;#039;, например:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
nano /etc/fail2ban/jail.d/service.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[ssh]&lt;br /&gt;
enabled = true&lt;br /&gt;
port = ssh&lt;br /&gt;
filter = sshd&lt;br /&gt;
action = iptables[name=sshd, port=ssh, protocol=tcp]&lt;br /&gt;
logpath = /var/log/auth.log&lt;br /&gt;
maxretry = 10&lt;br /&gt;
findtime = 600&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;* где:&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;ssh&amp;#039;&amp;#039;&amp;#039; — название для правила;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;enabled&amp;#039;&amp;#039;&amp;#039; позволяет быстро включать (true) или отключать (false) правило;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;port&amp;#039;&amp;#039;&amp;#039; — порт целевого сервиса. Принимается буквенное или цифирное обозначение;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;filter&amp;#039;&amp;#039;&amp;#039; — фильтр (критерий поиска), который будет использоваться для поиска подозрительных действий. По сути, это имя файла из каталога /etc/fail2ban/filter.d без .conf на конце;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;action&amp;#039;&amp;#039;&amp;#039; — действие, совершаемое в случае срабатывания правила. В квадратных скобках указаны название для правила, сетевой порт и протокол для блокирования;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;logpath&amp;#039;&amp;#039;&amp;#039; — расположение лог-файла, в котором фильтр будет искать подозрительную активность на основе описанных критериев.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;* обратите внимание, что мы переопределили параметры по умолчанию maxretry, findtime и action.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;В некоторых системах после установки fail2ban автоматически создается правило для SSH, поэтому нет необходимости его создавать. Получить список всех правил можно командами, описанными ниже.&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Чтобы изменения вступили в силу, перезапускаем сервис:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl restart fail2ban&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Исключения ===&lt;br /&gt;
Для гарантии, что fail2ban не заблокирут компьютер администратора или другой важный узел, предусмотрена настройка исключений с помощью опции ignoreip. Опция может быть применена как на глобальном уровне (default), так и для конкретного правила.&lt;br /&gt;
&lt;br /&gt;
Для того, чтобы задать общую настройку, откроем наш файл default:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
nano /etc/fail2ban/jail.d/default.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
... и добавим:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[DEFAULT]&lt;br /&gt;
...&lt;br /&gt;
ignoreip = 192.168.0.0/24 95.95.95.95&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;* в данном примере под фильтры не будут попадать адреса с &amp;#039;&amp;#039;&amp;#039;192.168.0.1&amp;#039;&amp;#039;&amp;#039; по &amp;#039;&amp;#039;&amp;#039;192.168.0.255&amp;#039;&amp;#039;&amp;#039; и адрес &amp;#039;&amp;#039;&amp;#039;95.95.95.95&amp;#039;&amp;#039;&amp;#039;.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Для конкретного правила настройки будут, примерно, следующие:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
nano /etc/fail2ban/jail.d/ssh.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[ssh]&lt;br /&gt;
...&lt;br /&gt;
ignoreip = 192.168.1.22&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* в данном примере мы добавили в белый список один адрес &amp;#039;&amp;#039;&amp;#039;192.168.1.22&amp;#039;&amp;#039;&amp;#039;, который не будет блокироваться.&lt;br /&gt;
&lt;br /&gt;
Обязательно перезагружаемся, чтобы настройки применились:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl restart fail2ban&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;* добавление адреса в белый список не удаляет его из блокировки. Поэтому, если IP попал в блок, нужно будет его удалить вручную.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Действия и фильтры ===&lt;br /&gt;
&lt;br /&gt;
==== Действия ====&lt;br /&gt;
Файлы с настройкой действий находятся в каталоге &amp;#039;&amp;#039;&amp;#039;/etc/fail2ban/action.d&amp;#039;&amp;#039;&amp;#039;. Чтобы блокировать адрес, Fail2ban создает правило в брандмауэре netfilter. Для этого, чаще всего, используются утилиты iptables или firewall-cmd. Последняя применяется в последних версиях CentOS / Red Hat / Fedora. iptables более универсальная и может использоваться, почти, во всех системах Linux.&lt;br /&gt;
&lt;br /&gt;
Остановимся на описании самых используемых действий:&lt;br /&gt;
&lt;br /&gt;
* iptables — создание простого правила в netfilter с помощью одноименной утилиты;&lt;br /&gt;
* iptables-multiport — использование модуля multiports, позволяющий добавлять диапазоны портов для блокировки;&lt;br /&gt;
* iptables-ipset — использование ipset для придания более лаконичного вида правилам;&lt;br /&gt;
* iptables-allports — блокирует для адреса все порты;&lt;br /&gt;
* firewallcmd-new — создание простого правила в netfilter с помощью firewall-cmd;&lt;br /&gt;
* firewallcmd-ipset — добавляет правила с помощью утилиты firewall-cmd, используя ipset;&lt;br /&gt;
* firewallcmd-rich-rules — создает rich-rules при помощи firewall-cmd.&lt;br /&gt;
&lt;br /&gt;
Подробнее, как создаются правила в netfilter при помощи iptables и firewalld.&lt;br /&gt;
&lt;br /&gt;
==== Фильтры ====&lt;br /&gt;
Фильтры, в основном, представляют набор регулярных выражений для поиска ключевых слов в log-файлах. Они находятся в каталоге &amp;#039;&amp;#039;&amp;#039;/etc/fail2ban/filter.d&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
Для создания и настройки своих фильтров, можно использовать имеющиеся файлы в качестве шпаргалки.&lt;br /&gt;
&lt;br /&gt;
=== Примеры правил ===&lt;br /&gt;
В данных примерах блокировка IP-адреса будет происходить на 12 минут после 4-х попыток ввода пароля в течение 8 минут. Эти параметры берутся из настроек [DEFAULT]. Если их нужно переопределить, просто добавляем их при описании правила.&lt;br /&gt;
&lt;br /&gt;
Обратите внимание, что данные правила подразумавают типичное использование итилит для работы с брандмауэром, а именно, для CentOS это firewalld, для Ubuntu — iptables. Однако, в вашей системе могут использоваться другие инструменты. Тогда необходимо это учитывать и правильно указывать значение для опции action.&lt;br /&gt;
&lt;br /&gt;
==== SSH ====&lt;br /&gt;
===== CentOS 7 (firewalld) =====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
nano /etc/fail2ban/jail.d/ssh.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[ssh]&lt;br /&gt;
enabled = true&lt;br /&gt;
port = ssh&lt;br /&gt;
filter = sshd&lt;br /&gt;
action = firewallcmd-new[name=sshd]&lt;br /&gt;
logpath = /var/log/secure&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== CentOS 8/9 (firewalld + systemd) =====&lt;br /&gt;
В более новых версиях Linux лог хранится не в файлах а базе systemd. Настройка будет такой:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[ssh]&lt;br /&gt;
enabled = true&lt;br /&gt;
port = ssh&lt;br /&gt;
filter = sshd&lt;br /&gt;
action = firewallcmd-new[name=sshd]&lt;br /&gt;
backend = systemd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Asterisk ====&lt;br /&gt;
а) для iptables:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
nano /etc/fail2ban/jail.d/asterisk.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[asterisk]&lt;br /&gt;
enabled = true&lt;br /&gt;
filter = asterisk&lt;br /&gt;
action = iptables-allports[name=asterisk, protocol=all]&lt;br /&gt;
logpath = /var/log/asterisk/messages&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
б) для firewalld:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
nano /etc/fail2ban/jail.d/asterisk.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[asterisk]&lt;br /&gt;
enabled = true&lt;br /&gt;
filter = asterisk&lt;br /&gt;
action = firewallcmd-new[name=asterisk, protocol=all]&lt;br /&gt;
logpath = /var/log/asterisk/messages&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;* обратите внимание, что меняется только значение для &amp;#039;&amp;#039;&amp;#039;action&amp;#039;&amp;#039;&amp;#039;.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
==== NGINX ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
nano /etc/fail2ban/jail.d/nginx.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[nginx]&lt;br /&gt;
enabled = true&lt;br /&gt;
port = http,https&lt;br /&gt;
filter = nginx-http-auth&lt;br /&gt;
action = iptables-multiport[name=nginx, port=&amp;quot;http,https&amp;quot;, protocol=tcp]&lt;br /&gt;
logpath = /var/log/nginx/error.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== NGINX DDoS (req limit) ====&lt;br /&gt;
Данное правило поможет защитить веб-сервер nginx от DDoS-атак. В некоторых сборках, для данного правило может не оказаться готового фильтра, поэтому в данном примере, мы его создадим вручную.&lt;br /&gt;
&lt;br /&gt;
Для начала, необходимо настроить NGINX:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
nano /etc/nginx/nginx.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
В раздел http добавим:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
http {&lt;br /&gt;
    ...&lt;br /&gt;
    limit_req_zone $binary_remote_addr zone=one:10m rate=25r/s;&lt;br /&gt;
    ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;* данная настройка создает зону с интенсивностью 25 запросов в секунду.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
После настраиваем лимит для конкретного виртуального домена в разделе &amp;#039;&amp;#039;&amp;#039;server - location&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
server {&lt;br /&gt;
    ...&lt;br /&gt;
    location / {&lt;br /&gt;
        ...&lt;br /&gt;
        limit_req zone=one burst=50 nodelay;&lt;br /&gt;
        ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* данная настройка вместе с предыдущей зоной, созданной в секции &amp;#039;&amp;#039;&amp;#039;http&amp;#039;&amp;#039;&amp;#039;, позволит задать лимит — 25 запросов в секунду при всплеске 50 запросов.&lt;br /&gt;
&lt;br /&gt;
Проверяем конфигурационный файл nginx и перезапускаем сервис:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
nginx -t&lt;br /&gt;
systemctl reload nginx&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
В лог-файле (по умолчанию /var/log/nginx/error.log) при превышении лимита подключения мы должны увидеть запись на подобие:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2020/11/16 19:11:08 [error] 1330844#1330844: *16640836 limiting requests, excess: 10.520 by zone &amp;quot;one&amp;quot;, client: xxx.xxx.xxx.xxx, server: putyato.ru, request: &amp;quot;GET / HTTP/1.1&amp;quot;, host: &amp;quot;putyato.ru&amp;quot;, referrer: &amp;quot;https://putyato.ru/page1&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;* обратите внимание, что в вашем случае путь до лога может быть другой. Он определяется в конфигурационном файле NGINX.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Теперь можно приступать к настройке fail2ban. Создаем фильтр:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
nano /etc/fail2ban/filter.d/nginx-limit-req.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Definition]&lt;br /&gt;
ngx_limit_req_zones = [^&amp;quot;]+&lt;br /&gt;
failregex = ^\s*\[error\] \d+#\d+: \*\d+ limiting requests, excess: [\d\.]+ by zone &amp;quot;(?:%(ngx_limit_req_zones)s)&amp;quot;, client: &amp;lt;HOST&amp;gt;&lt;br /&gt;
ignoreregex =&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;* данный файл может быть уже создан и настроен при установке fail2ban. Если это так, то ничего не меняем и идем дальше.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Создаем правило в fail2ban:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
nano /etc/fail2ban/jail.d/nginx-ddos.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[nginx-ddos]&lt;br /&gt;
enabled = true&lt;br /&gt;
port = http,https&lt;br /&gt;
filter = nginx-limit-req&lt;br /&gt;
action = iptables-multiport[name=nginxddos, port=&amp;quot;http,https&amp;quot;, protocol=tcp]&lt;br /&gt;
logpath = /var/log/nginx/error.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;* еще раз обращаю внимание на путь &amp;#039;&amp;#039;&amp;#039;logpath&amp;#039;&amp;#039;&amp;#039; — в вашем случае он может быть другим.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
После настройки не забываем перезапустить fail2ban:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl restart fail2ban&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Работа со списком заблокированных адресов ===&lt;br /&gt;
==== Просмотр ====&lt;br /&gt;
1. Получить список правил можно командой:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fail2ban-client status&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Получить статистику заблокированных адресов для конкретного правила можно следующей командой:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fail2ban-client status &amp;lt;имя правила&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
При наличие заблокированных IP-адресов мы увидим, примерно, следующее:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
`- action&lt;br /&gt;
   |- Currently banned: 2&lt;br /&gt;
   |  `- IP list:       31.207.47.55 10.212.245.29&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
2. Вышеописанный вариант не покажет полный список адресов, если их много. Для этого есть команда:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fail2ban-client banned&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Она покажет все заблокированные адреса во всех правилах.&lt;br /&gt;
&lt;br /&gt;
3. С помощью утилит управления брандмауэром.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;а) iptables:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
iptables -L -n --line&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;б) firewall-cmd:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
firewall-cmd --direct --get-all-rules&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Удаление ====&lt;br /&gt;
===== Средствами fail2ban: =====&lt;br /&gt;
&lt;br /&gt;
Для удаление адреса из списка вводим:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fail2ban-client set &amp;lt;имя правила&amp;gt; unbanip &amp;lt;IP-адрес&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
например:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fail2ban-client set ssh unbanip 31.207.47.55&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
===== С помощью iptables: =====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
iptables -D &amp;lt;цепочка правил&amp;gt; -s IP-адрес&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
например:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
iptables -D fail2ban-ssh -s 10.212.245.27&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
===== С помощью firewall-cmd: =====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
firewall-cmd --direct --permanent --remove-rule &amp;lt;правило&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
например:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
firewall-cmd --direct --permanent --remove-rule ipv4 filter f2b-sshd 0 -s 188.134.7.224&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
После необходимо перечитать правила:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
firewall-cmd --reload&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;Failed during configuration have not found any log file for sshd jail&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Начиная с Ubuntu версии 22.04 после установки fail2ban, служба не запускается, а в логе мы можем увидеть ошибку:&lt;br /&gt;
=== Возможные ошибки ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Failed during configuration have not found any log file for sshd jail&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Причина: fail2ban не может найти файл с логами для ssh. Это связано с тем, что в новой версии эти логи попадают не в классический файл /var/log/auth.log, а в журнал systemd, для просмотра которого используется утилита journalctl.&lt;br /&gt;
&lt;br /&gt;
Решение: для настройки ssh нам нужно поменять значение опции backend.&lt;br /&gt;
&lt;br /&gt;
Для этого открываем файл:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
nano /etc/fail2ban/jail.d/defaults-debian.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
В нем должна быть запись для [sshd]. Добавляем строку:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
backend = systemd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Запускаем fail2ban:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl start fail2ban&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
</feed>