ВведениеНастало то время когда сайт на хостинге подрос и начал выбиваться из основного тарифного плана. Кроме того сайт начали атаковать роботы с целью взлома сайта под прикрытием ДДОС атаки. Платить больше за хостинг желания не было. Поэтому решил организовать хостинг дома на ноутбуке с использованием полных мер защиты сайта. Одна из мер представлена в этой статье.
Настройки друпала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 "<HOST>" can
# be used for standard IP/hostname matching and is only an alias for
# (?:::f{4,6}:)?(?P<host>[\w\-.^_]+)
# Values: TEXT
#
failregex = ^.*\|page not found\|<HOST>\|
# Option: ignoreregex
# Notes.: regex to ignore. If this regex matches, the line is ignored.
# Values: TEXT
#
ignoreregex = ^.*\|page not found\|<HOST>\|.*\+\+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 "<HOST>" can
# be used for standard IP/hostname matching and is only an alias for
# (?:::f{4,6}:)?(?P<host>[\w\-.^_]+)
# Values: TEXT
#
failregex = [[]client <HOST>[]] 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 "<HOST>" can
# be used for standard IP/hostname matching and is only an alias for
# (?:::f{4,6}:)?(?P<host>[\w\-.^_]+)
# Values: TEXT
#
failregex = ^.*\|page not found\|<HOST>\|.*\+\+Result:
^.*\|php\|<HOST>\|.*\|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
ЗаключениеАтакеры попадают в бан и разбанятся автоматически.
Юра.
Как вам статья?