Брандмауер веб-додатків (WAF)¶
Передумови¶
- Веб-сервер Rocky Linux, на якому працює Apache
- Вміння працювати з редактором командного рядка (у цьому прикладі ми використовуємо vi)
- Високий рівень комфорту з видачею команд із командного рядка, переглядом журналів та іншими загальними обов’язками системного адміністратора
- Розуміння того, що встановлення цього інструменту також потребує моніторингу дій і налаштування під ваше середовище
- Користувач root виконує всі команди або звичайний користувач за допомогою
sudo
Вступ¶
mod_security
– це брандмауер веб-додатків (WAF) із відкритим кодом. Це лише одна з можливих частин посиленого веб-сервера Apache. Використовуйте його з іншими інструментами або без них.
Якщо ви бажаєте скористатися цим та іншими інструментами захисту, зверніться до посібника з надійного веб-сервера Apache. У цьому документі також використовуються всі припущення та умовності, викладені в цьому оригінальному документі. Перш ніж продовжити, варто переглянути його.
Одного не вистачає mod_security
під час встановлення із загальних репозиторіїв Rocky Linux: встановлені мінімальні правила. Щоб отримати розширеніший пакет безкоштовних правил mod_security
, ця процедура використовує OWASP mod_security
правила, які можна знайти тут. OWASP означає Open Web Application Security Project. Ви можете дізнатися більше про OWASP тут.
Підказка
Як зазначено, ця процедура використовує правила OWASP mod_security
. Не використовується конфігурація, надана цим сайтом. Цей сайт також містить чудові посібники з використання mod_security
та інших інструментів, пов’язаних із безпекою. Документ, над яким ви працюєте mow, лише допомагає встановити інструменти та правила, необхідні для захисту за допомогою mod_security
на веб-сервері Rocky Linux. Netnea — це команда технічних професіоналів, яка проводить курси безпеки на своєму веб-сайті. Значна частина цього вмісту безкоштовна, але у них є варіанти внутрішнього або групового навчання.
Встановлення mod_security
¶
Щоб встановити базовий пакет, використовуйте цю команду. Він встановить усі відсутні залежності. Вам також потрібен wget
, якщо він не встановлений:
dnf install mod_security wget
Встановлення правил mod_security
¶
Примітка
Важливо ретельно дотримуватися цієї процедури. Конфігурацію від Netnea було змінено відповідно до Rocky Linux.
-
Отримайте доступ до поточних правил OWASP на їхньому сайті GitHub.
-
У правій частині сторінки знайдіть випуски та натисніть тег останнього випуску.
-
У розділі «Активи» на наступній сторінці клацніть правою кнопкою миші посилання «Вихідний код (tar.gz)» і скопіюйте посилання.
-
На вашому сервері перейдіть до каталогу конфігурації Apache:
cd /etc/httpd/conf
-
Введіть
wget
і вставте своє посилання. Приклад:wget https://github.com/coreruleset/coreruleset/archive/refs/tags/v3.3.5.tar.gz
-
Розпакуйте файл:
tar xzvf v3.3.5.tar.gz
Це створює каталог із інформацією про випуск у назві. Приклад: "coreruleset-3.3.5"
-
Створіть символічне посилання «crs» на каталог випуску. Приклад:
ln -s coreruleset-3.3.5/ /etc/httpd/conf/crs
-
Видаліть файл
tar.gz
. Приклад:rm -f v3.3.5.tar.gz
-
Скопіюйте тимчасову конфігурацію, щоб вона завантажувалася під час запуску:
cp crs/crs-setup.conf.example crs/crs-setup.conf
Цей файл можна редагувати, але вам, імовірно, не потрібно буде вносити жодних змін.
Тепер діють правила mod_security
.
Конфігурація¶
Після встановлення правил наступним кроком буде налаштування цих правил для завантаження та запуску під час виконання httpd
і mod_security
.
mod_security
вже має файл конфігурації, розташований у /etc/httpd/conf.d/mod_security.conf
. Вам потрібно буде змінити цей файл, щоб включити правила OWASP. Для цього відредагуйте файл конфігурації:
vi /etc/httpd/conf.d/mod_security.conf
Додайте наступний вміст безпосередньо перед кінцевим тегом (</IfModule
):
Include /etc/httpd/conf/crs/crs-setup.conf
SecAction "id:900110,phase:1,pass,nolog,\
setvar:tx.inbound_anomaly_score_threshold=10000,\
setvar:tx.outbound_anomaly_score_threshold=10000"
SecAction "id:900000,phase:1,pass,nolog,\
setvar:tx.paranoia_level=1"
# === ModSec Core Rule Set: Runtime Exclusion Rules (ids: 10000-49999)
# ...
# === ModSecurity Core Rule Set Inclusion
Include /etc/httpd/conf/crs/rules/*.conf
# === ModSec Core Rule Set: Startup Time Rules Exclusions
# ...
Використовуйте Esc, щоб вийти з режиму вставки, і ++shift+двокрапка+"wq"++, щоб зберегти зміни та вийти.
Перезапустіть httpd
і перевірте mod_security
¶
Все, що вам потрібно зробити на цьому етапі, це перезапустити httpd
:
systemctl restart httpd
Переконайтеся, що служба запущена належним чином:
systemctl status httpd
Подібні записи в /var/log/httpd/error_log
покажуть, що mod_security
завантажується правильно:
[Thu Jun 08 20:31:50.259935 2023] [:notice] [pid 1971:tid 1971] ModSecurity: PCRE compiled version="8.44 "; loaded version="8.44 2020-02-12"
[Thu Jun 08 20:31:50.259936 2023] [:notice] [pid 1971:tid 1971] ModSecurity: LUA compiled version="Lua 5.4"
[Thu Jun 08 20:31:50.259937 2023] [:notice] [pid 1971:tid 1971] ModSecurity: YAJL compiled version="2.1.0"
[Thu Jun 08 20:31:50.259939 2023] [:notice] [pid 1971:tid 1971] ModSecurity: LIBXML compiled version="2.9.13"
Якщо ви отримуєте доступ до веб-сайту на сервері, ви маєте отримати запис у /var/log/httpd/modsec_audit.log
, який показує завантаження правил OWASP:
Apache-Handler: proxy:unix:/run/php-fpm/www.sock|fcgi://localhost
Stopwatch: 1686249687051191 2023 (- - -)
Stopwatch2: 1686249687051191 2023; combined=697, p1=145, p2=458, p3=14, p4=45, p5=35, sr=22, sw=0, l=0, gc=0
Response-Body-Transformed: Dechunked
Producer: ModSecurity for Apache/2.9.6 (http://www.modsecurity.org/); OWASP_CRS/3.3.4.
Server: Apache/2.4.53 (Rocky Linux)
Engine-Mode: "ENABLED"
Висновок¶
mod_security
з правилами OWASP є ще одним інструментом, який допоможе посилити веб-сервер Apache. Періодична перевірка сайту GitHub на наявність новіших правил і останньої офіційної версії є постійним етапом обслуговування, який вам потрібно робити.
Як і в інших інструментах захисту, mod_security
має потенціал хибнопозитивних відповідей, тому ви повинні підготуватися до налаштування цього інструменту для вашої установки.
Подібно до інших рішень, згаданих у посібнику з надійного веб-сервера Apache, існують інші безкоштовні та платні рішення для правил mod_security
та для що важливо, інші програми WAF доступні. Ви можете переглянути один із них на сайті Atomicorp mod_security
.
Author: Steven Spencer
Contributors: Ezequiel Bruni, Ganna Zhyrnova