Dans ce tutoriel, je vais vous montrer comment compiler la dernière version de Nginx avec libmodsecurity (Modsecurity 3.x) à NE PAS confondre avec Modsecurity 2.9. Nous intégrerons également l'ensemble de règles de base OWASP ModSecurity Core (CRS).
Libmodsecurity est une réécriture majeure de ModSecurity qui offre des performances et une stabilité améliorées. Même si Modsecurity 2.9.x était proposé pour différentes plates-formes, il favorisait vraiment le déploiement avec Apache et le déploiement avec d'autres plates-formes nécessitait diverses dépendances tierces au détriment des performances. Libmodsecurity change tout cela en étant une réécriture à partir de zéro. Vous trouverez plus d'informations sur Libmodsecurity ici.
Ce guide suppose que vous disposez déjà d'une toute nouvelle instance mise à jour d'Ubuntu 16.04 64 bits.
1. Installer les prérequis
Installer les prérequis
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 faire openssl perl pkg-config tar texi2html décompresser z ip zlib1g-dev
2. Télécharger ModSecurity
Git clone Modsecurity, contrôle et construit 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 clone le connecteur Modsecurity-nginx
cd /opt/
clone git https://github.com/SpiderLabs/ModSecurity-nginx.git
Vous devriez maintenant avoir le répertoire suivant qui contient le connecteur Modsecurity-nginx
/opt/ModSecurity-nginx
3. Télécharger Nginx
Télécharger la dernière source stable Nginx
Accédez à http://nginx.org/en/download.html et obtenez le lien vers la dernière version stable de Nginx. Au moment d'écrire ces lignes, la dernière version stable était nginx-1.12.0.tar.gz. Ajustez les instructions ci-dessous pour votre version spécifique. Télécharger et extraire
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. Configurer et installer Nginx
Configurez Nginx avec le connecteur Modsecurity-nginx et installez
./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
Le code source de ModSecurity que nous avons téléchargé précédemment inclut un exemple de fichier modsecurity.conf avec quelques paramètres recommandés. Copiez ce fichier dans le dossier avec les fichiers de configuration Nginx
cp /opt/ModSecurity/modsecurity.conf-recommended /usr/local/nginx/conf/modsecurity.conf
Créez un lien symbolique de /usr/local/nginx/sbin/nginx vers /bin/nginx
ln -s /usr/local/nginx/sbin/nginx /bin/nginx
Créez les répertoires suivants :
mkdir /usr/local/nginx/conf/sites-available
mkdir /usr/local/nginx/conf/sites-enabled
mkdir /usr/local/nginx/conf/ssl
mkdir /etc/nginx
Créer un lien symbolique vers /usr/local/nginx/conf/ssl /etc/nginx/ssl
ln -s /usr/local/nginx/conf/ssl /etc/nginx/ssl
Faites une copie de sauvegarde du fichier conf/nginx.conf
cp /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.bak
Configurez le fichier /usr/local/nginx/conf/nginx.conf
vi /usr/local/nginx/conf/nginx.conf
Recherchez et supprimez toutes les entrées commençant par "serveur {" et se terminant par l'avant-dernière accolade fermante "}". En d'autres termes, laissez la dernière accolade intacte.
Juste au-dessus de la dernière accolade, insérez ce qui suit. Cela demandera à Nginx de rechercher nos configurations de site dans le répertoire "/usr/local/nginx/conf/sites-enabled"
include /usr/local/nginx/conf/sites-enabled/*;
Ainsi, la fin du fichier devrait ressembler à celle ci-dessous (assurez-vous que le } de fermeture est présent) :
include /usr/local/nginx/conf/sites-enabled/* ;
}Activez la directive "user" en supprimant le préfixe "#" s'il est désactivé et assurez-vous qu'il est défini sur l'utilisateur "www-data" au lieu de "nobody" par défaut afin qu'il ressemble à ci-dessous :
utilisateur www-données ;Enregistrez le fichier.
Téléchargez le script d'initialisation Nginx de Jason Giedymin pour gérer le service nginx et configurez-le en tant que service
wget https://raw.github.com/JasonGiedymin/nginx-init-ubuntu/master/nginx -O /etc/init.d/nginx
chmod +x /etc/init.d/nginx
valeurs par défaut de mise à jour-rc.d nginxCe script fournit les options suivantes pour gérer le service Nginx :
# service nginx start|stop|restart|force-reload|reload|status|configtest|quietupgrade|terminate|destroy5. Installer l'ensemble de règles de base OWASP ModSecuirty
Git cloner et copier la version actuelle de l'ensemble de règles et de la configuration OWASP dans Nginx
cd /opt/
clone git 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.confConfigurer Nginx avec l'ensemble de règles de base OWASP ModSecuirty
Modifier /usr/local/nginx/conf/modsecurity.conf
vi /usr/local/nginx/conf/modsecurity.confÀ la fin du fichier, collez ce qui suit :
#Load OWASP Config
Include crs-setup.conf
#Load all other Rules
Include rules/*.conf
#Disable rule by ID from error message
#SecRuleRemoveById 920350Dans votre fichier Nginx modsecurity.conf ou vos fichiers de configuration de serveur individuels, entrez ce qui suit dans les blocs de serveur ou d'emplacement. L'exemple ci-dessous montre une combinaison d'ajout d'entrées dans les blocs de serveur et d'emplacement :
serveur {
.....
modsecurity activé ;
emplacement / {
modsecurity_rules_file /usr/local/nginx/conf/modsecurity.conf;
.....
}
}Testez votre configuration Nginx
test de configuration du service nginxS'il n'y a pas d'erreurs, rechargez ou redémarrez votre Nginx
rechargement du service nginxVous pouvez maintenant afficher le /var/log/modsec_audit.log pour tous les événements ModSecurity
tail -f /var/log/modsec_audit.logSi vous êtes satisfait, modifiez le fichier /usr/local/nginx/conf/modsecurity.conf et définissez "SecRuleEngine" de "DetectionOnly" sur "On" comme ci-dessous
SecRuleEngine activéCeci conclut ce guide.
À propos de l'auteur
Dino Edwards est un professionnel de l'informatique avec plus de 20 ans d'expérience dans les secteurs fédéral, étatique et privé. Il est également connu pour se lancer dans la programmation.
Il a tendance à écrire des guides ou des tutoriels après avoir terminé un projet particulier, principalement parce que sa mémoire est mauvaise et qu'il ne veut pas réinventer la roue s'il doit refaire le même projet.
Contactez-nous
Site Web de l'auteur
Suivre