Как установить и настроить fail2ban на centos 8

Введение

В интернете постоянно пасутся стада ботов, проверяющие доступ к тем или иным сервисам. Чаще всего это боты очень простые, они просто подбирают по словарю доступ к ресурсам. Иногда они используют известные уязвимости. Так как wordpress самый популярный движок для сайта, пробовать его на прочность будут регулярно. Если у вас постоянно обновляется версия и уникальный пароль, которого нет в словарях, то вам скорее всего беспокоиться не о чем. Fail2ban какой-то уникальной защиты не предоставляет.

Лично я предпочитаю обезопасить себя на всякий случай и закрыть доступ к админке wordpress от слишком назойливых глаз. Будем анализировать лог web сервера и банить всех тех, кто более 3-х раз ввел неверный пароль на доступ к внутренностям сайта.

Я буду показывать настройку fail2ban на примере CentOS 7, но версия ОС тут не имеет принципиального значения. Все настройки самого сервиса подойдут и для других систем.

How to Configure Fail2Ban?

Fail2Ban configuration files are located inside the /etc/fail2ban directory. You can check them with the following command:

$ sudo ls -l /etc/fail2ban/

You should see the following output:

drwxr-xr-x 2 root root    65 Jun  4  2020 action.d
-rw-r--r-- 1 root root  2817 Jan 11  2020 fail2ban.conf
drwxr-xr-x 2 root root     2 Mar  2  2020 fail2ban.d
drwxr-xr-x 3 root root    90 Jun  4  2020 filter.d
-rw-r--r-- 1 root root 25740 Jan 11  2020 jail.conf
drwxr-xr-x 2 root root     4 Jun  4  2020 jail.d
-rw-r--r-- 1 root root   645 Jan 11  2020 paths-arch.conf
-rw-r--r-- 1 root root  2827 Jan 11  2020 paths-common.conf
-rw-r--r-- 1 root root   573 Jan 11  2020 paths-debian.conf
-rw-r--r-- 1 root root   738 Jan 11  2020 paths-opensuse.conf

Where the jail.conf is the main configuration file with all available options. The jail.conf contains jail configuration for many services like, HTTP, FTP, SSH, Squid, Monit, Horde, Drupal and more. You just need to add «enabled = true» below each jail configuration section to enable the specific jail.

A brief explanation of the most commonly used configuration options is shown below:

  • port: Define the service name or service port.
  • logpath: Define the name of the log file fail2ban checks for.
  • bantime: Define the number of seconds a host will be blocked by fail2ban.
  • maxretry: Define the maximum number of failed login attempts a host is allowed before it is banned.
  • ignoreip: Define the IP addresses that fail2ban will ignore.

It is recommended to configure a Fail2Ban by creating a new configuration file named after the specific service /etc/fail2ban/jail.d/ directory instead of editing the existing jail.conf file.

Fail2ban тюрьмы

Fail2ban использует концепцию тюрем. Тюрьма описывает службу и включает фильтры и действия. Записи журнала, соответствующие шаблону поиска, подсчитываются, и при выполнении заранее определенного условия выполняются соответствующие действия.

Fail2ban поставляется с несколькими тюрьмами для различных сервисов. Вы также можете создавать свои собственные конфигурации тюрьмы.

По умолчанию в CentOS 8 тюрьмы не включены. Чтобы включить тюрьму, вам нужно добавить после заголовка тюрьмы. В следующем примере показано, как включить тюрьму :

/etc/fail2ban/jail.local

Параметры, которые мы обсуждали в предыдущем разделе, могут быть установлены для каждой тюрьмы. Вот пример:

/etc/fail2ban/jail.local

Фильтры расположены в каталоге , хранящемся в файле с тем же именем, что и тюрьма. Если у вас есть индивидуальная настройка и опыт работы с регулярными выражениями, вы можете точно настроить фильтры.

Каждый раз при изменении файла конфигурации необходимо перезапускать службу Fail2ban, чтобы изменения вступили в силу:

Настройка

Процесс настройки fail2ban не зависит от дистрибутива Linux.

Основной конфигурационный файл находится в каталоге . Однако, его не рекомендуется менять и для настройки используют подключаемые файлы из каталога .

Существующие фильтры лежат в директории . Можно изменять существующие фильтры или на их основе делать собственные.

Существующие правила реагирования хранятся в директории .

Как правило, все стандартные файлы содержат подробные комментарии.

Действия

Файлы с настройкой действий находятся в каталоге .

Остановимся на описании самых используемых действий:

  • iptables — создание простого правила в netfilter с помощью одноименной утилиты;
  • iptables-multiport — использование модуля multiports, позволяющий добавлять диапазоны портов для блокировки;
  • iptables-ipset — использование ipset для придания более лаконичного вида правилам;
  • iptables-allports — блокирует для адреса все порты.

Фильтры

Фильтры, в основном, представляют набор регулярных выражений для поиска ключевых слов в log-файлах. Они находятся в каталоге .

Для создания и настройки своих фильтров, можно использовать имеющиеся файлы в качестве шаблона.

Файлы с фильтрами должны иметь расширение . В дальнейшем использовать указанный фильтр можно, обратившись к нему в правиле по имени файла без расширения.

Например, чтобы использовать фильтр в правиле надо указать:

filter = my

Указание параметров на примере

Для нового правила необходимо создать конфигурационный файл в каталоге /etc/fail2ban/jail.d:

$ vi /etc/fail2ban/jail.d/service.conf
enabled = true
port = ssh
filter = sshd
action = iptables
logpath = /var/log/auth.log
maxretry = 10
findtime = 600
ignoreip = 127.0.0.1/8

Разберем параметры:

  • ssh — название для правила.
  • enabled позволяет быстро включать (true) или отключать (false) правило;
  • port — порт целевого сервиса. Принимается буквенное или цифирное обозначение.
  • filter — фильтр (критерий поиска), который будет использоваться для поиска подозрительных действий. По сути, это имя файла из каталога без на конце.
  • action — действие, совершаемое в случае срабатывания правила. В квадратных скобках указаны название для правила, сетевой порт и протокол для блокирования.
  • logpath — расположение лог-файла, в котором фильтр будет искать подозрительную активность на основе описанных критериев.
  • maxretry — количество действий, которые разрешено совершить до блокировки.
  • findtime — время в секундах, в течение которого учитывается maxretry.
  • bantime — время, на которое будет блокироваться IP-адрес.
  • ignoreip — игнорировать защиту, если запросы приходят с перечисленных адресов.

Если какой-то из параметров не указан в конкретном правиле, для него берется значение по умолчанию, описанное в правиле DEFAULT.

Примечание: Для применения новые правил необходимо перезапустить fail2ban одной из следующих команд:

$ systemctl restart fail2ban

или

$ service fail2ban restart

How to Check the Status of Jail

You can list all the activated Fail2Ban jail by running the following command:

$ sudo fail2ban-client status

You should get all activated jail in the following output:

Status
|- Number of jail:	6
`- Jail list:	proftpd, pure-ftpd, ssh, sshd, webmin-auth, wordpress

If you want to check the banning status of specific Fail2Ban jail (SSH), run the following command:

$ sudo fail2ban-client status ssh

You should see all IPs banned by Fail2Ban in the following output:

Status for the jail: ssh
|- Filter
|  |- Currently failed:	1
|  |- Total failed:	14
|  `- File list:	/var/log/auth.log
`- Actions
   |- Currently banned:	3
   |- Total banned:	3
   `- Banned IP list:	209.208.62.183 221.181.185.19 222.186.30.112

You can also check the Fail2Ban log for the banned IPs:

$ sudo tail -f /var/log/fail2ban.log

Output:

2021-05-24 12:32:53,084 fail2ban.filter         : INFO     Found 222.186.30.112 - 2021-05-24 12:32:53
2021-05-24 12:32:53,085 fail2ban.filter         : INFO     Found 222.186.30.112 - 2021-05-24 12:32:53
2021-05-24 12:32:53,117 fail2ban.actions        : NOTICE   Ban 222.186.30.112

If you want to block any remote IP address manually for SSH service, run the following command:

$ sudo fail2ban-client set sshd banip remote-ip-address

You can also check the Iptables rules added by Fail2Ban with the following command:

$ sudo iptables -nL

Output:

Chain f2b-ssh (1 references)
target     prot opt source               destination         
REJECT     all  --  222.186.30.112       0.0.0.0/0            reject-with icmp-port-unreachable
REJECT     all  --  221.181.185.19       0.0.0.0/0            reject-with icmp-port-unreachable
REJECT     all  --  209.208.62.183       0.0.0.0/0            reject-with icmp-port-unreachable
RETURN     all  --  0.0.0.0/0            0.0.0.0/0           
Chain f2b-sshd (1 references)
target     prot opt source               destination         
REJECT     all  --  222.186.42.7         0.0.0.0/0            reject-with icmp-port-unreachable
RETURN     all  --  0.0.0.0/0            0.0.0.0/0           

Настройка

Рекомендуется создать файл , так как может быть перезаписан во время обновления системы. К примеру, задать время блокировки в 1 день можно следующим образом:

/etc/fail2ban/jail.local
bantime = 1d

Также можно создавать отдельные файлы name.local в каталоге , например, .

Перезапустите службу для применения изменений.

Включение «клеток»

По умолчанию все «клетки» отключены. Добавьте строку к конфигурации той «клетки», которую необходимо включить. Например, включение «клетки» OpenSSH выглядит следующим образом:

/etc/fail2ban/jail.local
enabled = true

См. .

Почтовые уведомления

Для получения электронных писем при блокировке IP-адресов следует настроить SMTP-клиент (например, msmtp (англ.)) и изменить действие по умолчанию:

/etc/fail2ban/jail.local
destemail = вашеимя@example.com
sender = вашеимя@example.com

# для блокировки и отправки электронного письма на destemail с whois-отчётом
action = %(action_mw)s

# то же, что и action_mw, но включает в себя ещё и связанные строки из лога
#action = %(action_mwl)s

Межсетевой экран и службы

По умолчанию Fail2ban использует iptables. Однако, настройка большинства и служб не представляет трудности. Пример использования nftables:

/etc/fail2ban/jail.local
banaction = nftables
banaction_allports = nftables

Usage

Definitions

Before we begin, it is important to clarify some terms used in the following sections.

filter a filter defines a regular expression which must match a pattern corresponding to a log-in failure or any other expression
action an action defines several commands which are executed at different moments
jail a jail is a combination of one filter and one or several actions. Fail2ban can handle several jails at the same time
client refers to the script fail2ban-client
server refers to the script fail2ban-server

Server

Fail2ban is composed of 2 parts: a client and a server. The server is multi-threaded and listens on a Unix socket for commands. The server itself knows nothing about the configuration files. Thus, at start-up, the server is in a «default» state in which no jails are defined. The following options are available for fail2ban-server:

-b                   start in background
-f                   start in foreground
-s <FILE>            socket path
-x                   force execution of the server
-h, --help           display this help message
-V, --version        print the version

fail2ban-server should not be used directly except in case of debugging. The option -s <FILE> is probably the most important one and is used to set the socket path. Thus, it is possible to run several instances of Fail2ban on different sockets. However, this should be not required because Fail2ban can run several jails concurrently.

If fail2ban-server crashes (does it?), it is possible that the socket file has not been removed correctly. The -x option tells the server to delete the socket file before start-up. If the socket file of a running server is removed, it is not possible to communicate with this server anymore.

The server handles the signals SIGTERM and SIGINT. When receiving one of these signals, fail2ban-server will quit nicely.

Client

fail2ban-client is the frontend of Fail2ban. It connects to the server socket file and sends commands in order to configure and operate the server. The client can read the configuration files or can simply be used to send a single command to the server using either the command line or the interactive mode (which is activated with the -i option). fail2ban-client can also start the server. The following options are available for fail2ban-client:

-c <DIR>                configuration directory
-s <FILE>               socket path
-d                      dump configuration. For debugging
-i                      interactive mode
-v                      increase verbosity
-q                      decrease verbosity
-x                      force execution of the server
-h, --help              display this help message
-V, --version           print the version

As for fail2ban-server, the option -s <FILE> can be used to set the socket path. Notice that this command line option overrides the socket option set in fail2ban.conf. The default configuration directory is /etc/fail2ban but can be override with the -c <DIR> option. The -x option is simply forwarded to fail2ban-server when starting the server.

A useful option for debugging is -d. This prints the configuration parsed by fail2ban-client. The output corresponds to the stream sent to the server. If the output of -d shows:

It is possible to achieve the same with:

$ fail2ban-client set loglevel 1
$ fail2ban-client set logtarget STDERR

Everything set in the configuration files can be configured manually. The configuration is just a simple and efficient way to configure the server. fail2ban-client only translates the configuration into a suite of commands. However, fail2ban-client has 2 more commands for its internal use. The first one is start. When typing:

$ fail2ban-client start

the client will first try to fork a server instance. The client then waits for the server to start-up by sending ping requests to it. Once the server responds to these requests, fail2ban-client parses the configuration and sends the corresponding commands to the server. The second one is reload. When typing:

$ fail2ban-client reload

the client will tell the server to stop all jails, parses the configuration files again and send the commands to the server. This is useful when a new configuration must be loaded without shutting down the server. This is also very useful when debugging the server. It is possible to start the server with fail2ban-server -f in one terminal and to load the configuration by typing fail2ban-client reload in an other one. Thus, client and server output will not be mixed up.

Any other commands are simply sent to the server without any specific treatment. However, most of the time, only the 2 above commands and stop will be used.

There is probably one last useful command: status . Without a jail name, the global status of the server is returned. If jail corresponds to an existing jail, the status of this jail is displayed.

A list with all commands is available here.

Настройки

Данная вкладка предназначена для настройки работы Fail2ban.

Флаги «Защитить почтовый сервер», «Защитить веб-почту», «Защитить сервер телефонии», «Защитить VPN-сервер», «SSH», «FTP», «GUI» позволяют Fail2ban анализировать логи авторизации в соответствующих модулях.

В поле «Количество неудачных попыток авторизаций» можно задать количество неудачных попыток авторизации в одном из модулей, отмеченных флагом. После этого IP-адресу будет полностью заблокирован доступ к ИКС. По умолчанию установлено 3 попытки.

В поле «Интервал неудачных попыток авторизаций» задается время, в течение которого в каждом модуле подсчитывается количество неудачных попыток авторизации (в минутах). По умолчанию установлен интервал 10 минут.

Поле «Блокировать на» предназначено для установки времени, в течение которого будет действовать блокировка IP-адреса (в минутах). По умолчанию установлено значение 10 минут.

Флаг «Увеличивать время бана» позволяет включить дополнительные настройки Fail2ban для увеличения времени бана:

  • Прибавить к времени бана случайное время из диапазона от 0 до — параметр выберет случайное значение и прибавит к стандартному времени бана (в минутах);
  • «Фактор роста» — дополнительный глобальный коэффициент, на который будут умножаться все множители из списка. Увеличение фактора роста удобно использовать, когда вы хотите значительно увеличить время бана. В таком случае не потребуется переписывать список множителей;
  • «Список множителей» — список, по которому будет происходить рост времени бана. Порядковый номер множителя будет соответствовать количеству раз, когда IP-адрес попал в дополнительный бан;
  • флаг «Не разделять попытки авторизации по службам».

Пример

  • первый бан = (время бана + случайное время) * первый множитель * фактор роста;
  • второй бан = (время бана + случайное время) * второй множитель * фактор роста и т. д.;
  • по достижении IP-адреса последнего множителя и далее время бана будет считаться по последнему множителю.

Внимание! IP-адреса, попадающие в бан, считаются плохими. На них будет срабатывать увеличение времени бана, пока не пройдет трехкратный промежуток времени последнего бана либо пока они не будут разбанены вручную

Если авторизация на FTP идет через браузер, то количество попыток авторизации, указанное в поле «Количество неудачных попыток авторизаций», будет в два раза меньше, так как браузер пытается первоначально авторизоваться под учетной записью Anonymous.

На данной вкладке также можно сформировать белый список для Fail2ban. Нажмите кнопку «Белый список» и в открывшемся окне задайте соответствие IP-адреса/подсети/диапазона (192.168.1.1, либо 192.168.1.1/28, либо 192.168.1.1-192.168.1.3) и сервиса (всех сервисов), для которых Fail2ban не будет срабатывать. Нажмите «Сохранить».

Внимание! Если Fail2ban заблокирует IP-адрес по одному из сервисов, то доступ с IP-адреса к другим сервисам также будет заблокирован, в том числе к сервисам, добавленным в белый список. Чтобы изменения настроек вступили в силу, нажмите «Сохранить»

Чтобы изменения настроек вступили в силу, нажмите «Сохранить».

Что такое fail2ban и зачем он нужен для asterisk?

О том, что такое fail2ban, Вы можете прочитать в разделе безопасность Linux. Рассмотрим, зачем fail2ban нужен для защиты asterisk.

Как Вам известно, asterisk является приложением (сервером) для IP-телефонии. То есть позволяет подключившимся к нему клиентам звонить друг другу и во внешний мир, используя (помимо всего прочего) линии телефонной связи. При этом возникают следующие риски:

  1. клиенты идентифицируются по логину/паролю, а также (как правило) по IP адресу. При этом существует возможность подобрать пароль (раньше или позже, в зависимости от его сложности, но в любом случае это возможно), причем крайне часто ограничения по IP адресам далеко не такие жесткие, как хотелось бы (в идеале для каждого клиента должен быть свой уникальный IP адрес)
  2. входящие звонки из интернета (например, с других серверов asterisk). С этими подключениями все сложнее, поскольку asterisk (в базовой конфигурации) не предусматривает отображение IP адресов, с которых производится подключение.

Программа fail2ban в связке с брандмауэром (например, iptables) и правильно настроенным asterisk (отображающим в логах полную информацию, в том числе IP адреса клиентов и других серверов) позволяет эффективно заблокировать попытки подключения и подбора пароля.

Перед началом настройки Вам необходимо установить iptables и fail2ban. Кроме того, iptables должен быть уже настроен (и разрешать подключения к asterisk) до начала настройки fail2ban! Прочитать, как настроить iptables можно здесь: настройка iptables для работы asterisk. Вы также можете установить fail2ban до установки самого asterisk, и в этом случае (по крайней мере, теоретически) в процессе установки последние версии asterisk обнаруживают установленный fail2ban и настраивают его автоматически. Однако:

  1. Не всегда вопрос безопасности IP-телефонии рассматривается до установки asterisk. То есть скорее всего, Вы захотите установить fail2ban на систему с уже установленным (и настроенным) астериском.
  2. Не во всех случаях автоматическое конфигурирование срабатывает вообще, не говоря уже о том, чтобы оно сработало правильно (и начало блокировать все атаки на asterisk).

Использование

Fail2ban, после чего включите и запустите службу .

fail2ban-client

Утилита fail2ban-client позволяет следить за «клетками» (jails) (reload, restart, status и т.д.). Чтобы увидеть список всех доступных команд, введите:

$ fail2ban-client

Просмотр включённых «клеток» (jails):

# fail2ban-client status

Проверка статуса «клетки» на примере таковой для sshd:

# fail2ban-client status sshd
Status for the jail: sshd
|- Filter
|  |- Currently failed: 1
|  |- Total failed:     9
|  `- Journal matches:  _SYSTEMD_UNIT=sshd.service + _COMM=sshd
`- Actions
   |- Currently banned: 1
   |- Total banned:     1
   `- Banned IP list:   0.0.0.0

Настройка правил фильтрации

Теперь нам необходимо создать фильтр, который будет извлекать из общего потока сообщений астериска потенциально опасные события (неверный логин/пароль, попытка входа с неразрешенного IP адреса, и т.д. и т.п.). При этом нам необходимо не только обнаруживать такие потенциально опасные события, но и вычленять оттуда IP адрес, с которого было выполнено действие. То есть мы не просто ищем определенные строки в файлах событий астериска, а настраиваем правила фильтрации.
Правила фильтрации можно прописать в файле /etc/fail2ban/filter.d/asterisk.conf. Вот образец содержимого этого файла:

# Fail2Ban configuration file
#
#
# $Revision: 250 $
#



# Read common prefixes. If any customizations available -- read them from
# common.local
#before = common.conf




#_daemon = asterisk

# Option:  failregex
# Notes.:  regex to match the password failures messages in the logfile. The
#          host must be matched by a group named "host". The tag "" can
#          be used for standard IP/hostname matching and is only an alias for
#          (?:::f{4,6}:)?(?P\S+)
# Values:  TEXT
#

# Asterisk 1.8 uses Host:Port format which is reflected here

failregex = NOTICE.* .*: Registration from '.*' failed for ':.*' - Wrong password
            NOTICE.* .*: Registration from '.*' failed for ':.*' - No matching peer found
            NOTICE.* .*: Registration from '.*' failed for ':.*' - Username/auth name mismatch
            NOTICE.* .*: Registration from '.*' failed for ':.*' - Device does not match ACL
            NOTICE.* .*: Registration from '.*' failed for ':.*' - Not a local domain
            NOTICE.* .*: Registration from '.*' failed for ':.*' - Peer is not supposed to register
            NOTICE.* .*: Registration from '.*' failed for ':.*' - ACL error (permit/deny)
            NOTICE.* .*: Registration from '.*' failed for '' - Wrong password
            NOTICE.* .*: Registration from '.*' failed for '' - No matching peer found
            NOTICE.* .*: Registration from '.*' failed for '' - Username/auth name mismatch
            NOTICE.* .*: Registration from '.*' failed for '' - Device does not match ACL
            NOTICE.* .*: Registration from '.*' failed for '' - Not a local domain
            NOTICE.* .*: Registration from '.*' failed for '' - Peer is not supposed to register
            NOTICE.* .*: Registration from '.*' failed for '' - ACL error (permit/deny)
            NOTICE.* .*: Registration from '\".*\".*' failed for ':.*' - No matching peer found
            NOTICE.* .*: Registration from '\".*\".*' failed for ':.*' - Wrong password
            NOTICE.* .*: No registration for peer '.*' \(from \)
            NOTICE.* .*: Host  failed MD5 authentication for '.*' (.*)
            NOTICE.* .*: Failed to authenticate user .*@.*
            NOTICE.*  failed to authenticate as '.*'$
            NOTICE.* .*: Sending fake auth rejection for device .*\<sip:.*\@\>;tag=.*
            NOTICE.* .*:  tried  to authenticate with nonexistent user '.*'
            VERBOSE.*SIP/-.*Received incoming SIP connection from unknown peer

# Option:  ignoreregex
# Notes.:  regex to ignore. If this regex matches, the line is ignored.
# Values:  TEXT
#
ignoreregex =

В asterisk версии 1.4 и более ранних используются строки типа “… failed for ‘<HOST>’ …”, а в asterisk 1.8 и выше – строки “… failed for ‘<HOST>:.*’ …”, поскольку начиная с версии asterisk 1.8 в логах появилась информация о номере порта, которой нет в asterisk 1.4. Приведенный выше вариант учитывает как старые, так и новые версии asterisk, так что Вам нет необходимости в нем что-либо менять.

Для asterisk версии 10 и выше, если Вы включили ведение логов security, не забудьте прописать правила фильтрации для этих логов!

Правила фильтрации можно прописать в файле /etc/fail2ban/filter.d/asterisk-security.conf. Вот образец содержимого этого файла:

# Fail2Ban configuration file
#
#
# $Revision: 250 $
#



# Read common prefixes. If any customizations available -- read them from
# common.local
#before = common.conf




#_daemon = asterisk

# Option:  failregex
# Notes.:  regex to match the password failures messages in the logfile. The
#          host must be matched by a group named "host". The tag "" can
#          be used for standard IP/hostname matching and is only an alias for
#          (?:::f{4,6}:)?(?P\S+)
# Values:  TEXT
#

failregex = SECURITY.* SecurityEvent="FailedACL".*RemoteAddress=".+?/.+?//.+?".*
            SECURITY.* SecurityEvent="InvalidAccountID".*RemoteAddress=".+?/.+?//.+?".*
            SECURITY.* SecurityEvent="ChallengeResponseFailed".*RemoteAddress=".+?/.+?//.+?".*
            SECURITY.* SecurityEvent="InvalidPassword".*RemoteAddress=".+?/.+?//.+?".*

# Option:  ignoreregex
# Notes.:  regex to ignore. If this regex matches, the line is ignored.
# Values:  TEXT
#
ignoreregex =

Работа со списком заблокированных адресов

Просмотр

Получить статистику заблокированных адресов можно следующей командой:

fail2ban-client status <имя правила>

Получить список правил можно командой:

fail2ban-client status

При наличие заблокированных IP-адресов мы увидим, примерно, следующее:

`- action
   |- Currently banned: 2
   |  `- IP list:       31.207.47.55 10.212.245.29

С помощью iptables:

iptables -L -n —line

С помощью firewall-cmd:

firewall-cmd —direct —get-all-rules

Удаление

Средствами fail2ban:

Для удаление адреса из списка вводим:

fail2ban-client set <имя правила> unbanip <IP-адрес>

например:

fail2ban-client set ssh unbanip 31.207.47.55

С помощью iptables:

iptables -D <цепочка правил> -s IP-адрес

например:

iptables -D fail2ban-ssh -s 10.212.245.29

С помощью firewall-cmd:

firewall-cmd —direct —permanent —remove-rule <правило>

например:

firewall-cmd —direct —permanent —remove-rule ipv4 filter f2b-sshd 0 -s 188.134.7.221

После необходимо перечитать правила:

firewall-cmd —reload

Installation

Requirements

In order to use Fail2ban, the following software are required:

Python >= 2.4

Warning: Python 2.4 does not re-open the syslog socket when it encounters a failure. This is a Python bug. If you want to use «logtarget = SYSLOG», please use a newer version of Python like 2.5.

The following software are optional but recommended:

  • a working mail command

You will probably need at least one firewall software like iptables or shorewall. If you want a software which is not supported, please feel free to contact the author.

Installing from sources on a GNU/Linux system

tar xvjf fail2ban-x.x.x.tar.bz2

You will have the Fail2ban source code extracted to a directory under the current working directory. You must now move to the new directory.

Now run the installation script as root:

./setup.py install

Fail2ban should now be installed into /usr/share/fail2ban/ and /usr/bin/. You will also have to copy the content of config/ into /etc/fail2ban/ (not so in version 0.8.1). You are now ready to use the application.

Integrate fail2ban into your INIT-Process:

Go into the files-folder where you extracted the sources:

# cd /usr/local/src/fail2ban-0.8.1/files

and copy the init-script fitting your distribution to /etc/init.d.

# cp suse-initd /etc/init.d/fail2ban
# chmod 755 /etc/init.d/fail2ban

the default-debian-script is missing in the master branch of source-files currently; but could be fetched from the debian branch: https://github.com/fail2ban/fail2ban/blob/debian/debian/fail2ban.init

Finally after copying/editing the init file, and adjusting the paths to fail2ban-client and fail2ban-server run chkconfig or update-rc.d or create the symbolic links manually…

chkconfig -a fail2ban

or

update-rc.d fail2ban defaults

or

ln -s /etc/init.d/fail2ban /etc/rc2.d/S20fail2ban ...

Integrate fail2ban into logrotate:

create file «/etc/logrotate.d/fail2ban»:

/var/log/fail2ban.log {
    weekly
    rotate 7
    missingok
    compress
    postrotate
      /usr/local/bin/fail2ban-client set logtarget /var/log/fail2ban.log >/dev/null
    endscript
}

The path to your fail2ban-client might need to be adjusted (# whereis fail2ban-client)

Debian

Installing Fail2ban on a Debian based system is very straightforward, just install the package through Synaptic or

apt-get install fail2ban

Fedora

Installing Fail2ban on a Fedora 9+ based system is usually straightforward. Execute the following code as the root user:

yum install fail2ban
fail2ban.jail   : INFO   Creating new jail 'ssh-iptables'
fail2ban.comm   : WARNING Invalid command:  

when starting the SSH jail. If this happens to you, edit jail.conf and change the line that says

backend = auto

to

backend = gamin

This requires gamin to be installed. If it isn’t, install it via:

yum install gamin

Alternatively you can disable SELinux, but that is not recommended.

Заключение

Такая нехитрая и эффективная в некоторых случаях защита у нас получилась. Я в течении дня собираю около тысячи попыток залогиниться через wp-admin. Не все боты долбятся 3 раза подряд и попадают в бан. Я бы даже сказал, большая часть этого не делает. Но они и не представляют опасности. Подобная этой настройка защитит в первую очередь от массового нашествия, которое способно серьезно замедлить работу сайта и хостинга в целом. Закрытие доступа на уровне iptables очень эффективный способ сохранить ресурсы сервера.

Помогла статья? Подписывайся на telegram канал автора

Рекомендую полезные материалы по схожей тематике:

Онлайн курс по Linux

Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, рекомендую познакомиться с онлайн-курсом «Administrator Linux. Professional» в OTUS. Курс не для новичков, для поступления нужны базовые знания по сетям и установке Linux на виртуалку. Обучение длится 5 месяцев, после чего успешные выпускники курса смогут пройти собеседования у партнеров.

Что даст вам этот курс:

  • Знание архитектуры Linux.
  • Освоение современных методов и инструментов анализа и обработки данных.
  • Умение подбирать конфигурацию под необходимые задачи, управлять процессами и обеспечивать безопасность системы.
  • Владение основными рабочими инструментами системного администратора.
  • Понимание особенностей развертывания, настройки и обслуживания сетей, построенных на базе Linux.
  • Способность быстро решать возникающие проблемы и обеспечивать стабильную и бесперебойную работу системы.

Проверьте себя на вступительном тесте и смотрите подробнее программу по .

Важность своевременного обновления сервера — взлом centos сервера через уязвимость bash.
Эпидемия вируса шифровальщика vault — как защитить свои данные.

Базовая настройка centos для обеспечения минимальной защиты сервера.

Создание резервной копии сайта и ее хранение на Яндекс.Диске.

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Мой редактор ОС
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: