Всем привет.
Прикрутим немного безопасности для Apache.
Ранее была заметка о чем-то подобном, но она более не актуальна. Требуется немного обновить материал.
И так…
Это для Ubuntu 22.04 и Ubuntu 24.04.
Установим модуль:
1 | sudo apt install libapache2-mod-security2 |
После чего перезапустим Apache:
1 | sudo systemctl restart apache2 |
Должно быть нечто похожее:
1 2 3 4 5 6 7 | The following additional packages will be installed: liblua5.1-0 libyajl2 modsecurity-crs Suggested packages: lua geoip-database-contrib ruby python The following NEW packages will be installed: libapache2-mod-security2 liblua5.1-0 libyajl2 modsecurity-crs 0 upgraded, 4 newly installed, 0 to remove and 0 not upgraded. |
Теперь настроим всё это великолепие.
Скачаем набор правил:
1 | wget https://github.com/coreruleset/coreruleset/archive/refs/tags/v4.10.0.tar.gz |
Распакуем полученный архив:
1 | tar xfv v4.10.0.tar.gz |
На выходе должен быть вот такой каталог — coreruleset-4.10.0/
Создадим каталог:
1 | sudo mkdir /etc/apache2/modsecurity-crs/ |
Теперь переместим каталог coreruleset-4.10.0 в /etc/apache2/modsecurity-crs:
1 | sudo mv coreruleset-4.10.0/ /etc/apache2/modsecurity-crs/ |
Перейдем в каталог и скопируем файл конфигурации:
1 2 3 | sudo cd /etc/apache2/modsecurity-crs/coreruleset-4.10.0/ sudo cp crs-setup.conf.example crs-setup.conf |
Далее отредактируем файл (предварительно не забывайте делать резервную копию):
1 | sudo nano /etc/apache2/mods-enabled/security2.conf |
1 2 3 4 5 6 7 8 9 10 11 12 13 | <IfModule security2_module> # Default Debian dir for modsecurity's persistent data SecDataDir /var/cache/modsecurity # Include all the *.conf files in /etc/modsecurity. # Keeping your local configuration in that directory # will allow for an easy upgrade of THIS file and # make your life easier IncludeOptional /etc/modsecurity/*.conf # Include OWASP ModSecurity CRS rules if installed IncludeOptional /usr/share/modsecurity-crs/*.load </IfModule> |
Надо закомментировать вот эту строку (тут комментарий уже добавлен):
1 | #IncludeOptional /usr/share/modsecurity-crs/*.load |
После неё вставьте две эти строки:
1 2 | IncludeOptional /etc/apache2/modsecurity-crs/coreruleset-4.10.0/crs-setup.conf IncludeOptional /etc/apache2/modsecurity-crs/coreruleset-4.10.0/rules/*.conf |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <IfModule security2_module> # Default Debian dir for modsecurity's persistent data SecDataDir /var/cache/modsecurity # Include all the *.conf files in /etc/modsecurity. # Keeping your local configuration in that directory # will allow for an easy upgrade of THIS file and # make your life easier IncludeOptional /etc/modsecurity/*.conf # Include OWASP ModSecurity CRS rules if installed # IncludeOptional /usr/share/modsecurity-crs/*.load IncludeOptional /etc/apache2/modsecurity-crs/coreruleset-4.10.0/crs-setup.conf IncludeOptional /etc/apache2/modsecurity-crs/coreruleset-4.10.0/rules/*.conf |
Протестируем конфигурацию Apache:
1 | sudo apache2ctl -t |
И перезапустим apache:
1 | sudo systemctl restart apache2 |
Проблемы:
После установки на одном сервере у меня там отвалился Nextcloud. В логах были такие вот записи:
1 2 3 | [Thu Jan 09 16:05:46.847093 2025] [:error] [pid 610314] [client **************] [client **************] ModSecurity: Warning. Match of "within %{tx.allowed_methods}" against "REQUEST_METHOD" required. [file "/etc/apache2/modsecurity-crs/coreruleset-4.10.0/rules/REQUEST-911-METHOD-ENFORCEMENT.conf"] [line "44"] [id "911100"] [msg "Method is not allowed by policy"] [data "PROPFIND"] [severity "CRITICAL"] [ver "OWASP_CRS/4.10.0"] [tag "application-multi"] [tag "language-multi"] [tag "platform-multi"] [tag "attack-generic"] [tag "paranoia-level/1"] [tag "OWASP_CRS"] [tag "capec/1000/210/272/220/274"] [tag "PCI/12.1"] [hostname "**************"] [uri "/remote.php/dav/files/**************/"] [unique_id "Z3_JqnUufOz-tBZIdr2JpAAAACU"] [Thu Jan 09 16:05:46.850527 2025] [:error] [pid 610314] [client 8**************] [client **************] ModSecurity: Access denied with code 403 (phase 2). Operator GE matched 5 at TX:blocking_inbound_anomaly_score. [file "/etc/apache2/modsecurity-crs/coreruleset-4.10.0/rules/REQUEST-949-BLOCKING-EVALUATION.conf"] [line "233"] [id "949110"] [msg "Inbound Anomaly Score Exceeded (Total Score: 5)"] [ver "OWASP_CRS/4.10.0"] [tag "anomaly-evaluation"] [tag "OWASP_CRS"] [hostname "**************"] [uri "/remote.php/dav/files/**************/"] [unique_id "Z3_JqnUufOz-tBZIdr2JpAAAACU"] [Thu Jan 09 16:05:46.850820 2025] [:error] [pid 610314] [client **************] [client **************] ModSecurity: Warning. Unconditional match in SecAction. [file "/etc/apache2/modsecurity-crs/coreruleset-4.10.0/rules/RESPONSE-980-CORRELATION.conf"] [line "98"] [id "980170"] [msg "Anomaly Scores: (Inbound Scores: blocking=5, detection=5, per_pl=5-0-0-0, threshold=5) - (Outbound Scores: blocking=0, detection=0, per_pl=0-0-0-0, threshold=4) - (SQLI=0, XSS=0, RFI=0, LFI=0, RCE=0, PHPI=0, HTTP=0, SESS=0, COMBINED_SCORE=5)"] [ver "OWASP_CRS/4.10.0"] [tag "reporting"] [tag "OWASP_CRS"] [hostname "**************"] [uri "/remote.php/dav/files/**************/"] [unique_id "Z3_JqnUufOz-tBZIdr2JpAAAACU"] |
ну это часть лога.
Попробуем починить.
[в процессе…]
А вот сам архив, на случай если по ссылке выше не доступен. coreruleset-4.10.0.tar
If you found an error, highlight it and press Shift + Enter or to inform us.