Compilation d’un paquet (dit Package en anglais) qui regroupe Nginx et NAXSI.
Distribution utilisé , Debian Wheezy
.
Introduction sur le paquet (logiciel)
En informatique, et en particulier dans le contexte des systèmes UNIX, on appelle paquet (ou parfois paquetage, en anglais package) une archive (fichier compressé) comprenant les fichiers informatiques, les informations et procédures nécessaires à l’installation d’un logiciel sur un système d’exploitation au sein d’un agrégat logiciel, en s’assurant de la cohérence fonctionnelle du système ainsi modifié.
Dans ce tutoriel , on utilisera le paquet debian pour recompiler les sources de la dernière version de Nginx :
D’abort, créer un répertoire (sous l’utilisateur Root
) qu’on va nommé compile.
mkdir compile
cd compile
Introduction sur l’installateur du paquet Debian (dit .deb
) .
APT fut conçu à l’origine pour fonctionner avec des paquets .deb sur des distributions Debian, mais a depuis été adapté pour fonctionner avec des paquets Red Hat Package Manager (RPM) avec l’outil apt-rpm, et pour fonctionner sur d’autres systèmes d’exploitation tels que Mac OS X (voir Fink). Sur les systèmes avec une gestion de paquets basée sur le format .deb, comme Debian, APT est une interface à dpkg, un peu comme urpmi est l’interface de rpm.
Copier les sources de la dernière version de Nginx suivant la distribution Debian, dans notre cas , Debian Wheezy
.
nano /etc/apt/sources.list
## Debian Wheezy - rétroportages deb http://ftp.fr.debian.org/debian/ wheezy-backports main deb-src http://ftp.fr.debian.org/debian/ wheezy-backports main
Mettez à jour votre liste des paquets :
Ensuite lancer la commande suivante pour effectuer la mise à jour des paquets (Package)
apt-get update
Télécharger les sources de nginx et les dépendances pour la re-construction du paquet :
apt-get source nginx
apt-get build-dep nginx
Voyons qu’elle version télécharger avec la commande ls -l
, pour lister les fichiers :
ls -l total 1704 drwxr-xr-x 10 root root 4096 oct 26 11:17 nginx-1.6.2 -rw-r--r-- 1 root root 926638 oct 13 12:05 nginx_1.6.2-2~bpo70+1.debian.tar.gz -rw-r--r-- 1 root root 2780 oct 13 12:05 nginx_1.6.2-2~bpo70+1.dsc -rw-r--r-- 1 root root 804164 sep 17 10:34 nginx_1.6.2.orig.tar.gz
Notre version de nginx est 1.6.2.
Allons dans le répertoire debian/modules
qui va nous servir à téléchargé les sources NAXSI …
cd ~/compile/nginx-1.6.2/debian/modules
… Et télécharger les sources NAXSI :
git clone https://github.com/nbs-system/naxsi Cloning into 'naxsi'... remote: Counting objects: 2685, done. remote: Total 2685 (delta 0), reused 0 (delta 0) [...]
Modifions le fichier debian/rules
:
cd ..
nano rules
Dans ce fichier, ajoutés ces 2 lignes, pour que la compilation du packet soit réalisable.
#!/usr/bin/make -f export DH_VERBOSE=1 [...] common_configure_flags := \ --with-cc-opt="$(debian_cflags)" \ --with-ld-opt="$(debian_ldflags)" \ --prefix=/usr/share/nginx \ --conf-path=/etc/nginx/nginx.conf \ --http-log-path=/var/log/nginx/access.log \ --error-log-path=/var/log/nginx/error.log \ --lock-path=/var/lock/nginx.lock \ --pid-path=/run/nginx.pid \ --http-client-body-temp-path=/var/lib/nginx/body \ --http-fastcgi-temp-path=/var/lib/nginx/fastcgi \ --http-proxy-temp-path=/var/lib/nginx/proxy \ --http-scgi-temp-path=/var/lib/nginx/scgi \ --http-uwsgi-temp-path=/var/lib/nginx/uwsgi \ --with-debug \ --with-pcre-jit \ --with-ipv6 \ --with-http_ssl_module \ --with-http_stub_status_module \ --with-http_realip_module \ --with-http_auth_request_module light_configure_flags := \ $(common_configure_flags) \ --with-http_gzip_static_module \ --without-http_browser_module \ --without-http_geo_module \ --without-http_limit_req_module \ --without-http_limit_zone_module \ --without-http_memcached_module \ --without-http_referer_module \ --without-http_scgi_module \ --without-http_split_clients_module \ --without-http_ssi_module \ --without-http_userid_module \ --without-http_uwsgi_module \ --add-module=$(MODULESDIR)/nginx-echo \ --add-module=$(MODULESDIR)/naxsi/naxsi_src full_configure_flags := \ $(common_configure_flags) \ --with-http_addition_module \ --with-http_dav_module \ --with-http_geoip_module \ --with-http_gzip_static_module \ --with-http_image_filter_module \ --with-http_spdy_module \ --with-http_sub_module \ --with-http_xslt_module \ --with-mail \ --with-mail_ssl_module \ --add-module=$(MODULESDIR)/nginx-auth-pam \ --add-module=$(MODULESDIR)/nginx-dav-ext-module \ --add-module=$(MODULESDIR)/nginx-echo \ --add-module=$(MODULESDIR)/nginx-upstream-fair \ --add-module=$(MODULESDIR)/ngx_http_substitutions_filter_module \ --add-module=$(MODULESDIR)/naxsi/naxsi_src extras_configure_flags := \ $(common_configure_flags) \ --with-http_addition_module \ --with-http_dav_module \ --with-http_flv_module \ --with-http_geoip_module \ --with-http_gzip_static_module \ --with-http_image_filter_module \ --with-http_mp4_module \ --with-http_perl_module \ --with-http_random_index_module \ --with-http_secure_link_module \ --with-http_spdy_module \ --with-http_sub_module \ --with-http_xslt_module \ --with-mail \ --with-mail_ssl_module \ --add-module=$(MODULESDIR)/headers-more-nginx-module \ --add-module=$(MODULESDIR)/nginx-auth-pam \ --add-module=$(MODULESDIR)/nginx-cache-purge \ --add-module=$(MODULESDIR)/nginx-dav-ext-module \ --add-module=$(MODULESDIR)/nginx-development-kit \ --add-module=$(MODULESDIR)/nginx-echo \ --add-module=$(MODULESDIR)/ngx-fancyindex \ --add-module=$(MODULESDIR)/nginx-http-push \ --add-module=$(MODULESDIR)/nginx-lua \ --add-module=$(MODULESDIR)/nginx-upload-progress \ --add-module=$(MODULESDIR)/nginx-upstream-fair \ --add-module=$(MODULESDIR)/ngx_http_substitutions_filter_module \ --add-module=$(MODULESDIR)/naxsi/naxsi_src %: dh $@ --with systemd [...]
Maintenant, nous allons construire nos nouveaux paquets Nginx :
cd ~/compile/nginx-1.6.2/ && dpkg-buildpackage -b
Ensuite, nous allons jeter un regard sur les paquets générés :
cd ~/compile
ls -l
total 15152 drwxr-xr-x 3 root root 4096 oct 26 11:31 . drwx------ 4 root root 4096 oct 26 10:32 .. drwxr-xr-x 10 root root 4096 oct 26 11:17 nginx-1.6.2 -rw-r--r-- 1 root root 71336 oct 26 11:31 nginx_1.6.2-2~bpo70+1_all.deb -rw-r--r-- 1 root root 3767 oct 26 11:31 nginx_1.6.2-2~bpo70+1_amd64.changes -rw-r--r-- 1 root root 926638 oct 13 12:05 nginx_1.6.2-2~bpo70+1.debian.tar.gz -rw-r--r-- 1 root root 2780 oct 13 12:05 nginx_1.6.2-2~bpo70+1.dsc -rw-r--r-- 1 root root 804164 sep 17 10:34 nginx_1.6.2.orig.tar.gz -rw-r--r-- 1 root root 85890 oct 26 11:31 nginx-common_1.6.2-2~bpo70+1_all.deb -rw-r--r-- 1 root root 83334 oct 26 11:31 nginx-doc_1.6.2-2~bpo70+1_all.deb -rw-r--r-- 1 root root 734824 oct 26 11:31 nginx-extras_1.6.2-2~bpo70+1_amd64.deb -rw-r--r-- 1 root root 5638176 oct 26 11:31 nginx-extras-dbg_1.6.2-2~bpo70+1_amd64.deb -rw-r--r-- 1 root root 520166 oct 26 11:31 nginx-full_1.6.2-2~bpo70+1_amd64.deb -rw-r--r-- 1 root root 3658710 oct 26 11:31 nginx-full-dbg_1.6.2-2~bpo70+1_amd64.deb -rw-r--r-- 1 root root 398630 oct 26 11:31 nginx-light_1.6.2-2~bpo70+1_amd64.deb -rw-r--r-- 1 root root 2550620 oct 26 11:31 nginx-light-dbg_1.6.2-2~bpo70+1_amd64.deb
Nous pouvons maintenant installer nginx avec NAXSI intégré comme suit :
dpkg --install nginx-extras_1.6.2-2~bpo70+1_amd64.deb nginx-common_1.6.2-2~bpo70+1_all.deb nginx-doc_1.6.2-2~bpo70+1_all.deb nginx_1.6.2-2~bpo70+1_all.deb
Allons voir si le module NAXSI a été construit avec succès:
nginx -V nginx version: nginx/1.6.2 TLS SNI support enabled configure arguments: --with-cc-opt='-g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2' --with-ld-opt=-Wl,-z,relro --prefix=/usr/share/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-debug --with-pcre-jit --with-ipv6 --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_auth_request_module --with-http_addition_module --with-http_dav_module --with-http_flv_module --with-http_geoip_module --with-http_gzip_static_module --with-http_image_filter_module --with-http_mp4_module --with-http_perl_module --with-http_random_index_module --with-http_secure_link_module --with-http_spdy_module --with-http_sub_module --with-http_xslt_module --with-mail --with-mail_ssl_module --add-module=/root/compile/nginx-1.6.2/debian/modules/headers-more-nginx-module --add-module=/root/compile/nginx-1.6.2/debian/modules/nginx-auth-pam --add-module=/root/compile/nginx-1.6.2/debian/modules/nginx-cache-purge --add-module=/root/compile/nginx-1.6.2/debian/modules/nginx-dav-ext-module --add-module=/root/compile/nginx-1.6.2/debian/modules/nginx-development-kit --add-module=/root/compile/nginx-1.6.2/debian/modules/nginx-echo --add-module=/root/compile/nginx-1.6.2/debian/modules/ngx-fancyindex --add-module=/root/compile/nginx-1.6.2/debian/modules/nginx-http-push --add-module=/root/compile/nginx-1.6.2/debian/modules/nginx-lua --add-module=/root/compile/nginx-1.6.2/debian/modules/nginx-upload-progress --add-module=/root/compile/nginx-1.6.2/debian/modules/nginx-upstream-fair --add-module=/root/compile/nginx-1.6.2/debian/modules/ngx_http_substitutions_filter_module --add-module=/root/compile/nginx-1.6.2/debian/modules/naxsi/naxsi_src
Configuration de NAXSI
Ajouter les 2 noms de fichiers entre http {}
et location / {}
, location ~ \.php$ {}
:
{...} http { # naxsi core rules include /etc/nginx/naxsi_core.rules; {...} } {...} location / { include /etc/nginx/nbs.rules; {...} } {...} location ~ \.php$ { include /etc/nginx/nbs.rules; {...} } {...}
Vérifier la configuration et redémarrer Nginx pour activé NAXSI :
nginx -t service nginx restart
Prochain Tutoriel , Installation de ISPConfig 3 avec intégration de Nginx / NAXSI.