Установка и настройка Fail2Ban в Centos 7

Установка и настройка Fail2Ban в Centos 7

Fail2Ban — это программная среда, предназначенная для предотвращения вторжений, защищающая серверы от атак методом перебора.
Fail2Ban работает, отслеживая файлы журналов (например, /var/log/auth.log, /var/log/apache/access.log и т. Д.) для выбранных сервисов и запускает сценарии на их основе. Чаще всего используется для блокировки выбранных IP-адресов, которые могут принадлежать хостам, которые пытаются нарушить безопасность системы.

Установка Fail2Ban

Добавляем в систему репозиторий EPEL, обновляемся и устанавливаем программное обеспечение

[root@localhost]# yum install epel-release
[root@localhost]# yum update
[root@localhost]# yum install fail2ban fail2ban-systemd

Если у вас не отключен SELinux, то обновляем политики

[root@localhost]# yum update -y selinux-policy*

Настройка Fail2Ban

Fail2Ban хранит свои настройки в файле /etc/fail2ban/jail.conf, и при обновлении перезаписывает этот файл, по-этому скопируем файл jail.conf под именем jail.local

[root@localhost]# cp -pf /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

По-умолчанию файл конфигурации содержит следующие строки:

[DEFAULT]

#
# MISCELLANEOUS OPTIONS
#

# "ignoreip" can be an IP address, a CIDR mask or a DNS host. Fail2ban will not
# ban a host which matches an address in this list. Several addresses can be
# defined using space separator.
ignoreip = 127.0.0.1/8

# External command that will take an tagged arguments to ignore, e.g. <ip>,
# and return true if the IP is to be ignored. False otherwise.
#
# ignorecommand = /path/to/command <ip>
ignorecommand =

# "bantime" is the number of seconds that a host is banned.
bantime = 600

# A host is banned if it has generated "maxretry" during the last "findtime"
# seconds.
findtime = 600

# "maxretry" is the number of failures before a host get banned.
maxretry = 5
  • ignoreip — используется для установки списка IP-адресов, которые не будут забанены. Список IP-адресов следует указывать через пробел.
  • bantime — время блокировки, в секундах.
  • maxretry — количество попыток перед перед блокировкой.
  • findtime — время, на протяжении которого рассчитывается количество попыток перед баном (maxretry).

Т.е. в конфиге по-умолчанию прописано, что пользователь будет забанен на 10 минут, если в течение 10 минут будет совершено 5 неудачных попыток.

Защита SSH соединения

Создадим новый файл sshd.local, и добавим в него следующие строки

[root@localhost]# nano /etc/fail2ban/jail.d/sshd.local

[sshd]
enabled = true
port = ssh
action = firewallcmd-ipset
logpath = %(sshd_log)s
maxretry = 5
bantime = 86400
  • enable = true — проверка ssh активна.
  • action используется для получения IP-адреса, который необходимо заблокировать, используя фильтр, доступный в /etc/fail2ban/action.d/firewallcmd-ipset.conf.
  • logpath — путь, где хранится файл журнала. Этот файл журнала сканируется Fail2Ban.
  • maxretry — лимита для неудачных входов в систему.
  • bantime — время блокировки (24 часа).

Добавим сервис Fail2Ban в автозагрузку и запустим его

[root@localhost]# systemctl enable fail2ban
[root@localhost]# systemctl start fail2ban

Что бы проверить статус,выполним команду

[root@localhost]# fail2ban-client status
Status
|- Number of jail: 1
`- Jail list: sshd

Для разблокирования IP-адреса надо выполнить команду

[root@localhost]# fail2ban-client set sshd unbanip IPADDRESS

Максим Макаров
У блога появился хостинг, его любезно предоставила компания Облакотека.
Облакотека - облачные сервисы для создания и управления виртуальной ИТ-инфраструктурой.
Если вам понравился мой блог и вы хотели бы видеть на нем еще больше полезных статей, большая просьба поддержать этот ресурс. Для этого достаточно кликнуть на контекстную рекламу, расположенную на сайте.
Оцените автора
IT Draft
Добавить комментарий

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

  1. Илья

    Правильно я понимаю, что когда мы скопировали файл jail.local, настройки будут считываться с этого файла?

    У меня как — то Fail2ban.log весил 30 гигабайт и забил все место, я так и не смог найти информацию как задать ограничение на размер лог файла или вовсе его отключить :)

    Ответить
    1. Максим Макаров автор

      Правильно я понимаю, что когда мы скопировали файл jail.local, настройки будут считываться с этого файла?

      да, все верно

      Что бы логи не росли, в Linux есть замечательная утилита logrotate. Советую ознакомиться.

      Ответить