In questo articolo, spiegherò come creare uno stack LEMP protetto da ModSecurity. ModSecurity è un firewall per applicazioni Web open source utile per proteggere da iniezioni, attacchi PHP e altro. Se desideri configurare NGINX con ModSecurity, continua a leggere.
Tutti i passaggi di questo articolo richiedono l'accesso come root.
Passaggio 1: installazione dei prerequisiti
Se non sei già in esecuzione come utente root, intensifica te stesso:
/bin/su
Abbiamo bisogno di un compilatore, quindi eseguire quanto segue per assicurarsi:
yum install -y gcc gcc-c++ pcre-devel zlib-devel openssl openssl-devel httpd-devel libxml2-devel xz-devel python-devel libcurl-devel
yum groupinstall -y 'Development Tools'
Per installare NGINX, dobbiamo prima ottenere il pacchetto. Scarica il pacchetto:
cd /usr/src && wget http://nginx.org/download/nginx-1.9.9.tar.gz
Richiederemo anche il pacchetto PHP per il nostro stack.
wget http://us2.php.net/distributions/php-5.6.16.tar.bz2
Poiché stiamo installando ModSecurity, afferreremo il sorgente e lo scariceremo:
wget https://www.modsecurity.org/tarball/2.9.0/modsecurity-2.9.0.tar.gz
Ora decomprimere / decomprimere i file.
tar xvf nginx-1.9.9.tar.gz
tar xvf php-5.6.16.tar.bz2
tar xvf modsecurity-2.9.0.tar.gz
Quindi, installeremo ModSecurity.
cd /usr/src/modsecurity-2.9.0 && ./configure --enable-standalone-module --disable-mlogc
make && make install
Ora che abbiamo ottenuto tutti i prerequisiti, installiamo NGINX. Il seguente set di comandi riguarda l'installazione di NGINX e ModSecurity.
cd /usr/src/nginx-1.9.9 && ./configure --add-module=../modsecurity-2.9.0/nginx/modsecurity/
make && make install
ln -s /usr/local/nginx/sbin/nginx /usr/sbin/nginx
Ora installiamo il server MySQL.
yum install -y mysql-server
service mysqld start
mysql_secure_installation
Per il mysql_secure_installationcomando:
- Premi invio sul primo passaggio della procedura guidata di installazione.
- Digitare Y quando viene richiesto se è necessario impostare una nuova password di root di MySQL.
- Digita una nuova password, conferma digitandola di nuovo.
- Premi Y per rimuovere utenti anonimi, impedisci l'accesso remoto remoto a MySQL premendo di nuovo Y.
- Premere Y un'ultima volta per rimuovere il database / utente di prova.
- Infine, premi Y per salvare le modifiche.
Un'ultima cosa da installare, ed è PHP. In questo articolo, installeremo PHP dal sorgente.
Immettere la directory di origine per PHP.
cd /usr/src/php-5.6.16
Ora configura PHP. I seguenti argomenti nel ./configurecomando sono lì in modo da poter eseguire applicazioni come WordPress.
./configure --with-pear=/usr/lib/pear --enable-libxml --with-pdo-mysql --with-mysqli --with-mysql --enable-mbstring --with-curl
make
make install
Installa PHP-FPM per NGINX:
yum install -y php-fpm
Dobbiamo installare PHP-FPM sopra PHP stesso perché NGINX stesso non si integra direttamente con PHP. Invece, NGINX passa l'elaborazione PHP a PHP-FPM per eseguire i nostri script.
Buon lavoro! Hai installato i prerequisiti.
Passaggio 2: configurazione di ModSecurity / NGINX
Cominciamo costruendo un set di regole ModSecurity. ModSecurity non fa nulla da solo finché non lo si configura.
Prendi il set di regole OWASP dal loro sito Web:
cd /usr/src && wget https://github.com/SpiderLabs/owasp-modsecurity-crs/tarball/master
tar xvf master
Dopo aver scaricato il set di regole, combineremo la configurazione predefinita con le regole di base.
cd SpiderLabs-owasp-modsecurity-crs-60c8bc9
cp /usr/src/modsecurity-2.9.0/modsecurity.conf-recommended /usr/local/nginx/conf/modsecurity.conf
cp /usr/src/modsecurity-2.9.0/unicode.mapping /usr/local/nginx/conf/
cat base_rules/*.conf >> /usr/local/nginx/conf/modsecurity.conf
cp base_rules/*.data /usr/local/nginx/conf
In teoria, ciò dovrebbe proteggere dalla maggior parte degli exploit Web. Tuttavia, anche i plugin / codice installati devono essere controllati, poiché mentre ModSecurity è un'eccellente misura di sicurezza, non è a prova di proiettile.
Crea una directory su /var/www:
mkdir /var/www
E una directory per il tuo host virtuale:
mkdir /var/www/yourwebsite.com
Infine, aggiungi quanto segue alla tua configurazione NGINX situata in /usr/local/nginx/conf/nginx.conf. Assicurati di aggiungere questa configurazione prima del verificarsi dell'ultimo }simbolo.
server {
listen 80;
root /var/www/yourwebsite.com;
index index.php index.html index.htm;
server_name yourwebsite.com www.yourwebsite.com;
location / {
ModSecurityEnabled on;
ModSecurityConfig /usr/local/nginx/modsecurity.conf;
}
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/var/run/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
Passaggio 3: avvio di PHP-FPM e NGINX
Questo passaggio è abbastanza semplice: tutto ciò che devi fare è eseguire i seguenti comandi.
service php-fpm start
/usr/sbin/nginx
Congratulazioni! Hai configurato il tuo primo sito Web con NGINX protetto da ModSecurity. Per ulteriori informazioni su ModSecurity, visitare il loro sito ufficiale .