Настройка работы drupal 7 с fail2ban через syslog в ubuntu 12.04

Аватар пользователя jura12 jura12 13 мая 2013 в 22:39

Введение
Настало то время когда сайт на хостинге подрос и начал выбиваться из основного тарифного плана. Кроме того сайт начали атаковать роботы с целью взлома сайта под прикрытием ДДОС атаки. Платить больше за хостинг желания не было. Поэтому решил организовать хостинг дома на ноутбуке с использованием полных мер защиты сайта. Одна из мер представлена в этой статье.
Настройки друпала
1. включаем стандартный модуль syslog. Модули — Syslog
2. настраиваем. Конфигурация-Разработка-Логи и ошибки
Сообщения об ошибках - Ошибки и предупреждения
Идентификатор – drupal
Механизм системных журналов Syslog – LOG-LOCAL0
syslog — формат сообщения - !base_url|!timestamp|!type|!ip|!request_uri|!referer|!uid|!link|!message

Настройки rsyslog

Добавить строчку

local0.* /var/log/drupal.log

в файл /etc/rsyslog.conf

Настройка fail2ban
Обновляем fail2ban
По умолчанию в 12.04 идет версия 0.8.6-3 . но можно обновить до 0.8.8-1~nd12.04+1 http://neuro.debian.net/pkgs/fail2ban.html . список изменений можно почитать тут https://github.com/fail2ban/fail2ban/blob/master/ChangeLog инсталляция:

wget -O- http://neuro.debian.net/lists/precise.de-md.full | sudo tee /etc/apt/sources.list.d/neurodebian.sources.list

sudo apt-key adv --recv-keys --keyserver pgp.mit.edu 2649A5A9
sudo apt-get update
sudo apt-get install fail2ban

Создаем дополнительные фильтры
Создаем файлы фильтров в директории /etc/fail2ban/filter.d со следующим содержимом:
drupal.conf
# Fail2Ban configuration file
#
# Author: Yuri Ivanov
#
# $Revision$
#

[Definition]

# Option: failregex
# Notes.: regex to match the password failure messages in the logfile. The
# host must be matched by a group named "host". The tag "" can
# be used for standard IP/hostname matching and is only an alias for
# (?:::f{4,6}:)?(?P[\w\-.^_]+)
# Values: TEXT
#
failregex = ^.*\|page not found\|\|

# Option: ignoreregex
# Notes.: regex to ignore. If this regex matches, the line is ignored.
# Values: TEXT
#
ignoreregex = ^.*\|page not found\|\|.*\+\+Result:
apache-attempt.conf
# Fail2Ban configuration file
#
# Author: Yuri Ivanov
#
# $Revision$
#

[Definition]

# Option: failregex
# Notes.: regex to match the password failure messages in the logfile. The
# host must be matched by a group named "host". The tag "" can
# be used for standard IP/hostname matching and is only an alias for
# (?:::f{4,6}:)?(?P[\w\-.^_]+)
# Values: TEXT
#
failregex = [[]client []] Attempt to serve directory

# Option: ignoreregex
# Notes.: regex to ignore. If this regex matches, the line is ignored.
# Values: TEXT
#
ignoreregex =

drupal-longtime.conf
# Fail2Ban configuration file
#
# Author: Yuri Ivanov
#
# $Revision$
#

[Definition]

# Option: failregex
# Notes.: regex to match the password failure messages in the logfile. The
# host must be matched by a group named "host". The tag "" can
# be used for standard IP/hostname matching and is only an alias for
# (?:::f{4,6}:)?(?P[\w\-.^_]+)
# Values: TEXT
#
failregex = ^.*\|page not found\|\|.*\+\+Result:
^.*\|php\|\|.*\|Warning:

# Option: ignoreregex
# Notes.: regex to ignore. If this regex matches, the line is ignored.
# Values: TEXT
#
ignoreregex =

Включаем наши и дополнительные фильтры
в файл /etc/fail2ban/jail.conf добавляем строки:

[apache-attempt]

enabled = true
port = http,https
filter = apache-attempt
logpath = /var/log/apache*/*error.log
bantime = 600
maxretry = 4

[drupal]

enabled = true
port = http,https
filter = drupal
logpath = /var/log/drupal.log
bantime = 600
maxretry = 6

[drupal-longtime]

enabled = true
port = http,https
filter = drupal-longtime
logpath = /var/log/drupal.log
bantime = 86400
# 86400 sec = 1 day
# 604800 sec = 1 week
maxretry = 1

включаем дополнительные фильтры:
в файл /etc/fail2ban/jail.conf в разделе [apache-noscript] должно быть enabled = true

Рестарт служб

sudo service rsyslogd restart
sudo service fail2ban restart

Атакеры попадают в бан и разбанятся автоматически.
Юра.

0 Thanks

Комментарии