Πώς να εγκαταστήσετε το ModSecurity για Nginx σε CentOS 7, Debian 8 και Ubuntu 16.04

Το ModSecurity είναι μια ενότητα ανοιχτού κώδικα τείχους προστασίας διαδικτυακών εφαρμογών (WAF) που είναι ιδανική για την προστασία των Apache, Nginx και IIS από διάφορες επιθέσεις στον κυβερνοχώρο που στοχεύουν πιθανές ευπάθειες σε διάφορες εφαρμογές Ιστού

Σε αυτό το άρθρο, θα εγκαταστήσουμε και θα διαμορφώσουμε το ModSecurity για Nginx σε CentOS 7, Debian 8 και Ubuntu 16.04.

Προαπαιτούμενα

  • Μια ενημερωμένη εγκατάσταση του CentOS 7, του Debian 8 ή του Ubuntu 16.04 64-bit.
  • Σύνδεση ως root.

Βήμα 1: Ενημερώστε το σύστημα

Ακολουθώντας αυτόν τον οδηγό , ενημερώστε τον πυρήνα και τα πακέτα του διακομιστή σας στην πιο πρόσφατη διαθέσιμη έκδοση.

Βήμα 2: Εγκατάσταση εξαρτήσεων

Για να μπορέσετε να μεταγλωττίσετε το Nginx και το ModSecurity με επιτυχία, πρέπει να εγκαταστήσετε πολλά πακέτα λογισμικού ως εξής.

α) Στο CentOS 7:

yum groupinstall -y "Development Tools"
yum install -y httpd httpd-devel pcre pcre-devel libxml2 libxml2-devel curl curl-devel openssl openssl-devel
shutdown -r now

β) Στο Debian 8 ή στο Ubuntu 16.04:

apt-get install -y git build-essential libpcre3 libpcre3-dev libssl-dev libtool autoconf apache2-dev libxml2-dev libcurl4-openssl-dev automake pkgconf

Βήμα 3: Μεταγλώττιση ModSecurity

Λόγω αρκετών αστάθειών που αναφέρθηκαν στο κύριο υποκατάστημα ModSecurity για Nginx, προς το παρόν, συνιστάται επίσημα να χρησιμοποιείτε την πιο πρόσφατη έκδοση του nginx_refactoringκλάδου όποτε είναι δυνατόν.

Κατεβάστε το nginx_refactoringυποκατάστημα του ModSecurity για Nginx:

cd /usr/src
git clone -b nginx_refactoring https://github.com/SpiderLabs/ModSecurity.git

Μεταγλώττιση ModSecurity:

α) Στο CentOS 7:

cd ModSecurity
sed -i '/AC_PROG_CC/a\AM_PROG_CC_C_O' configure.ac
sed -i '1 i\AUTOMAKE_OPTIONS = subdir-objects' Makefile.am
./autogen.sh
./configure --enable-standalone-module --disable-mlogc
make

Σημείωση: οι δύο sedπαραπάνω εντολές χρησιμοποιούνται για την αποτροπή μηνυμάτων προειδοποίησης κατά τη χρήση νεότερων εκδόσεων automake.

β) Στο Debian 8 ή στο Ubuntu 16.04:

cd ModSecurity
./autogen.sh
./configure --enable-standalone-module --disable-mlogc
make

Βήμα 4: Μεταγλώττιση του Nginx

Κατεβάστε και καταργήστε την αρχειοθέτηση της πιο πρόσφατης σταθερής έκδοσης του Nginx που βρίσκεται Nginx 1.10.3τη στιγμή της σύνταξης:

cd /usr/src
wget https://nginx.org/download/nginx-1.10.3.tar.gz
tar -zxvf nginx-1.10.3.tar.gz && rm -f nginx-1.10.3.tar.gz

α) Στο CentOS 7:

Πρώτα, πρέπει να δημιουργήσετε έναν αποκλειστικό χρήστη nginxκαι μια αποκλειστική ομάδα nginxγια το Nginx:

groupadd -r nginx
useradd -r -g nginx -s /sbin/nologin -M nginx

Στη συνέχεια, μεταγλωττίστε το Nginx ενώ ενεργοποιείτε τις μονάδες ModSecurity και SSL:

cd nginx-1.10.3/
./configure --user=nginx --group=nginx --add-module=/usr/src/ModSecurity/nginx/modsecurity --with-http_ssl_module
make
make install

Τροποποιήστε τον προεπιλεγμένο χρήστη του Nginx:

sed -i "s/#user  nobody;/user nginx nginx;/" /usr/local/nginx/conf/nginx.conf

β) Στο Debian 8 ή στο Ubuntu 16.04:

Αρχικά, θα πρέπει να χρησιμοποιήσετε τον υπάρχοντα χρήστη www-dataκαι την υπάρχουσα ομάδα www-data.

Στη συνέχεια, μεταγλωττίστε το Nginx ενώ ενεργοποιείτε τις μονάδες ModSecurity και SSL:

cd nginx-1.10.3/
./configure --user=www-data --group=www-data --add-module=/usr/src/ModSecurity/nginx/modsecurity --with-http_ssl_module
make
make install

Τροποποιήστε τον προεπιλεγμένο χρήστη του Nginx:

sed -i "s/#user  nobody;/user www-data www-data;/" /usr/local/nginx/conf/nginx.conf

Μετά την επιτυχή εγκατάσταση του Nginx, τα σχετικά αρχεία θα βρίσκονται στη διεύθυνση:

nginx path prefix: "/usr/local/nginx"
nginx binary file: "/usr/local/nginx/sbin/nginx"
nginx modules path: "/usr/local/nginx/modules"
nginx configuration prefix: "/usr/local/nginx/conf"
nginx configuration file: "/usr/local/nginx/conf/nginx.conf"
nginx pid file: "/usr/local/nginx/logs/nginx.pid"
nginx error log file: "/usr/local/nginx/logs/error.log"
nginx http access log file: "/usr/local/nginx/logs/access.log"
nginx http client request body temporary files: "client_body_temp"
nginx http proxy temporary files: "proxy_temp"
nginx http fastcgi temporary files: "fastcgi_temp"
nginx http uwsgi temporary files: "uwsgi_temp"
nginx http scgi temporary files: "scgi_temp"

μπορείτε να δοκιμάσετε την εγκατάσταση με:

/usr/local/nginx/sbin/nginx -t

Εάν τίποτα δεν πάει στραβά, η έξοδος θα πρέπει να είναι:

nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

Για τη διευκόλυνσή σας, μπορείτε να ρυθμίσετε ένα αρχείο μονάδας συστήματος για το Nginx:

cat <<EOF>> /lib/systemd/system/nginx.service
[Service]
Type=forking
ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/usr/local/nginx/sbin/nginx -s reload
KillStop=/usr/local/nginx/sbin/nginx -s stop

KillMode=process
Restart=on-failure
RestartSec=42s

PrivateTmp=true
LimitNOFILE=200000

[Install]
WantedBy=multi-user.target
EOF

Προχωρώντας προς τα εμπρός, μπορείτε να ξεκινήσετε/σταματήσετε/επανεκκινήσετε το Nginx ως εξής:

systemctl start nginx.service
systemctl stop nginx.service
systemctl restart nginx.service

Βήμα 4: Διαμόρφωση ModSecurity και Nginx

4.1 Διαμόρφωση Nginx:

vi /usr/local/nginx/conf/nginx.conf

Βρείτε το ακόλουθο τμήμα μέσα στο http {}τμήμα:

location / {
    root   html;
    index  index.html index.htm;
}

Εισαγάγετε τις παρακάτω γραμμές στο location / {}τμήμα:

ModSecurityEnabled on;
ModSecurityConfig modsec_includes.conf;
#proxy_pass http://localhost:8011;
#proxy_read_timeout 180s;

Το τελικό αποτέλεσμα θα πρέπει να είναι:

location / {
    ModSecurityEnabled on;
    ModSecurityConfig modsec_includes.conf;
    #proxy_pass http://localhost:8011;
    #proxy_read_timeout 180s;
    root   html;
    index  index.html index.htm;
}

Αποθήκευση και έξοδος:

:wq!

Σημείωση: Η παραπάνω διαμόρφωση Nginx είναι μόνο ένα δείγμα διαμόρφωσης για τη χρήση του Nginx ως διακομιστή ιστού και όχι αντίστροφου διακομιστή μεσολάβησης. Εάν χρησιμοποιείτε το Nginx ως αντίστροφο διακομιστή μεσολάβησης, αφαιρέστε τον #χαρακτήρα στις δύο τελευταίες γραμμές και κάντε τις κατάλληλες τροποποιήσεις σε αυτές.

4.2 Δημιουργήστε ένα αρχείο με το όνομα /usr/local/nginx/conf/modsec_includes.conf:

cat <<EOF>> /usr/local/nginx/conf/modsec_includes.conf
include modsecurity.conf
include owasp-modsecurity-crs/crs-setup.conf
include owasp-modsecurity-crs/rules/*.conf
EOF

Σημείωση: Η παραπάνω διαμόρφωση θα εφαρμόσει όλους τους βασικούς κανόνες του OWASP ModSecurity στον owasp-modsecurity-crs/rules/κατάλογο. Εάν θέλετε να εφαρμόσετε μόνο επιλεκτικούς κανόνες, θα πρέπει να αφαιρέσετε τη include owasp-modsecurity-crs/rules/*.confγραμμή και, στη συνέχεια, να καθορίσετε τους ακριβείς κανόνες που χρειάζεστε μετά το βήμα 4.5.

4.3 Εισαγωγή αρχείων διαμόρφωσης ModSecurity:

cp /usr/src/ModSecurity/modsecurity.conf-recommended /usr/local/nginx/conf/modsecurity.conf
cp /usr/src/ModSecurity/unicode.mapping /usr/local/nginx/conf/

4.4 Τροποποίηση του /usr/local/nginx/conf/modsecurity.confαρχείου:

sed -i "s/SecRuleEngine DetectionOnly/SecRuleEngine On/" /usr/local/nginx/conf/modsecurity.conf

4.5 Προσθήκη αρχείων OWASP ModSecurity CRS (Core Rule Set):

cd /usr/local/nginx/conf
git clone https://github.com/SpiderLabs/owasp-modsecurity-crs.git
cd owasp-modsecurity-crs
mv crs-setup.conf.example crs-setup.conf
cd rules
mv REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf.example REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf
mv RESPONSE-999-EXCLUSION-RULES-AFTER-CRS.conf.example RESPONSE-999-EXCLUSION-RULES-AFTER-CRS.conf

Βήμα 5: Δοκιμάστε το ModSecurity

Ξεκινήστε το Nginx:

systemctl start nginx.service

Ανοίξτε τη θύρα 80 για να επιτρέψετε την εξωτερική πρόσβαση:

α) Στο CentOS 7:

firewall-cmd --zone=public --permanent --add-service=http
firewall-cmd --reload

β) Στο Debian 8:

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
touch /etc/iptables
iptables-save > /etc/iptables

γ) Στο Ubuntu 16.04:

ufw allow OpenSSH
ufw allow 80
ufw default deny
ufw enable    

Κατευθύνετε το πρόγραμμα περιήγησής σας στο:

http://203.0.113.1/?param="><script>alert(1);</script>

Χρησιμοποιήστε το grepγια να λάβετε μηνύματα σφάλματος ως εξής:

grep error /usr/local/nginx/logs/error.log

Η έξοδος θα πρέπει να περιλαμβάνει πολλά μηνύματα σφάλματος παρόμοια με:

2017/02/15 14:07:54 [error] 10776#0: [client 104.20.23.240] ModSecurity: Warning. detected XSS using libinjection. [file "/usr/local/nginx/conf/owasp-modsecurity-crs/rules/REQUEST-941-APPLICATION-ATTACK-XSS.conf"] [line "56"] [id "941100"] [rev "2"] [msg "XSS Attack Detected via libinjection"] [data "Matched Data:  found within ARGS:param: \x22><script>alert(1);</script>"] [severity "CRITICAL"] [ver "OWASP_CRS/3.0.0"] [maturity "1"] [accuracy "9"] [tag "application-multi"] [tag "language-multi"] [tag "platform-multi"] [tag "attack-xss"] [tag "OWASP_CRS/WEB_ATTACK/XSS"] [tag "WASCTC/WASC-8"] [tag "WASCTC/WASC-22"] [tag "OWASP_TOP_10/A3"] [tag "OWASP_AppSensor/IE1"] [tag "CAPEC-242"] [hostname ""] [uri "/index.html"] [unique_id "ATAcAcAkucAchGAcPLAcAcAY"]

Αυτό είναι. Όπως βλέπετε, η ενότητα ModSecurity καταγράφει με επιτυχία αυτήν την επίθεση σύμφωνα με την προεπιλεγμένη πολιτική ενεργειών της. Εάν θέλετε να κάνετε περισσότερες προσαρμοσμένες ρυθμίσεις, ελέγξτε προσεκτικά και επεξεργαστείτε /usr/local/nginx/conf/modsecurity.confκαι /usr/local/nginx/conf/owasp-modsecurity-crs/crs-setup.confαρχεία.

Αφήστε ένα σχόλιο

The Rise of Machines: Real World Applications of AI

The Rise of Machines: Real World Applications of AI

Η Τεχνητή Νοημοσύνη δεν είναι στο μέλλον, είναι εδώ ακριβώς στο παρόν Σε αυτό το blog Διαβάστε πώς οι εφαρμογές Τεχνητής Νοημοσύνης έχουν επηρεάσει διάφορους τομείς.

Επιθέσεις DDOS: Μια σύντομη επισκόπηση

Επιθέσεις DDOS: Μια σύντομη επισκόπηση

Είστε επίσης θύμα των επιθέσεων DDOS και έχετε μπερδευτεί σχετικά με τις μεθόδους πρόληψης; Διαβάστε αυτό το άρθρο για να λύσετε τις απορίες σας.

Έχετε αναρωτηθεί ποτέ πώς κερδίζουν χρήματα οι χάκερ;

Έχετε αναρωτηθεί ποτέ πώς κερδίζουν χρήματα οι χάκερ;

Μπορεί να έχετε ακούσει ότι οι χάκερ κερδίζουν πολλά χρήματα, αλλά έχετε αναρωτηθεί ποτέ πώς κερδίζουν τέτοια χρήματα; ας συζητήσουμε.

Επαναστατικές εφευρέσεις από την Google που θα σας φέρουν εύκολη στη ζωή.

Επαναστατικές εφευρέσεις από την Google που θα σας φέρουν εύκολη στη ζωή.

Θέλετε να δείτε επαναστατικές εφευρέσεις της Google και πώς αυτές οι εφευρέσεις άλλαξαν τη ζωή κάθε ανθρώπου σήμερα; Στη συνέχεια, διαβάστε στο blog για να δείτε τις εφευρέσεις της Google.

Friday Essential: Τι συνέβη με τα αυτοκίνητα που κινούνται με AI;

Friday Essential: Τι συνέβη με τα αυτοκίνητα που κινούνται με AI;

Η ιδέα των αυτοκινούμενων αυτοκινήτων να βγαίνουν στους δρόμους με τη βοήθεια της τεχνητής νοημοσύνης είναι ένα όνειρο που έχουμε εδώ και καιρό. Όμως, παρά τις πολλές υποσχέσεις, δεν φαίνονται πουθενά. Διαβάστε αυτό το blog για να μάθετε περισσότερα…

Τεχνολογική μοναδικότητα: Ένα μακρινό μέλλον του ανθρώπινου πολιτισμού;

Τεχνολογική μοναδικότητα: Ένα μακρινό μέλλον του ανθρώπινου πολιτισμού;

Καθώς η Επιστήμη εξελίσσεται με γρήγορους ρυθμούς, αναλαμβάνοντας πολλές από τις προσπάθειές μας, αυξάνονται και οι κίνδυνοι να υποβάλλουμε τον εαυτό μας σε μια ανεξήγητη Ιδιότητα. Διαβάστε τι σημαίνει η μοναδικότητα για εμάς.

Λειτουργίες Αρχιτεκτονικών Επιπέδων Αναφοράς Μεγάλων Δεδομένων

Λειτουργίες Αρχιτεκτονικών Επιπέδων Αναφοράς Μεγάλων Δεδομένων

Διαβάστε το ιστολόγιο για να μάθετε διαφορετικά επίπεδα στην Αρχιτεκτονική Μεγάλων Δεδομένων και τις λειτουργίες τους με τον απλούστερο τρόπο.

Εξέλιξη της αποθήκευσης δεδομένων – Infographic

Εξέλιξη της αποθήκευσης δεδομένων – Infographic

Οι μέθοδοι αποθήκευσης των δεδομένων εξελίσσονται μπορεί να είναι από τη γέννηση των Δεδομένων. Αυτό το ιστολόγιο καλύπτει την εξέλιξη της αποθήκευσης δεδομένων με βάση ένα infographic.

6 εκπληκτικά οφέλη από την ύπαρξη έξυπνων οικιακών συσκευών στη ζωή μας

6 εκπληκτικά οφέλη από την ύπαρξη έξυπνων οικιακών συσκευών στη ζωή μας

Σε αυτόν τον ψηφιακό κόσμο, οι έξυπνες οικιακές συσκευές έχουν γίνει κρίσιμο μέρος της ζωής. Ακολουθούν μερικά εκπληκτικά οφέλη των έξυπνων οικιακών συσκευών σχετικά με το πώς κάνουν τη ζωή μας να αξίζει και να απλοποιείται.

Η ενημέρωση του συμπληρώματος macOS Catalina 10.15.4 προκαλεί περισσότερα προβλήματα από την επίλυση

Η ενημέρωση του συμπληρώματος macOS Catalina 10.15.4 προκαλεί περισσότερα προβλήματα από την επίλυση

Πρόσφατα, η Apple κυκλοφόρησε το macOS Catalina 10.15.4 μια συμπληρωματική ενημέρωση για την επιδιόρθωση προβλημάτων, αλλά φαίνεται ότι η ενημέρωση προκαλεί περισσότερα προβλήματα που οδηγούν σε bricking των μηχανών mac. Διαβάστε αυτό το άρθρο για να μάθετε περισσότερα