Βήμα 1: Εγκατάσταση των προαπαιτούμενων
Βήμα 2: Διαμόρφωση ModSecurity/NGINX
Βήμα 3: Εκκίνηση PHP-FPM και NGINX
Σε αυτό το άρθρο, θα εξηγήσω πώς να δημιουργήσετε μια στοίβα LEMP που προστατεύεται από το ModSecurity. Το ModSecurity είναι ένα τείχος προστασίας εφαρμογών ιστού ανοιχτού κώδικα που είναι χρήσιμο για προστασία από ενέσεις, επιθέσεις PHP και πολλά άλλα. Εάν θέλετε να ρυθμίσετε το NGINX με το ModSecurity, συνεχίστε να διαβάζετε.
Όλα τα βήματα σε αυτό το άρθρο απαιτούν πρόσβαση root.
Βήμα 1: Εγκατάσταση των προαπαιτούμενων
Εάν δεν εκτελείτε ήδη ως χρήστης root, κλιμακώστε τον εαυτό σας:
/bin/su
Χρειαζόμαστε έναν μεταγλωττιστή, οπότε εκτελέστε τα παρακάτω για να βεβαιωθείτε:
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'
Για να εγκαταστήσουμε το NGINX, πρέπει πρώτα να αποκτήσουμε το πακέτο. Κατεβάστε το πακέτο:
cd /usr/src && wget http://nginx.org/download/nginx-1.9.9.tar.gz
Θα χρειαστούμε επίσης το πακέτο PHP για τη στοίβα μας.
wget http://us2.php.net/distributions/php-5.6.16.tar.bz2
Εφόσον εγκαθιστούμε το ModSecurity, θα πάρουμε την πηγή και θα την κατεβάσουμε:
wget https://www.modsecurity.org/tarball/2.9.0/modsecurity-2.9.0.tar.gz
Τώρα, αποσυμπιέστε/αποσυμπιέστε τα αρχεία.
tar xvf nginx-1.9.9.tar.gz
tar xvf php-5.6.16.tar.bz2
tar xvf modsecurity-2.9.0.tar.gz
Στη συνέχεια, θα εγκαταστήσουμε το ModSecurity.
cd /usr/src/modsecurity-2.9.0 && ./configure --enable-standalone-module --disable-mlogc
make && make install
Τώρα που έχουμε αποκτήσει όλες τις προϋποθέσεις, ας εγκαταστήσουμε το NGINX. Το ακόλουθο σύνολο εντολών είναι για την εγκατάσταση του NGINX και του 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
Τώρα, ας εγκαταστήσουμε τον διακομιστή MySQL.
yum install -y mysql-server
service mysqld start
mysql_secure_installation
Για την mysql_secure_installationεντολή:
- Πατήστε enter στο πρώτο βήμα του οδηγού εγκατάστασης.
- Πληκτρολογήστε Y όταν σας ζητηθεί εάν πρέπει να οριστεί νέος κωδικός πρόσβασης root MySQL.
- Πληκτρολογήστε έναν νέο κωδικό πρόσβασης, επιβεβαιώστε πληκτρολογώντας τον ξανά.
- Πατήστε Y για να αφαιρέσετε ανώνυμους χρήστες, απαγορεύστε την απομακρυσμένη πρόσβαση root στη MySQL πατώντας ξανά το Y.
- Πατήστε Y για τελευταία φορά για να αφαιρέσετε τη δοκιμαστική βάση δεδομένων/χρήστη.
- Τέλος, πατήστε Y για να αποθηκεύσετε τις αλλαγές σας.
Ένα τελευταίο πράγμα που πρέπει να εγκαταστήσετε, και αυτό είναι η PHP. Σε αυτό το άρθρο, θα εγκαταστήσουμε την PHP από την πηγή.
Εισαγάγετε τον κατάλογο προέλευσης για την PHP.
cd /usr/src/php-5.6.16
Τώρα, ρυθμίστε τις παραμέτρους της PHP. Τα ακόλουθα ορίσματα στην ./configureεντολή υπάρχουν, ώστε να μπορείτε να εκτελέσετε εφαρμογές όπως το WordPress.
./configure --with-pear=/usr/lib/pear --enable-libxml --with-pdo-mysql --with-mysqli --with-mysql --enable-mbstring --with-curl
make
make install
Εγκατάσταση PHP-FPM για NGINX:
yum install -y php-fpm
Πρέπει να εγκαταστήσουμε το PHP-FPM πάνω από την ίδια την PHP επειδή το ίδιο το NGINX δεν ενσωματώνεται απευθείας με την PHP. Αντίθετα, το NGINX μεταβιβάζει την επεξεργασία PHP στο PHP-FPM για να εκτελέσει τα σενάρια μας.
Καλή δουλειά! Έχετε εγκαταστήσει τα προαπαιτούμενα.
Βήμα 2: Διαμόρφωση ModSecurity/NGINX
Ας ξεκινήσουμε δημιουργώντας ένα σύνολο κανόνων ModSecurity. Το ModSecurity δεν κάνει τίποτα από μόνο του μέχρι να το ρυθμίσετε.
Αποκτήστε το σύνολο κανόνων OWASP από τον ιστότοπό τους:
cd /usr/src && wget https://github.com/SpiderLabs/owasp-modsecurity-crs/tarball/master
tar xvf master
Αφού κατεβάσετε το σύνολο κανόνων, θα συνδυάσουμε την προεπιλεγμένη διαμόρφωση με τους βασικούς κανόνες.
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
Θεωρητικά, αυτό θα πρέπει να προστατεύει από τα περισσότερα web exploits. Ωστόσο, τα πρόσθετα/κώδικες που εγκαθιστάτε θα πρέπει επίσης να ελέγχονται, γιατί ενώ το ModSecurity είναι ένα εξαιρετικό μέτρο ασφαλείας, δεν είναι αλεξίσφαιρο.
Δημιουργήστε έναν κατάλογο στη διεύθυνση /var/www:
mkdir /var/www
Και ένας κατάλογος για τον εικονικό σας κεντρικό υπολογιστή:
mkdir /var/www/yourwebsite.com
Τέλος, προσθέστε τα ακόλουθα στη διαμόρφωση NGINX που βρίσκεται στο /usr/local/nginx/conf/nginx.conf. Βεβαιωθείτε ότι έχετε προσαρτήσει αυτήν τη διαμόρφωση πριν από την εμφάνιση του τελευταίου }συμβόλου.
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;
}
}
Βήμα 3: Εκκίνηση PHP-FPM και NGINX
Αυτό το βήμα είναι αρκετά απλό - το μόνο που έχετε να κάνετε είναι να εκτελέσετε τις ακόλουθες εντολές.
service php-fpm start
/usr/sbin/nginx
Συγχαρητήρια! Έχετε ρυθμίσει τον πρώτο σας ιστότοπο με NGINX που προστατεύεται από το ModSecurity. Για περαιτέρω ανάγνωση σχετικά με το ModSecurity, επισκεφτείτε τον επίσημο ιστότοπό τους .