ModSecurity — это открытый Web Application Firewall (WAF), работающий как модуль Apache или Nginx. Он анализирует HTTP-трафик в реальном времени и блокирует SQL-инъекции, XSS, RFI и другие атаки.
Установка ModSecurity на Ubuntu/Apache
sudo apt update
sudo apt install -y libapache2-mod-security2
# Включить модуль
sudo a2enmod security2
sudo systemctl restart apache2
# Проверить
apachectl -M | grep security
Базовая настройка
# Копировать конфиг
sudo cp /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf
# Изменить режим с DetectionOnly на On
sudo sed -i 's/SecRuleEngine DetectionOnly/SecRuleEngine On/' /etc/modsecurity/modsecurity.conf
Установка OWASP CRS (Core Rule Set)
sudo apt install -y modsecurity-crs
# Или вручную:
cd /etc/modsecurity
sudo git clone https://github.com/coreruleset/coreruleset.git
cd coreruleset
sudo cp crs-setup.conf.example crs-setup.conf
✅ OWASP CRS — стандартный набор правил, защищающий от OWASP Top 10 атак. Обновляйте его регулярно.
Режимы работы
| Режим | Конфиг | Действие |
|---|---|---|
| Detection Only | SecRuleEngine DetectionOnly | Логирует, не блокирует |
| Active (On) | SecRuleEngine On | Блокирует запросы |
| Off | SecRuleEngine Off | Полностью отключён |
Управление ложными срабатываниями
# Отключить правило для конкретного URL
SecRule REQUEST_URI "@beginsWith /wp-admin/post.php" "id:1000001,phase:1,pass,nolog,ctl:ruleRemoveById=941100"
# Отключить правило глобально (не рекомендуется)
SecRuleRemoveById 941100
⚠️ Начинайте с DetectionOnly режима на 2–4 недели, изучайте логи и только потом переключайте в On. Иначе рискуете заблокировать легитимных пользователей.
Логи ModSecurity
# Посмотреть заблокированные запросы
sudo tail -f /var/log/apache2/modsec_audit.log | grep "HTTP 403"
# Статистика атак
sudo grep "OWASP" /var/log/apache2/modsec_audit.log | awk '{print $NF}' | sort | uniq -c | sort -rn