Nginx с libmodsecurity и основным набором правил OWASP ModSecurity в Ubuntu 16.04
Это руководство существует для этих версий ОС
- Ubuntu 15.04 (Vivid Vervet)
На этой странице
- 1. Установите необходимые компоненты
- 2. Скачать ModSecurity
- 3. Скачать Nginx
- 4. Настроить и установить Nginx
- 5. Установите основной набор правил OWASP ModSecuirty
- Об авторе
В этом руководстве я покажу вам, как скомпилировать последнюю версию 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-летним опытом работы в федеральном, государственном и частном секторах. Также известно, что он увлекается программированием.
Он склонен писать руководства или инструкции после того, как закончит конкретный проект, главным образом потому, что у него плохая память, и он не хочет изобретать велосипед, если ему снова придется делать тот же проект.
Связаться