ModSecurity – модуль Apache, добавляющий возможности обнаружения и предотвращения вторжения на Web сервер.
sudo cp /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf
##sudo a2enmod security2
sudo systemctl restart apache2
По умолчанию фильтрация включена в SecRuleEngine DetectionOnly. Для того чтобы модуль начал анализировать и блокировать запросы, следует заменить в конфигурационном файле /etc/modsecurity/modsecurity.conf на SecRuleEngine On.
Синтаксис данной команды представлен ниже.
SecRuleEngine On|Off|DetectionOnly
Можно еще также поднастроить фильтрацию в файле /etc/modsecurity/crs/crs-setup.conf
Логи пишутся по умолчанию в файлы логов apache.
Комментарии
P.S. Есть коммерческая поддержка с 19000 фильтрами за 495 долларов в год. Есть в ней и фильтры для drupal:
Количество патчей и модуль
1 BlastChat Client Module for Drupal
4 CiviCRM Module for Drupal
1 Cumulus Module for Drupal
2 Drupal
1 Facebook Share Module for Drupal
1 ImageField Module for Drupal
1 Link Module for Drupal
1 Protected Node Module for Drupal
1 Rate Module for Drupal
1 Taxonomy Theme Module for Drupal
1 Viewfield Module for Drupal
Лучше уж куда-нибудь за cloudflare спрятаться, чем себе такое ставить... Там есть waf, и в нём правила для Drupal.
Также, не стоит слишком торопиться и переключаться с SecRuleEngine DetectionOnly. Надо посмотреть логи, нет-ли там ложно-позитивных срабатываний.
нашел российскую фирму для защиты от ДДОС атак DDOS-GUARD. там есть бесплатный тариф. думаю стоит попробовать или нет. вроде ДДОС атак в мире стало меньше.
P.S. админы, перенесите эту тему в раздел Безопасность.
есть еще fail2ban фильтр к нему. чтоб включить надо в файл sudo nano /etc/fail2ban/jail.local добавить строки
enabled = true
какой лог смотрит точно не скажу. толи /var/log/apache2/access.log толи /var/log/apache2/error.log
толи /var/log/apache2/modsec_audit.log . думаю что последний. но это не точно. у меня все работает.
исключения для друпала 8.1.10 включаются в файле /etc/modsecurity/crs/crs-setup.conf . надо добавить строки:
"id:900130,\
phase:1,\
nolog,\
pass,\
t:none,\
setvar:tx.crs_exclusions_drupal=1"
если чтото пошло не так то можно добавить исключающее правило в
/etc/modsecurity/crs/REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf . например
"id:1002,\
phase:1,\
pass,\
nolog,\
ctl:ruleEngine=DetectionOnly"
это применимо к правилам версии 3.3.0
чтоб работало логирование по файлам. нашел в инетах такую конфигурацию:
создаем файл
sudo mcedit /etc/logrotate.d/modsec_audit
добавляем строки:
{
rotate 14
daily
missingok
compress
delaycompress
notifempty
}
кстати это в убунту 22.04 не нужно. поскольку логирование апача берет все логи каталога /var/log/apache2