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

Как установить Nginx с ModSecurity на Ubuntu 15.04


Это руководство существует для этих версий ОС

  • Ubuntu 16.04 (Xenial Xerus)
  • Ubuntu 15.04 (Vivid Vervet)

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

  1. Предпосылки
  2. 2. Установите зависимости сборки
  3. 3. Скачать ModSecurity и Nginx
  4. 4. Установите ModSecurity и Nginx.
  5. 5. Настроить Nginx
  6. 6. Настроить ModSecurity
  7. 7. Настройка основного набора правил OWASP (CRS)
  8. 8. Тестирование
  9. Заключение
  10. Справочник

ModSecurity — это брандмауэр веб-приложений (WAF) с открытым исходным кодом для веб-сервера Apache Nginx и IIS. Этот брандмауэр прикладного уровня разработан Trustwaves SpiderLabs и выпущен под лицензией Apache License 2.0. ModSecurity защищает веб-сайты от хакеров, используя набор правил регулярных выражений для фильтрации широко известных эксплойтов, он позволяет отслеживать HTTP-трафик, вести журнал, анализировать в реальном времени и обнаруживать атаки. Доступно более 16 000 правил для обнаружения таких атак, как SQL-инъекция, межсайтовый скриптинг (XSS), включение локальных файлов, включение удаленных файлов и специальные правила для многих веб-приложений, таких как Wordpress, Joomla, Drupal и т. д.

В этом руководстве я покажу вам, как установить mod_security для быстрого веб-сервера Nginx. Я настрою ModSecurity как отдельный модуль, а затем соберу Nginx из исходного кода, чтобы включить ModSecurity.

Предпосылки

  • Сервер Ubuntu 15.04, здесь я буду использовать IP-адрес 192.168.1.106.
  • Привилегии root

Что мы будем делать в этом уроке:

  • Обновите систему и репозиторий Ubuntu 15.04.
  • Установите необходимые зависимости для сборки Nginx и ModSecurity.
  • Загрузите ModSecurity и Nginx.
  • Установите ModSecurity и Nginx.
  • Настройте Nginx.
  • Настройте ModSecurity.
  • Настройте основной набор правил OWASP (CRS).
  • Тестирование.

Все приведенные ниже команды должны выполняться от имени пользователя root. Бег:

sudo -i

чтобы стать пользователем root на вашем сервере.

1. Обновить систему и репозиторий

Прежде чем приступить к установке всех зависимостей, обновите свою систему:

apt-get update
apt-get upgrade

2. Установите зависимости сборки

Установите все пакеты, необходимые для компиляции Nginx и ModSecurity, с помощью команды apt ниже:

apt-get install git build-essential libpcre3 libpcre3-dev libssl-dev libtool autoconf apache2-prefork-dev libxml2-dev libcurl4-openssl-dev

3. Скачайте ModSecurity и Nginx

Перейдите в каталог \/usr/src/\, затем клонируйте репозиторий ModSecurity из Github:

cd /usr/src/
git clone https://github.com/SpiderLabs/ModSecurity.git modsecurity

Загрузите Nginx с помощью команды wget, здесь я буду использовать стабильную версию Nginx 1.8. Если вы хотите использовать другую версию, перейдите на страницу загрузки Nginx, чтобы получить список всех доступных выпусков.

wget http://nginx.org/download/nginx-1.8.0.tar.gz

4. Установите ModSecurity и Nginx

Теперь пришло время установить ModSecurity, перейдите в каталог /usr/src/modsecurity:

cd /usr/src/modsecurity/

И скомпилируйте ModSecurity как отдельный модуль на вашем сервере, чтобы мы могли включить его в Nginx:

./autogen.sh
./configure --enable-standalone-module --disable-mlogc
make

Теперь перейдите в каталог nginx, скомпилируйте Nginx и подключите модуль ModSecurity:

cd ../nginx-1.8.0
./configure \
  --user=www-data \
  --group=www-data \
  --with-debug \
  --with-ipv6 \
  --with-http_ssl_module \
  --add-module=/usr/src/modsecurity/nginx/modsecurity

Описание команды конфигурации:

Nginx будет работать под пользователем и группой \www-data\, и мы активируем модули debug, ipv6 и ssl . И, наконец, мы включаем модуль ModSecurity в Nginx.

Теперь установите Nginx:

make
make install

По завершении команды make install вы увидите, что Nginx установлен в каталог \/usr/local/nginx\:

cd /usr/local/nginx/

ll
drwxr-xr-x  2 root root 4096 Oct  3 07:21 conf/
drwxr-xr-x  2 root root 4096 Oct  3 07:21 html/
drwxr-xr-x  2 root root 4096 Oct  3 07:21 logs/
drwxr-xr-x  2 root root 4096 Oct  3 07:21 sbin/

5. Настройте Nginx

Отредактируйте файл конфигурации nginx с помощью vi/vim и настройте nginx для запуска под пользователем \www-data\.

cd /usr/local/nginx/
vi conf/nginx.conf

В первой строке раскомментируйте строку «пользователь» и измените пользователя на www-data:

user  www-data;

Сохранить и выйти.

Создайте символическую ссылку для двоичного файла nginx, чтобы мы могли напрямую использовать команду \nginx\.

ln -s /usr/local/nginx/sbin/nginx /bin/nginx

Далее мы создадим скрипт systemd для Nginx, который будет использоваться для запуска/остановки демона Nginx. Перейдите в каталог \/lib/systemd/system/\ и создайте новый файл \nginx.service\ с помощью vi:

cd /lib/systemd/system/
vi nginx.service

Вставьте скрипт ниже:

[Service]
Type=forking
ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/usr/local/nginx/sbin/nginx -s reload
KillStop=/usr/local/nginx/sbin/nginx -s stop

KillMode=process
Restart=on-failure
RestartSec=42s

PrivateTmp=true
LimitNOFILE=200000

[Install]
WantedBy=multi-user.target

Сохранить и выйти.

Теперь перезагрузите демон systemd, чтобы systemd загрузил наш новый служебный файл Nginx.

systemctl daemon-reload

Протестируйте конфигурацию nginx и запустите nginx с помощью команды systemctl:

nginx -t
systemctl start nginx

6. Настройте ModSecurity

Скопируйте файл конфигурации ModSecurity в каталог nginx и назовите его \modsecurity.conf\:

cp /usr/src/modsecurity/modsecurity.conf-recommended /usr/local/nginx/conf/modsecurity.conf
cp /usr/src/modsecurity/unicode.mapping /usr/local/nginx/conf/

Откройте файл modsecurity.conf в редакторе vi:

cd /usr/Local/nginx/conf/
vi modsecurity.conf

В строке 7 измените \DetectionOnly\ на \on\.

SecRuleEngine On

В строке 38 увеличьте значение \SecRequestBodyLimit\ до \100000000\.

SecRequestBodyLimit 100000000

В строке 192 измените значение \SecAuditLogType\ на \Concurrent\, закомментируйте строку SecAuditLog и раскомментируйте строку 196.

SecAuditLogType Concurrent
#SecAuditLog /var/log/modsec_audit.log

# Specify the path for concurrent audit logging.
SecAuditLogStorageDir /opt/modsecurity/var/audit/

Сохранить и выйти.

Теперь создайте новый каталог для журнала аудита ModSecurity и измените владельца на www-data.

mkdir -p /opt/modsecurity/var/audit/
chown -R www-data:www-data /opt/modsecurity/var/audit/

7. Настройте основной набор правил OWASP (CRS)

Загрузите основной набор правил OWASP с github.

cd /usr/src/
git clone https://github.com/SpiderLabs/owasp-modsecurity-crs.git

Перейдите в каталог \owasp-modsecurity-crs\ и скопируйте каталог \base_rules\ в каталог nginx.

cd owasp-modsecurity-crs
cp -R base_rules/ /usr/Local/nginx/conf/

Отредактируйте modsecurity.conf и добавьте OWASP CRS.

cd /usr/Local/nginx/conf/
vi modsecurity.conf

Перейдите в конец файла и добавьте следующую конфигурацию:

#DefaultAction
SecDefaultAction "log,deny,phase:1"

#If you want to load single rule /usr/loca/nginx/conf
#Include base_rules/modsecurity_crs_41_sql_injection_attacks.conf

#Load all Rule
Include base_rules/*.conf

#Disable rule by ID from error message (for my wordpress)
SecRuleRemoveById 981172 981173 960032 960034 960017 960010 950117 981004 960015

Сохранить и выйти.

В качестве последнего шага добавьте файл modsecurity.conf в конфигурацию Nginx, отредактировав файл \nginx.conf\.

vi conf/nginx.conf

Добавьте modsecurity.conf:

[.....]

#Enable ModSecurity ModSecurityEnabled on; ModSecurityConfig modsecurity.conf; root html; index index.php index.html index.htm;

[.....]

Сохранить и выйти.

Перезапустите Nginx, чтобы применить изменения конфигурации:

systemctl restart nginx

8. Тестирование

У меня есть сайт WordPress, работающий на Nginx и ModSecurity, он работает нормально. Для тестирования я установлю новый плагин, уязвимый для XSS и SQL-инъекций.

Вот результаты:

XSS запрещен
https://www.exploit-db.com/exploits/37107/

Доступ через браузер:

Журнал сервера:

Внедрение SQL запрещено
https://www.exploit-db.com/exploits/37560/

Доступ через браузер:

Журнал сервера:

Nginx и ModSecurity успешно.

Заключение

ModSecurity — это WAF (брандмауэр веб-приложений) с открытым исходным кодом, разработанный Trustwaves SpiderLabs для защиты ваших веб-приложений. Доступно более 16 000 правил для обнаружения таких атак, как SQL Injection, XSS, LFI, RFI и т. д. ModSecurity легко установить и он доступен в виде модуля для Apache, Nginx и IIS для Windows.

Ссылка

  • https://www.modsecurity.org/documentation.html
  • https://www.owasp.org/index.php/Category:OWASP_ModSecurity_Core_Rule_Set_Project
  • https://github.com/SpiderLabs/ModSecurity/wiki/Reference-Manual