În acest articol, vă voi explica cum să construiți un stack LEMP protejat de ModSecurity. ModSecurity este un firewall de aplicație web open-source, care este util pentru a vă proteja împotriva injecțiilor, atacurilor PHP și multe altele. Dacă doriți să configurați NGINX cu ModSecurity, continuați să citiți.
Toți pașii din acest articol necesită acces root.
Pasul 1: Instalarea condițiilor preliminare
Dacă nu executați deja ca utilizator rădăcină, escaladează-te:
/bin/su
Avem nevoie de un compilator, așa că executați următoarele pentru a vă asigura:
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'
Pentru a instala NGINX, trebuie mai întâi să obținem pachetul. Descărcați pachetul:
cd /usr/src && wget http://nginx.org/download/nginx-1.9.9.tar.gz
De asemenea, vom avea nevoie de pachetul PHP pentru stiva noastră.
wget http://us2.php.net/distributions/php-5.6.16.tar.bz2
De când instalăm ModSecurity, vom prelua sursa și o vom descărca:
wget https://www.modsecurity.org/tarball/2.9.0/modsecurity-2.9.0.tar.gz
Acum, dezlegați / dezarhivați fișierele.
tar xvf nginx-1.9.9.tar.gz
tar xvf php-5.6.16.tar.bz2
tar xvf modsecurity-2.9.0.tar.gz
Apoi, vom instala ModSecurity.
cd /usr/src/modsecurity-2.9.0 && ./configure --enable-standalone-module --disable-mlogc
make && make install
Acum că am obținut toate condițiile preliminare, să instalăm NGINX. Următorul set de comenzi sunt pentru instalarea NGINX și 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
Acum, hai să instalăm serverul MySQL.
yum install -y mysql-server
service mysqld start
mysql_secure_installation
Pentru mysql_secure_installationcomanda:
- Apăsați introduceți la primul pas al vrăjitorului de instalare.
- Introduceți Y atunci când vi se solicită dacă trebuie setată o nouă parolă rădăcină MySQL.
- Tastați o nouă parolă, confirmați tastând-o din nou.
- Apăsați Y pentru a elimina utilizatorii anonimi, nu permiteți accesul la rădăcină la MySQL, apăsând din nou pe Y.
- Apăsați Y ultima dată pentru a elimina baza de date / utilizatorul de testare.
- În sfârșit, apăsați Y pentru a salva modificările.
Un ultim lucru de instalat și acesta este PHP. În acest articol, vom instala PHP de la sursă.
Introduceți directorul sursă pentru PHP.
cd /usr/src/php-5.6.16
Acum, configurați PHP. Următoarele argumente din ./configurecomandă există pentru a putea rula aplicații precum WordPress.
./configure --with-pear=/usr/lib/pear --enable-libxml --with-pdo-mysql --with-mysqli --with-mysql --enable-mbstring --with-curl
make
make install
Instalați PHP-FPM pentru NGINX:
yum install -y php-fpm
Trebuie să instalăm PHP-FPM pe PHP, deoarece NGINX în sine nu se integrează direct cu PHP. În schimb, NGINX trece procesarea PHP la PHP-FPM pentru a executa scripturile noastre.
Bună treabă! Ați instalat condițiile preliminare.
Pasul 2: Configurarea ModSecurity / NGINX
Să începem construind un set de reguli ModSecurity. ModSecurity nu face nimic de unul singur până când îl configurați.
Prindeți regulile OWASP setate de pe site-ul lor web:
cd /usr/src && wget https://github.com/SpiderLabs/owasp-modsecurity-crs/tarball/master
tar xvf master
După ce ai descărcat setul de reguli, vom combina configurația implicită cu regulile de bază.
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
În teorie, acest lucru ar trebui să se protejeze împotriva majorității exploatărilor web. Cu toate acestea, plugin-urile / codul pe care îl instalați ar trebui să fie, de asemenea, auditate, deoarece în timp ce ModSecurity este o măsură excelentă de securitate, nu este rezistent la glonț.
Creați un director la /var/www:
mkdir /var/www
Și un director pentru gazda virtuală:
mkdir /var/www/yourwebsite.com
În cele din urmă, adăugați următoarele pentru configurația NGINX localizată la /usr/local/nginx/conf/nginx.conf. Asigurați-vă că aplicați această configurație înainte de apariția ultimului }simbol.
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;
}
}
Pasul 3: Pornirea PHP-FPM și NGINX
Acest pas este destul de simplu - tot ce trebuie să faceți este să executați următoarele comenzi.
service php-fpm start
/usr/sbin/nginx
Felicitări! Ați configurat primul dvs. site web cu NGINX protejat de ModSecurity. Pentru mai multe lecturi despre ModSecurity, vizitați site-ul lor oficial .