Mod_security является модулем Apache, который помогает защитить ваш сайт от различных атак, таких как межсайтовый скриптинг, SQL — инъекций, атак с обходными путями и т.д. Mod_evasive является модулем Apache, который помогает предотвратить HTTP DoS (DDoS — атаки) или server brute force. Если у вас установлен CentOS на вашем сервере, следуйте этим инструкциям, чтобы установить mod_security с набором правил ядра OWASP.
Для того, чтобы установить и настроить mod_security и mod_evasive модули на Ubuntu VPS для того чтобы защитить и обеспечить безопасность веб — сервера Apache, выполните действия, описанные ниже:
Убедитесь, что все пакеты ОС в актуальном состоянии:
sudo apt-get update sudo apt-get upgrade
Установите mod-security и mod-evasive, используя следующую команду:
sudo apt-get install libapache2-mod-security2 libapache2-modsecurity libapache2-mod-evasive
Чтобы включить правила mod_security, скопируйте рекомендуемый конфигурационный файл mod_security, а затем отредактируйте его и установить опцию ‘SecRuleEngine‘ в On:
sudo cp /etc/modsecurity/modsecurity.conf{-recommended,} sudo vi /etc/modsecurity/modsecurity.conf
SecRuleEngine On
Кроме того, это хорошая идея, увеличить значение ‘SecRequestBodyLimit‘ до максимального размера файлов, которые вы могли бы принять загруженных на сервер, например, установить его до 32 МБ и использовать исходящую фильтрацию, чтобы сэкономить ресурсы сервера:
SecRequestBodyLimit 32768000 SecRequestBodyInMemoryLimit 32768000 SecResponseBodyAccess Off
Правила mod_security доступны в следующих каталогах:
/usr/share/modsecurity-crs/base_rules /usr/share/modsecurity-crs/optional_rules /usr/share/modsecurity-crs/experimental_rules
Чтобы включить все базовые правила CRS, создавать символические ссылки, используя следующую команду:
sudo ln -s /usr/share/modsecurity-crs/base_rules/*.conf /usr/share/modsecurity-crs/activated_rules/
Чтобы включить CRS необязательные и экспериментальные правила на файлы, которые вы хотите использовать, создавать символические ссылки под расположение каталога ‘activated_rules’.
Рекомендуется, загрузить и настроить OWASP (Open Web Project Security Application) Основной набор правил:
sudo apt-get install git sudo git clone https://github.com/SpiderLabs/owasp-modsecurity-crs.git sudo mv /usr/share/modsecurity-crs /usr/share/modsecurity-crs.bak sudo mv owasp-modsecurity-crs /usr/share/modsecurity-crs sudo mv /usr/share/modsecurity-crs/modsecurity_crs_10_setup.conf.example /usr/share/modsecurity-crs/modsecurity_crs_10_setup.conf
Измените следующие файлы:
sudo vi /usr/share/modsecurity-crs/activated_rules/modsecurity_crs_35_bad_robots.conf
строки комментариев 16, 21 и 28:
#SecRule REQUEST_HEADERS:User-Agent "@pmFromFile modsecurity_35_bad_robots.data" \ #SecRule REQUEST_HEADERS:User-Agent "@pmFromFile modsecurity_35_bad_robots.data" \ #SecRule REQUEST_HEADERS:User-Agent
sudo vi /usr/share/modsecurity-crs/activated_rules/modsecurity_crs_40_generic_attacks.conf
строка комментария 169:
#SecRule REQUEST_COOKIES|!REQUEST_COOKIES:/__utm/|!REQUEST_COOKIES:/_pk_ref/|REQUEST_COOKIES_NAMES|ARGS_NAMES|ARGS|XML:/* "@pmFromFile modsecurity_40_generic_attacks.data" \
sudo vi /usr/share/modsecurity-crs/activated_rules/modsecurity_crs_50_outbound.conf
строка комментария 101:
#SecRule RESPONSE_BODY "!@pmFromFile modsecurity_50_outbound.data" \
Настройка модуля mod_evasive:
sudo vi /etc/apache2/mods-available/mod-evasive.conf
<ifmodule mod_evasive20.c> DOSHashTableSize 3097 DOSPageCount 10 DOSSiteCount 30 DOSPageInterval 1 DOSSiteInterval 3 DOSBlockingPeriod 3600 DOSLogDir /var/log/apache2/mod_evasive.log </ifmodule>
Смотрите файл README, для получения подробной информации о различных параметрах конфигурации mod_evasive.
Создайте файл журнала для mod_evasive:
touch /var/log/apache2/mod_evasive.log sudo chown www-data:www-data /var/log/apache2/mod_evasive.log
Выполните следующую команду, чтобы включить модули Apache:
sudo a2enmod headers sudo a2enmod evasive sudo a2enmod security2
Снова запустите веб-сервер Apache2:
sudo service apache2 restart
Проверьте работу модулей mod_security и mod_evasive на сервере:
sudo apachectl -M | grep security2 security2_module (shared) sudo apachectl -M | grep evasive evasive20_module (shared)
Если у вас есть веб-сайт на основе WordPress, размещенных на вашем VPS, скорее всего, вам необходимо отключить некоторые правила mod_security. Чтобы отключить/исключить определенные правила mod_security вы можете отредактировать виртуальный хост вашего домена, определенного в файле конфигурации Apache для вашего домена, например:
<VirtualHost *:80> ServerName yourdomain.ru ServerAlias www.yourdomain.ru DocumentRoot /var/www/html/wordpress/ <Directory /> Options +FollowSymLinks AllowOverride FileInfo </Directory> <LocationMatch "/wp-admin/post.php"> SecRuleRemoveById 300016 </LocationMatch> <LocationMatch "/wp-admin/nav-menus.php"> SecRuleRemoveById 300016 </LocationMatch> <LocationMatch "(/wp-admin/|/wp-login.php)"> SecRuleRemoveById 950117 SecRuleRemoveById 950005 </LocationMatch> </VirtualHost>
Не забудьте перезапустить веб-сервер Apache для того, чтобы изменения вступили в силу, поэтому выполните следующую команду:
sudo service apache2 restart
Проверьте файл журнала /var/log/apache2/modsec_audit.log, чтобы найти правила, которые, были инициированы mod_security на вашем веб-сервере.
Вот и все. У вас теперь установлены mod_security и mod_evasive на вашем Ubuntu VPS.