Защита от подбора паролей Fail2Ban

С каждым годом эффективность взлома информационных систем простым перебором паролей увеличивается благодаря росту вычислительных мощностей. И единственный способ обезопасить себя от этого - это использовать надёжный длинный пароль (не менее 16 знаков с символами) и использовать программы для блокировки запросов по ip, к примеру, Fail2Ban. Программа Fail2Ban блокирует доступ к порту сервера с тех ip адресов, с которых был несколько раз авторизация закончилась неудачно. К примеру, доступ к SSH порту может быть заблокирован по ip тем, кто несколько раз ввёл неверный пароль.
Самый надёжный способ защиты от взлома SSH - это ограничение доступа к 22 порту сервера по ip адресу. Но для этого у вас должен быть статичный внешний (белый) ip адрес. Подобную блокировку можно сделать с помощью iptables.

Но если нужно обезопасить сервер, к которому подключается большое количество пользователей, то выдача разрешений на доступ по ip будет довольно трудоёмким занятием. В таком случае и нужен Fail2Ban.

Установка Fail2Ban

Для её установки Fail2Ban на CentOS (7-ой версии) необходимо выполнить команду:
yum install fail2ban
На Ubuntu:
apt install fail2ban
После установки стоит поставить опцию автоматического включения при старте системы. В CentOS:
chkconfig fail2ban on
На Ubuntu:
systemctl enable fail2ban

Настройка Fail2Ban

По умолчанию после установки Fail2Ban находится буквально в нерабочем состоянии. Включается он через файл конфигурации. А точнее через его копию, которую надо предварительно создать. Для этого выполните команду:
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
После чего в файле jail.local необходимо будет изменить настройки. Через него можно включить защиту от подбора пароля на разные программы: от ssh до exim.
Fail2Ban работает через файлы логов. То есть он непрерывно отслеживает факты неудачных попыток входа через лог файлы программ. И делает выставляет блокировку на ip адреса злоумышленников через iptables.
После установки пакета необходимо перейти в файл конфигурации /etc/fail2ban/jail.local (его мы создали ранее копированием). Через него происходит всё управление условиями блокировок. В начале файла перечислены общие директивы, которые могут быть переопределены в блоках отдельных программ ниже.

В файле конфигурации одной из первых записана директива "bantime". Она определяет период времени, на который блокируется ip адрес, с которого совершались попытки неудачного входа:
# "bantime" is the number of seconds that a host is banned.
bantime = 3600
По умолчанию это один час (значение указывается в секундах - 3600). Если вы точно знаете, что никогда не будете ошибаться, то стоит поставить это значение на большее. К примеру, увеличить до 10 часов.

Следующие значимые параметры - это период фиксации "findtime" и количество неудачных попыток "maxretry". По умолчанию эти директивы имеют такие значения:
# A host is banned if it has generated "maxretry" during the last "findtime" seconds.
findtime = 3600

# "maxretry" is the number of failures before a host get banned.
maxretry = 3
- эти настройки означают, что будут заблокированы все, кто ввёл неверный пароль три раза (и более) в течение одного часа (3600 секунд). Если вы не ошибаетесь при вводе пароля, то стоит поднять значение findtime на порядок (до 10 часов) и уменьшить maxretry до 2, чтобы максимально замедлить процесс подбора пароля.

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

Защита SSH

Для активации защиты SSH необходимо поставить директиву enabled = true в блок [sshd], чтобы получилось так:
[sshd]
enabled=true
И перезапустить сервис (либо запустить start, если он ещё не работал):
systemctl restart fail2ban
Скорость запуска зависит от размера файла логов, которые программа читает при каждой загрузке. Обратите внимание, что если ранее вы допускали ошибки при входе на сервер через SSH и это осталось в логах, то во время перезагрузки Fail2Ban вы будете заблокированы по ip.

Чтобы показать какие именно "ловушки" активированы, необходимо воспользоваться командой "fail2ban-client status":
# fail2ban-client status
Status
|- Number of jail:      1
`- Jail list:   sshd
Если нужно посмотреть состояние определённой ловушки, к примеру для sshd, то её надо указать после этой команды:
fail2ban-client status sshd
Status for the jail: sshd
|- Filter
|  |- Currently failed: 3
|  `- Total failed:     3648
`- Actions
   |- Currently banned: 14
   |- Total banned:     346
   `- Banned IP list:   список_заблокированных_ip_адресов
Чтобы разблокировать ip адрес, необходимо выполнить команду:
fail2ban-client set sshd unbanip ip_адрес
- где вместо "ip_адрес" в конце укажите ip, который нужно разблокировать.
MouseDC.ru - хостинг, виртуальный хостинг, покупка доменов, проверка доменов, WHOIS, курсы создания сайтов, вебинары по созданию, курсы разработки сайтов, доработка сайтов, сопровождение сайтов, разработка сайтов, техподдержка сайтов
Смотрите наш видео подкаст на эту тему:
Cмотрите другие статьи:
Была ли статья полезной?
Была ли эта статья полезна? Есть вопрос?
хостинг для сайтов
Закажите недорогой хостинг Заказать

всего от 290 руб

⇡ наверх