Как установить Apache с ModSecurity на Ubuntu 22.04
На этой странице
- Требования
- Установка веб-сервера Apache
- Установить ModSecurity
- Настройка ModSecurity
- Установите основной набор правил OWASP
- Подтвердить ModSecurity
- Настройка Logrotate
- Заключение
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. Ваш сайт не полностью защищен от различных типов атак. Не стесняйтесь спрашивать меня, если у вас есть какие-либо вопросы.