Защита от ботов fail2ban+csf сервера nginx c друпалом на борту на DigitalOcean

Ты можешь хорошо оптимизировать сервер, настроить сайт на друпале, но спам-боты могут свести на нет все твои старания, вынуждая тебя переходит на более дорогой тариф, п.ч. они все время хотят больше кушать.

Настроим наш nginx сервер для победы над спам ботами --->>

Установка CFS (ConfigServer Firewall)

1. Качаем архив:

wget http://www.configserver.com/free/csf.tgz

2. Распаковываем:

tar -xzf csf.tgz

3. Устанавливаем

Если есть другие фаервольные скрипты, например UFW, то нужно их остановить. Правила в iptables удалятся автоматически.

  1. ufw disable
  2.  
  3. cd csf
  4.  
  5. sh install.sh

Фаервол теперь установлен и теперь проверим все ли требуемы модули iptable доступны.

perl /usr/local/csf/bin/csftest.pl

Fail2ban будет работать, если при проверки везде OK.

Установка fail2ban

1. Устанавливаем модуль на друпал сайт:

https://www.drupal.org/project/fail2ban

Включаем syslog модуль.

2. Редактируем /etc/fail2ban/jail.conf, добавляем в конец файла:,

  1. [drupal-fail2ban]
  2. enabled = true
  3. port = http,https
  4. protocol = tcp
  5. filter = drupal-fail2ban
  6. action = csf-ip-deny[name=drupal]
  7. logpath = /var/log/messages
  8. maxretry = 5
  9. findtime = 86400
  10. bantime = 21600

3. Создаем фильтр /etc/fail2ban/filter.d/drupal-fail2ban.conf со следующим содержимым:

  1. [Definition]
  2. failregex = \|user\|<HOST>\|.*\|Login attempt failed (.+)\.$
  3. ignoreregex =

4. Создаем фильтр /etc/fail2ban/action.d/csf-ip-deny.conf со следующим содержимым:

# CSF / fail2ban integration from The Digital FAQ (digitalFAQ.com)

  1. [Definition]
  2. actionstart =
  3. actionstop =
  4. actioncheck =
  5. actionban = csf -d <ip> Added by Fail2Ban for <name>
  6. actionunban = csf -dr <ip>
  7.  
  8. [Init] name = default

# Read more: http://www.digitalfaq.com/forum/web-tech/5692-fail2ban-csf-blocking.html#ixzz3Jfzkmx00

5. Запуск

  1. Останавливаем сервер:
  2.  
  3. /etc/init.d/nginx stop
  4.  
  5. рестартим fail2ban:
  6.  
  7. service fail2ban restart

Запускаем сервер:

  1. /etc/init.d/nginx start

Смотрим работу командой:

tail -f /var/log/fail2ban.log

должно быть примерно так:

  1. 2014-11-24 16:02:22,881 fail2ban.actions: WARNING [drupal-fail2ban] 110.85.100.178 already banned
  2.  
  3. 2014-11-24 16:02:25,884 fail2ban.actions: WARNING [drupal-fail2ban] 110.85.100.178 already banned
  4.  
  5. 2014-11-24 16:11:01,528 fail2ban.actions: WARNING [drupal-fail2ban] 91.200.12.41 already banned
  6.  
  7. 2014-11-24 16:12:10,612 fail2ban.actions: WARNING [ssh] Ban 178.254.22.90
  8.  
  9. 2014-11-24 16:22:11,384 fail2ban.actions: WARNING [ssh] Unban 178.254.22.90

наконец то стало легче дышать, скорость сайта возросла в 10-15 раз, боты прибиты, переходить на более дорогой тариф не надо!

Russian
Категория: 
The code has been tested and works