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

Nginx с libmodsecurity и основным набором правил OWASP ModSecurity в Ubuntu 16.04


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

  • Ubuntu 15.04 (Vivid Vervet)

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

  1. 1. Установите необходимые компоненты
  2. 2. Скачать ModSecurity
  3. 3. Скачать Nginx
  4. 4. Настроить и установить Nginx
  5. 5. Установите основной набор правил OWASP ModSecuirty
  6. Об авторе

В этом руководстве я покажу вам, как скомпилировать последнюю версию Nginx с libmodsecurity (Modsecurity 3.x), чтобы НЕ путать с Modsecurity 2.9. Мы также будем интегрировать основной набор правил OWASP ModSecurity (CRS).

Libmodsecurity — это серьезная переработка ModSecurity, обеспечивающая улучшенную производительность и стабильность. Несмотря на то, что Modsecurity 2.9.x предлагался для разных платформ, он действительно предпочитал развертывание с Apache, а развертывание с другими платформами требовало различных сторонних зависимостей за счет производительности. Libmodsecurity меняет все это, будучи переписанным с нуля. Более подробную информацию о Libmodsecurity можно найти здесь.

В этом руководстве предполагается, что у вас уже есть новый обновленный экземпляр 64-разрядной версии Ubuntu 16.04.

1. Установите необходимые компоненты

Установите необходимые компоненты

apt-get install apache2-dev autoconf automake build-essential bzip2 checkinstall devscripts flex g++ gcc git graphicsmagick-imagemagick-compat graphicsmagick-libmagick-dev-compat libaio-dev libaio1 libass-dev libatomic-ops-dev libavcodec-dev libavdevice-dev libavfilter-dev libavformat-dev libavutil-dev libbz2-dev libcdio-cdda1 libcdio-paranoia1 libcdio13 libcurl4-openssl-dev libfaac-dev libfreetype6-dev libgd-dev libgeoip-dev libgeoip1 libgif-dev libgpac-dev libgsm1-dev libjack-jackd2-dev libjpeg-dev libjpeg-progs libjpeg8-dev liblmdb-dev libmp3lame-dev libncurses5-dev libopencore-amrnb-dev libopencore-amrwb-dev libpam0g-dev libpcre3 libpcre3-dev libperl-dev libpng12-dev libpng12-0 libpng12-dev libreadline-dev librtmp-dev libsdl1.2-dev libssl-dev libssl1.0.0 libswscale-dev libtheora-dev libtiff5-dev libtool libva-dev libvdpau-dev libvorbis-dev libxml2-dev libxslt-dev libxslt1-dev libxslt1.1 libxvidcore-dev libxvidcore4 libyajl-dev make openssl perl pkg-config tar texi2html unzip zip zlib1g-dev

2. Скачайте ModSecurity

Git клонирует Modsecurity, проверяет и собирает libmodsecurity

cd /opt/ 
git clone https://github.com/SpiderLabs/ModSecurity
cd ModSecurity
git checkout -b v3/master origin/v3/master
sh build.sh
git submodule init
git submodule update
./configure
make
make install

Git клонирует коннектор Modsecurity-nginx

cd /opt/ 
git clone https://github.com/SpiderLabs/ModSecurity-nginx.git

Теперь у вас должен быть следующий каталог, содержащий коннектор Modsecurity-nginx.

/opt/ModSecurity-nginx

3. Загрузите Nginx

Загрузите последний стабильный исходный код Nginx

Перейдите на http://nginx.org/en/download.html и получите ссылку на последнюю стабильную версию Nginx. На момент написания этой статьи последней стабильной версией был nginx-1.12.0.tar.gz. Отрегулируйте приведенные ниже инструкции для вашей конкретной версии. Скачать и извлечь

cd /opt 
wget http://nginx.org/download/nginx-1.12.0.tar.gz
tar -zxf nginx-1.12.0.tar.gz
cd nginx-1.12.0

4. Настройте и установите Nginx

Настройте Nginx с коннектором Modsecurity-nginx и установите

./configure --user=www-data --group=www-data --with-pcre-jit --with-debug --with-http_ssl_module --with-http_realip_module --add-module=/opt/ModSecurity-nginx 
make
make install

Исходный код ModSecurity, который мы скачали ранее, включает пример файла modsecurity.conf с некоторыми рекомендуемыми настройками. Скопируйте этот файл в папку с конфигурационными файлами Nginx.

cp /opt/ModSecurity/modsecurity.conf-recommended /usr/local/nginx/conf/modsecurity.conf

Создайте символическую ссылку с /usr/local/nginx/sbin/nginx на /bin/nginx

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

Создайте следующие каталоги:

mkdir /usr/local/nginx/conf/sites-available 
mkdir /usr/local/nginx/conf/sites-enabled
mkdir /usr/local/nginx/conf/ssl
mkdir /etc/nginx

Создайте символическую ссылку из /usr/local/nginx/conf/ssl /etc/nginx/ssl

ln -s /usr/local/nginx/conf/ssl /etc/nginx/ssl

Сделайте резервную копию файла conf/nginx.conf

cp /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.bak

Настройте файл /usr/local/nginx/conf/nginx.conf.

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

Найдите и удалите все записи, начинающиеся с \server {\ и заканчивающиеся предпоследней закрывающей фигурной скобкой \}\. Другими словами, оставьте последнюю фигурную скобку нетронутой.

Справа над последней фигурной скобкой вставьте следующее. Это укажет Nginx искать конфигурации нашего сайта в каталоге \/usr/local/nginx/conf/sites-enabled\.

include /usr/local/nginx/conf/sites-enabled/*;

Таким образом, конец файла должен выглядеть так, как показано ниже (убедитесь, что присутствует закрывающий }):

include /usr/local/nginx/conf/sites-enabled/*; 
}

Включите директиву \user\, удалив префикс \#\, если он отключен, и убедитесь, что для него задано значение user \www-data\ вместо никто по умолчанию, чтобы это выглядело, как показано ниже:

user www-data;

Сохраните файл.

Загрузите сценарий инициализации Jason Giedymins Nginx для управления службой nginx и настройте его как службу.

wget https://raw.github.com/JasonGiedymin/nginx-init-ubuntu/master/nginx -O /etc/init.d/nginx 
chmod +x /etc/init.d/nginx
update-rc.d nginx defaults

Этот скрипт предоставляет следующие возможности для управления службой Nginx:

# service nginx start|stop|restart|force-reload|reload|status|configtest|quietupgrade|terminate|destroy

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

Git клонируйте и скопируйте текущую версию набора правил и конфигурации OWASP в Nginx.

cd /opt/ 
git clone https://github.com/SpiderLabs/owasp-modsecurity-crs.git
cd owasp-modsecurity-crs/
cp -R rules/ /usr/local/nginx/conf/
cp /opt/owasp-modsecurity-crs/crs-setup.conf.example /usr/local/nginx/conf/crs-setup.conf

Настройка Nginx с базовым набором правил OWASP ModSecuirty

Отредактируйте /usr/local/nginx/conf/modsecurity.conf

vi /usr/local/nginx/conf/modsecurity.conf

В конце файла вставьте следующее:

#Load OWASP Config 
Include crs-setup.conf
#Load all other Rules
Include rules/*.conf
#Disable rule by ID from error message
#SecRuleRemoveById 920350

В файле Nginx modsecurity.conf или в файлах конфигурации вашего отдельного сервера введите следующее в блоках server или location. В приведенном ниже примере показано сочетание добавления записей как в сервер, так и в блоки местоположения:

server { 
.....
modsecurity on;
location / {
modsecurity_rules_file /usr/local/nginx/conf/modsecurity.conf;
.....
}
}

Проверьте свою конфигурацию Nginx

service nginx configtest

Если ошибок нет, перезагрузите или перезапустите Nginx.

service nginx reload

Теперь вы можете просмотреть /var/log/modsec_audit.log для любых событий ModSecurity.

tail -f /var/log/modsec_audit.log

Если вы удовлетворены, отредактируйте файл /usr/local/nginx/conf/modsecurity.conf и установите \SecRuleEngine\ с \DetectionOnly\ на \On\, как показано ниже.

SecRuleEngine On

Это завершает это руководство.

об авторе

Дино Эдвардс — ИТ-специалист с более чем 20-летним опытом работы в федеральном, государственном и частном секторах. Также известно, что он увлекается программированием.

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

Связаться