Установка и настройка 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. Советую ознакомиться.

      Ответить
  2. Михаил

    logpath = %(sshd_log)s

    Здесь указать путь?

    logpath = /var/log/secure

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

      Нет, я в у себя в конфигах указываю именно так, как написал

      Ответить
  3. Вася

    Из репо не ставится, ругается на версию питона, залил напрямую с git,
    но команду fail2ban не находит, реагирует только fail2ban-client
    как подлечить ?

    Ответить