ModSecurity – это мощный инструмент, предназначенный для защиты веб-приложений от различных атак, таких как SQL-инъекции (SQLi), кросс-сайтовый скриптинг (XSS), инъекции кода и других видов вредоносных действий.
Он представляет из себя модуль для таких веб-серверов, как Apache, Nginx и других, и предоставляет механизм обнаружения и предотвращения атак на основе образцов или сигнатур. ModSecurity анализирует HTTP-трафик, проверяет его на наличие угроз безопасности и блокирует запросы, которые соответствуют известным атакам или паттернам поведения, установленным администратором.
Этот инструмент также предоставляет гибкие настройки, которые позволяют администраторам настраивать правила и фильтры для обеспечения безопасности веб-приложений, что делает его важным компонентом в области веб-безопасности.
В статье разберём установку и первоначальную настройку ModSecurity для защиты Apache на VPS, который работает под управлением Ubuntu Server 22.04.
Установка ModSecurity
В данном разделе мы на наш тестовый сервер установим Apache и ModSecurity. Для начала подключитесь по SSH к вашему VDS с использованием пользователя, имеющего полномочия администратора, но не являющегося учётной записью root. Затем запустите обновление индексов пакетов:
$ sudo apt update
После чего, при помощи следующей команды установите веб-сервер Apache:
$ sudo apt install apache2
Поскольку ModSecurity доступен для установки из дефолтного репозитория Ubuntu, для его инсталляции также можно использовать утилиту apt
:
$ sudo apt install libapache2-mod-security2
Чтобы запустить установленный модуль ModSecurity, выполните в командной строке:
$ sudo a2enmod security2
Теперь, для того, чтобы применить данное изменение, перезапустите веб-сервер:
$ sudo systemctl restart apache2
Первоначальная настройка ModSecurity
На данном шаге перейдите в каталог /etc/apache2/mods-enabled/
, после чего откройте для редактирования файл security2.conf
:
$ cd /etc/apache2/mods-enabled/
$ sudo nano security2.conf
Здесь необходимо убедиться, что файл содержит следующую строку:
IncludeOptional /etc/modsecurity/*.conf
Данная строка описывает, где будут храниться конфигурационные файлы Modsecurity. Перейдите в данную директорию, после чего файл modsecurity.conf-recommended
переименуйте в modsecurity.conf
:
$ cd /etc/modsecurity/
$ sudo mv modsecurity.conf-recommended modsecurity.conf
Далее, откройте данный файл для редактирования:
$ sudo nano modsecurity.conf
В файле отыщите строку:
SecRuleEngine DetectionOnly
И приведите её к виду:
SecRuleEngine On
Теперь найдите строку, содержащую настройки уровней данных, которые будут отображаться в журналах аудита.
SecAuditLogParts ABDEFHIJZ
Эту строку также необходимо изменить. Оптимально настройки отображаемой в логах информации выглядят следующим образом:
SecAuditLogParts ABCEFHJKZ
По окончании редактирования сохраните конфигурационный файл и закройте его.
Затем перезапустите веб-сервер для того, чтобы внесённые изменения вступили в силу:
$ sudo systemctl restart apache2
Установка базового набора правил
Как мы уже говорили выше, ModSecurity защищает ваши веб-приложения при помощи правил для обнаружения и блокировки вредоносных агентов. Базовый набор OWASP ModSecurity Core Rule Set (CRS) – это стандартный комплекс, используемых в ModSecurity правил. Он может быть интегрирован с проектом Honeypot и содержит правила, позволяющие остановить векторы командных атак, включая SQL-инъекции, межсайтовый скриптинг и многие другие, которые могут быть использованы для обнаружения ботов и идентификации используемых сканеров.
При установке ModSecurity из стандартного репозитория Ubuntu вместе с ним инсталлируется также пакет modsecurity-crs. Он, в свою очередь, включает в себя базовый набор правил OWASP версии 3.x. Загрузить актуальный релиз CRS OWASP можно с его страницы на GitHub. Для загрузки набора правил версии, например, 3.3.2 в директорию /tmp/
используйте следующие команды:
$ cd /tmp/
$ wget https://github.com/coreruleset/coreruleset/archive/refs/tags/v3.3.2.tar.gz
Если в вашей системе не установлена утилита wget
, то необходимо проинсталлировать её из стандартного репозитория Ubuntu:
$ sudo apt install wget
Затем разархивируйте загруженный файл:
$ tar xvf v3.3.2.tar.gz
Теперь для сохранения файлов CRS создайте каталог modsecurity-crs
:
$ sudo mkdir /etc/apache2/modsecurity-crs/
После чего переместите в него содержимое распакованного архива:
$ sudo mv coreruleset-3.3.2/ /etc/apache2/modsecurity-crs/
На следующем шаге перейдите в директорию coreruleset-3.3.2/
и создайте там файл конфигурации CRS с использованием файла-примера:
$ cd /etc/apache2/modsecurity-crs/coreruleset-3.3.2/
$ sudo mv crs-setup.conf.example crs-setup.conf
Далее откройте для редактирования файл security2.conf
из директории /etc/apache2/mods-enabled/
:
$ cd /etc/apache2/mods-enabled/
$ sudo nano security2.conf
В файле найдите и удалите следующую строку:
IncludeOptional /usr/share/modsecurity-crs/*.load
Вместо удалённой строки перед тегом </IfModule>
добавьте следующий текст:
IncludeOptional /etc/apache2/modsecurity-crs/coreruleset-3.3.2/crs-setup.conf
IncludeOptional /etc/apache2/modsecurity-crs/coreruleset-3.3.2/rules/*.conf
Затем закройте файл с сохранением внесённых изменений. После чего протестируйте Apache командой:
$ sudo apache2ctl -t
И наконец, для применения новых настроек перезапустите веб-сервер:
$ sudo systemctl restart apache2
Проверка настроек ModSecurity
Для того, чтобы протестировать работу ModSecurity, запустите простейшую атаку на свой сайт с использованием SQLi. Сделать это можно набрав в браузере следующий URL:
your-domain.host/?id=3 or 'a'='a'
Здесь, your-domain.host
– доменное имя вашего сайта, вместо которого вы можете использовать его IP-адрес.
При проведении имитации атаки анализ журнала /var/log/apache2/modsec_audit.log
показывает, что ModSecurity выявил и после чего заблокировал атаку применив OWASP CRS v3.3.2. Информацию об этом можно получить исходя из наличия соответствующих записей в разделе H.
Заключение
Как вы убедились, установка ModSecurity для защиты веб-сервера Apache на Ubuntu 22.04 представляет собой относительно простую процедуру, которая может быть выполнена путем установки соответствующих пакетов и настройки конфигурационных файлов. При необходимости вы можете самостоятельно изучить настройку правил и фильтров в ModSecurity, что позволит вам дополнительно усилить защиту сервера, адаптируя её под конкретные потребности ваших веб-приложений. Использование данного инструмента обеспечивает уровень безопасности, необходимый для защиты от вредоносных атак, делая его важным компонентом в области веб-безопасности для систем, работающих в том числе под управлением операционных систем семейства Ubuntu.