Поиск по сайту:

Как установить Apache с ModSecurity на Ubuntu 22.04


На этой странице

  1. Требования
  2. Установка веб-сервера Apache
  3. Установить ModSecurity
  4. Настройка ModSecurity
  5. Установите основной набор правил OWASP
  6. Подтвердить ModSecurity
  7. Настройка Logrotate
  8. Заключение

ModSecurity — это бесплатный инструмент брандмауэра с открытым исходным кодом, поддерживаемый различными веб-серверами, такими как Apache, Nginx и IIS. Это брандмауэр на основе сигнатур, который способен блокировать несколько типов атак, включая межсайтовый скриптинг (XSS), атаки методом грубой силы и атаки с внедрением известного кода. Он предоставляет различные наборы правил, которые позволяют настраивать и настраивать безопасность вашего сервера. Он также может отслеживать веб-трафик в режиме реального времени и помогать вам обнаруживать вторжения и реагировать на них.

В этом руководстве я объясню, как настроить ModSecurity с Apache в Ubuntu 22.04.

Требования

  • Сервер под управлением Ubuntu 22.04.
  • На вашем сервере настроен пароль root.

Установите веб-сервер Apache

Прежде чем начать, вам необходимо установить последнюю версию пакета веб-сервера Apache на свой сервер. Сначала установите все необходимые зависимости с помощью следующей команды:

apt install gnupg2 software-properties-common curl wget git unzip -y

После установки всех зависимостей добавьте репозиторий Apache с помощью следующей команды:

add-apt-repository ppa:ondrej/apache2 -y

Затем обновите кэш репозитория и установите пакет Apache с помощью следующей команды:

apt update -y
apt install apache2 -y

После установки Apache вы можете перейти к следующему шагу.

Установить ModSecurity

Затем выполните следующую команду, чтобы установить модуль ModSecurity Apache:

apt install libapache2-mod-security2 -y

После установки пакета включите модуль ModSecurity с помощью следующей команды:

a2enmod security2

Затем перезапустите службу Apache, чтобы применить изменения:

systemctl restart apache2

Вы также можете проверить статус Apache с помощью следующей команды:

systemctl status apache2

Вы получите следующий вывод:

? apache2.service - The Apache HTTP Server
     Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2022-10-18 10:49:42 UTC; 4s ago
       Docs: https://httpd.apache.org/docs/2.4/
    Process: 74445 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS)
   Main PID: 74449 (apache2)
      Tasks: 55 (limit: 2242)
     Memory: 29.7M
        CPU: 229ms
     CGroup: /system.slice/apache2.service
             ??74449 /usr/sbin/apache2 -k start
             ??74450 /usr/sbin/apache2 -k start
             ??74451 /usr/sbin/apache2 -k start

Oct 18 10:49:42 ubuntu2204 systemd[1]: Starting The Apache HTTP Server...

Настроить ModSecurity

Затем отредактируйте файл конфигурации ModSecurity:

nano /etc/apache2/mods-enabled/security2.conf

Раскомментируйте следующую строку:

IncludeOptional /etc/modsecurity/*.conf

Сохраните и закройте файл, затем переименуйте файл конфигурации ModSecurity:

mv /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf

Затем отредактируйте файл конфигурации ModeSecurity:

nano /etc/modsecurity/modsecurity.conf

Измените следующие строки:

SecRuleEngine On
SecAuditLogParts ABCEFHJKZ

Сохраните и закройте файл, затем перезапустите службу Apache, чтобы изменения вступили в силу:

systemctl restart apache2

Установите основной набор правил OWASP

Чтобы защитить ваше веб-приложение от вредоносных атак, вам необходимо загрузить и установить основной набор правил OWASP на свой сервер.

Сначала загрузите последний набор правил с помощью следующей команды:

wget https://github.com/coreruleset/coreruleset/archive/v3.3.0.tar.gz

После завершения загрузки извлеките загруженный файл с помощью следующей команды:

tar xvf v3.3.0.tar.gz

Затем создайте каталог для правил и переместите извлеченные правила в этот каталог:

mkdir /etc/apache2/modsecurity-crs/
mv coreruleset-3.3.0/ /etc/apache2/modsecurity-crs

Затем перейдите в каталог правил OWASP и переименуйте файл конфигурации:

cd /etc/apache2/modsecurity-crs/coreruleset-3.3.0/
mv crs-setup.conf.example crs-setup.conf

Затем отредактируйте файл конфигурации ModSecurity и укажите путь к вашим наборам правил OWASP:

nano /etc/apache2/mods-enabled/security2.conf

Добавьте следующие строки:

IncludeOptional /etc/apache2/modsecurity-crs/coreruleset-3.3.0/crs-setup.conf
IncludeOptional /etc/apache2/modsecurity-crs/coreruleset-3.3.0/rules/*.conf

Сохраните и закройте файл, затем проверьте Apache на наличие синтаксической ошибки с помощью следующей команды:

apache2ctl -t

Если все в порядке, вы получите следующий вывод:

Syntax OK

Наконец, перезапустите службу Apache, чтобы применить конфигурацию:

systemctl restart apache2

Проверить ModSecurity

На этом этапе веб-сервер Apache настроен с ModSecurity. Теперь пришло время проверить, работает он или нет.

Откройте интерфейс командной строки и выполните следующую команду:

curl http://localhost/index.html?exec=/bin/bash

Вы должны получить ошибку 403 Forbidden:

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>403 Forbidden</title>
</head><body>
<h1>Forbidden</h1>
<p>You don't have permission to access this resource.</p>
<hr>
<address>Apache/2.4.52 (Ubuntu) Server at localhost Port 80</address>
</body></html>

Вы также можете протестировать ModSecurity с помощью следующей команды:

curl localhost?doc=/bin/ls

Вы получите следующий вывод:

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>403 Forbidden</title>
</head><body>
<h1>Forbidden</h1>
<p>You don't have permission to access this resource.</p>
<hr>
<address>Apache/2.4.52 (Ubuntu) Server at localhost Port 80</address>
</body></html>

Вы также можете проверить журнал ModSecurity для получения дополнительной информации:

tail /var/log/apache2/modsec_audit.log

Вы получите следующий вывод:

SecRule "TX:INBOUND_ANOMALY_SCORE" "@ge %{tx.inbound_anomaly_score_threshold}" "phase:5,id:980130,pass,t:none,log,noauditlog,msg:'Inbound Anomaly Score Exceeded (Total Inbound Score: %{TX.INBOUND_ANOMALY_SCORE} - SQLI=%{tx.sql_injection_score},XSS=%{tx.xss_score},RFI=%{tx.rfi_score},LFI=%{tx.lfi_score},RCE=%{tx.rce_score},PHPI=%{tx.php_injection_score},HTTP=%{tx.http_violation_score},SESS=%{tx.session_fixation_score}): individual paranoia level scores: %{TX.ANOMALY_SCORE_PL1}, %{TX.ANOMALY_SCORE_PL2}, %{TX.ANOMALY_SCORE_PL3}, %{TX.ANOMALY_SCORE_PL4}',tag:event-correlation,ver:OWASP_CRS/3.3.0"

SecAction "phase:5,id:980145,pass,t:none,nolog,noauditlog,ver:OWASP_CRS/3.3.0,setvar:tx.executing_anomaly_score=%{tx.outbound_anomaly_score_pl1},setvar:tx.executing_anomaly_score=+%{tx.outbound_anomaly_score_pl2},setvar:tx.executing_anomaly_score=+%{tx.outbound_anomaly_score_pl3},setvar:tx.executing_anomaly_score=+%{tx.outbound_anomaly_score_pl4}"

SecRule "TX:OUTBOUND_ANOMALY_SCORE" "@lt %{tx.outbound_anomaly_score_threshold}" "phase:5,id:980150,pass,t:none,log,noauditlog,msg:'Outbound Anomaly Score (Total Outbound Score: %{TX.OUTBOUND_ANOMALY_SCORE}): individual paranoia level scores: %{TX.OUTBOUND_ANOMALY_SCORE_PL1}, %{TX.OUTBOUND_ANOMALY_SCORE_PL2}, %{TX.OUTBOUND_ANOMALY_SCORE_PL3}, %{TX.OUTBOUND_ANOMALY_SCORE_PL4}',tag:event-correlation,ver:OWASP_CRS/3.3.0,chain"
#SecRule "TX:MONITOR_ANOMALY_SCORE" "@gt 1"


--c2d93508-Z--

Настроить Логротейт

Если вы используете ModSecurity на веб-сайте с высокой посещаемостью. Журнал аудита ModSecurity может очень быстро стать слишком большим. В этом случае вы можете настроить ротацию журнала аудита ModSecurity. Вы можете настроить его с помощью следующей команды:

nano /etc/logrotate.d/modsec

Добавьте следующие строки:

/var/log/apache2/modsec_audit.log
{
        rotate 31
        daily
        missingok
        compress
        delaycompress
        notifempty
}

Сохраните и закройте файл, когда закончите. Приведенный выше файл конфигурации будет каждый день менять файл журнала и сжимать его.

Заключение

В этом посте мы объяснили, как настроить ModSecurity с Apache в Ubuntu 22.04. Мы также загружаем и настраиваем набор правил OWASP с помощью ModSecurity. Ваш сайт не полностью защищен от различных типов атак. Не стесняйтесь спрашивать меня, если у вас есть какие-либо вопросы.