Перейти до змісту

Брандмауер веб-додатків (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.

  1. Отримайте доступ до поточних правил OWASP на їхньому сайті GitHub.

  2. У правій частині сторінки знайдіть випуски та натисніть тег останнього випуску.

  3. У розділі «Активи» на наступній сторінці клацніть правою кнопкою миші посилання «Вихідний код (tar.gz)» і скопіюйте посилання.

  4. На вашому сервері перейдіть до каталогу конфігурації Apache:

    cd /etc/httpd/conf
    
  5. Введіть wget і вставте своє посилання. Приклад:

    wget https://github.com/coreruleset/coreruleset/archive/refs/tags/v3.3.5.tar.gz
    
  6. Розпакуйте файл:

    tar xzvf v3.3.5.tar.gz
    

    Це створює каталог із інформацією про випуск у назві. Приклад: "coreruleset-3.3.5"

  7. Створіть символічне посилання «crs» на каталог випуску. Приклад:

    ln -s coreruleset-3.3.5/ /etc/httpd/conf/crs
    
  8. Видаліть файл tar.gz. Приклад:

    rm -f v3.3.5.tar.gz
    
  9. Скопіюйте тимчасову конфігурацію, щоб вона завантажувалася під час запуску:

    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