5 1 1 1 1 1 1 1 1 1 1 Rating 5.00 (5 Votes)

Защищаем сервер от брутофорса посредством fail2ban, первым делом подключаем EPEL репозиторий:

rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm

Установка fail2ban

Устанавливаем fail2ban:

yum install fail2ban

копируем и редактируем конфигурационный файл:

cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
nano /etc/fail2ban/jail.local

настраиваем исключения для IP адресов, время бана, поиск за период времени и сколько ошибочных попыток было за это время, настраивая параметры в секции [Default] (время указывается в секундах):

ignoreip = 127.0.0.1
bantime  = 3600
findtime  = 600
maxretry = 3

включаем блокирование при попытке подбора пароля к доступу ssh, выставив параметр enabled в true:

[ssh-iptables]

enabled  = true
filter   = sshd
action   = iptables[name=SSH, port=ssh, protocol=tcp]
           sendmail-whois[name=SSH, dest=Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра., sender=Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.]
logpath  = /var/log/secure
maxretry = 4

где dest адрес получателя уведомления, sender адрес отправителя, если рассматривать более подробно:

  • enabled - параметр для включения \ отключения фильтра, выставляется значениями true \ false
  • filter - определяет фильтр, параметры фильтра (правила) располагаются в конфигруационном файле /etc/fail2ban/filter.d/sshd.conf
  • action - действие, происходящее в момент срабатывания правила т.е. в момент соответсвия его условиям, в результате блокируемый IP  добавляется в список блокирования файервола (/etc/fail2ban/action.d/iptables.conf), если настроен почтовый сервер, то будет отослано почтовое сообщение с whois информацией о блокируемом IP
  • logpath - файл, который будет анализироваться fail2ban на предмет ошибочных повторов
  • maxretry - количество ошибочных повторов ввода пароля

далее определяем глобальный лог файл для fail2ban в файле /etc/fail2ban/fail2ban.conf, изменив параметр logtarget, на:

logtarget = /var/log/fail2ban.log

добавляем сервис в автозагрузку:

chkconfig fail2ban on

и запускаем:

service fail2ban start

Проверка правил в iptables

Проверяем наличие правил в iptables:

iptables -L

при необходимости можно посмотреть дату и время ошибочных попыток:

cat /var/log/secure | grep 'Failed password' |  sort | uniq -c

или количество ошибочных попыток:

cat /var/log/secure* | grep 'Failed password' | grep sshd | awk '{print $1,$2}' | sort | uniq -c

Удаление заблокированного IP

Для удаления забаненного IP используем команду:

fail2ban-client set sshd unbanip xxx.xxx.xx.x

или непосредствено из iptables, смотрим правила с нумерацией:

iptables -L fail2ban-SSH -v -n --line-numbers

находим свой IP в списке, удаляем:

iptables -D fail2ban-SSH 2

Проверка статуса fail2ban

/etc/init.d/fail2ban status

текущее состояние fail2ban по ssh-iptables:

fail2ban-client  -i
Fail2Ban v0.8.10 reads log file that contains password failure report
and bans the corresponding IP addresses using firewall rules.

fail2ban> status ssh-iptables
Status for the jail: ssh-iptables
|- filter
|  |- File list:    /var/log/secure
|  |- Currently failed:    1
|  `- Total failed:    23
`- action
   |- Currently banned:    2
   |  `- IP list:    xx.xx.xxx.xxx xxx.xx.x.xx
   `- Total banned:    4

Перезапуск fail2ban

Перезапустить fail2ban можно так:

fail2ban-client  reload

или стандартным методом:

service fail2ban restart

Настройки приведены для версии fail2ban ниже 0.9.0, начиная сновой версии синтаксис jail.local изменился

Статья о том, как настроить Fail2ban версии выше 0.9.х

Обсудить на форуме

Комментарии  

Guest
0 # Guest 20.11.2014 19:23
К сожалению в CentOS 7 ввели FirewallD поэтому fail2ban работает не правильно. Так и не удалось настроить его, хотя как процесс работает без ошибок, но видимо совсем не те правила заносит в iptables.
Ответить | Ответить с цитатой | Цитировать
Y. Goncharov
0 # Y. Goncharov 08.12.2014 22:07
Цитирую Guest:
К сожалению в CentOS 7 ввели FirewallD поэтому fail2ban работает не правильно. Так и не удалось настроить его, хотя как процесс работает без ошибок, но видимо совсем не те правила заносит в iptables.

Firewalld можно отключить и вместо него использовать Iptables, делается это примерно так:

yum install iptables-services
systemctl mask firewalld.service
systemctl enable iptables.service
systemctl enable ip6tables.service
systemctl stop firewalld.service
systemctl start iptables.service
systemctl start ip6tables.service
Ответить | Ответить с цитатой | Цитировать
Y. Goncharov
0 # Y. Goncharov 19.04.2016 17:28
Вопрос на сегодняшний день решился.. в Fedora и CentOS ..
Ответить | Ответить с цитатой | Цитировать
Rager
0 # Rager 06.12.2016 18:07
Доброго дня! Спасибо за интересно расписанную инструкцию.
Хотел спросить, если можно:
Сервер удаленный, но хостере, и нужно закрыть перебор пароля на нем.
В настройках указан ignoreip=127.0.0.1 - то есть сам себя не банит.
А что делать если у меня динамический ip - есть шанс забаниться самому - как это можно обойти?
Поможет ли использование ssh по сертификату, в то время как брутфорс по паролю естественным образом приведет к бану?

Спасибо за то что выслушали, надеюсь будет и совет.
Ответить | Ответить с цитатой | Цитировать
Y. Goncharov
0 # Y. Goncharov 07.12.2016 10:28
Привет! Почему нет? SSH по сертификату + перенос стандартного порта, на не стандартный...
Ответить | Ответить с цитатой | Цитировать

Сейчас 298 гостей и ни одного зарегистрированного пользователя на сайте

Вверх
Вниз