Марат-блог
Услуги по продвижению и разработке сайта
Отправить заявку
Заказать обратный звонок

Спасибо, Ваша заявка принята.

В ближайшее время менеджер свяжется с Вами.

Главная Хостинг fail2ban на CentOS - защита от брутофорса
fail2ban на CentOS - защита от брутофорса
Хостинг
244
01 марта 2015

fail2ban на CentOS - защита от брутофорса

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

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

устанавливаем 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=user@domain.local, sender=fail2ban@domain.local]
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 -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 используем команду:

fail2ban-client set ssh-iptables unbanip xxx.xx.x.xx

так же проверить статус сервиса можно:

/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-client  reload

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

service fail2ban restart