Содержание

Fail2ban обязательная защита сервера VPS

Основной задачей программы Fail2ban является обнаружение и блокирование отдельных IP-адресов, с которых производятся попытки несанкционированного проникновения в защищаемую систему. Такие "враждебные" IP-адреса определяются по результатам наблюдения за файлами журналов - log-файлами (например, /var/log/secure, /var/log/auth.log, /var/log/apache/access.log и т.д.). Если с какого-либо IP-адреса выполняется слишком много попыток зарегистрироваться в защищаемой системе или производятся какие-либо другие подозрительные действия, то хост с этим IP-адресом блокируется на некоторый интервал времени, определённый системным администратором, т.е. ни один пакет, посланный с такого заблокированного хоста, не будет принят. Такая блокировка выполняется посредством изменения правил (rules) сетевого экрана (iptables).

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

Fail2ban Ubuntu 18 и выше

В операционной системе Ubuntu 18.04.4 LTS, 20.04.1 LTS Fail2ban ставиться очень просто, если вам нужна только защита SSH и вы используете для настройки фаервола iptables для начинающих: Простое управление брандмауэром с UFW.

$ sudo apt install fail2ban

И всё, ваш ssh демон -защищен!!!

Использование и установка Fail2ban Debian

Установка и использование Fail2ban RHEL/CentOS

По молчанию утилиты Fail2ban нет в стандартном репозитории. Fail2ban можно поставить например из EPEL repository используя YUM.

Инсталляция Fail2ba в CentOS

yum update
yum install epel-release
yum install fail2ban

По умолчанию, в CentOS fail2ban выключен, включаем и запускаем:

systemctl enable fail2ban
systemctl start fail2ban

Создаем jail.local, в котором опишем наши настройки

cp -p jail.conf jail.local

Пример настройки Fail2ban и Nginx

Настроим Fail2ban nginx-limit-req для связки с Nginx. Предварительно вы должны настроить встроенный модуль ngx_http_limit_req_module. Добавим в jail.local

[nginx-limit-req]
enabled = true
filter  = nginx-limit-req
port    = http,https
logpath = /var/log/nginx/*error.log
bantime = 600
maxretry = 5

Сам фильтр идет в комплекте с и находится в файле /etc/fail2ban/filter.d/nginx-limit-req.conf Проверяем на ошибки:

fail2ban-client status nginx-limit-req

Управление запрещенными IP и fail2ban-client

Управление запрещенными IP (manage bans IPs).

fail2ban-client status sshd
Status for the jail: sshd
|- Filter
|  |- Currently failed: 3
|  |- Total failed:     18
|  `- File list:        /var/log/auth.log
`- Actions
   |- Currently banned: 6
   |- Total banned:     6
   `- Banned IP list:   106.13.144.207 180.76.246.205 200.160.111.222 157.245.193.50 179.111.233.126 43.154.104.207

Bug Fail2ban 1970

Версия демона Fail2ban 0.8.6 присылает на почту уведомление с неправильной датой 1970-01-01 01:00. Варианты решения:

Fail2ban просмотреть полный список заблокированных IP-адресов

Лучший способ просмотреть полный список заблокированных IP-адресов - проверить файл журнала:

sudo zgrep 'Ban' /var/log/fail2ban.log*

Второй способ, посмотреть чистый список правил iptables:

sudo iptables -L INPUT -v -n | less