Εγκατάσταση
Χρήση ModSecurity
Τροποποίηση συνόλου κανόνων/απενεργοποίηση αναγνωριστικού κανόνα
Το ModSecurity είναι ένα τείχος προστασίας επιπέδου εφαρμογών ιστού που έχει σχεδιαστεί για να λειτουργεί με τις υπηρεσίες IIS, Apache2 και Nginx. Είναι δωρεάν λογισμικό ανοιχτού κώδικα που κυκλοφορεί με την άδεια Apache 2.0. Το ModSecurity βοηθά στην ασφάλεια του διακομιστή ιστού σας παρακολουθώντας και αναλύοντας την επισκεψιμότητα του ιστότοπού σας. Αυτό το κάνει σε πραγματικό χρόνο για να ανιχνεύσει και να αποκλείσει επιθέσεις από τα περισσότερα γνωστά exploit χρησιμοποιώντας κανονικές εκφράσεις. Από μόνο του, το ModSecurity παρέχει περιορισμένη προστασία και βασίζεται σε σύνολα κανόνων για τη μεγιστοποίηση της προστασίας.
Το Σετ βασικών κανόνων για το Open Web Application Project (OWASP) είναι ένα σύνολο γενικών κανόνων ανίχνευσης επιθέσεων που παρέχουν ένα βασικό επίπεδο προστασίας για οποιαδήποτε εφαρμογή Ιστού. Το σύνολο κανόνων είναι δωρεάν, ανοιχτού κώδικα και επί του παρόντος χορηγείται από την Spider Labs.
Το OWASP CRS παρέχει:
- Προστασία HTTP - ανίχνευση παραβιάσεων του πρωτοκόλλου HTTP και μιας τοπικά καθορισμένης πολιτικής χρήσης.
- Αναζητήσεις μαύρης λίστας σε πραγματικό χρόνο - χρησιμοποιεί τη φήμη IP τρίτου μέρους.
- HTTP Denial of Service Protection - άμυνα από πλημμύρες HTTP και αργές επιθέσεις HTTP DoS.
- Common Web Attacks Protection - ανίχνευση κοινών επιθέσεων ασφαλείας εφαρμογών Ιστού.
- Ανίχνευση Αυτοματισμού - Ανίχνευση bots, ανιχνευτών, σαρωτών και άλλης επιφανειακής κακόβουλης δραστηριότητας.
- Ενσωμάτωση με τη σάρωση AV για μεταφορτώσεις αρχείων - εντοπίζει κακόβουλα αρχεία που μεταφορτώνονται μέσω της εφαρμογής Ιστού.
- Tracking Sensitive Data - Παρακολουθεί τη χρήση της πιστωτικής κάρτας και αποκλείει τις διαρροές.
- Trojan Protection - Ανιχνεύει δούρειους ίππους.
- Προσδιορισμός ελαττωμάτων εφαρμογής - ειδοποιήσεις για εσφαλμένες ρυθμίσεις παραμέτρων εφαρμογής.
- Εντοπισμός και απόκρυψη σφαλμάτων - Απόκρυψη μηνυμάτων σφάλματος που αποστέλλονται από τον διακομιστή.
Εγκατάσταση
Αυτός ο οδηγός σάς δείχνει πώς να εγκαταστήσετε το σύνολο κανόνων ModSecurity και OWASP στο CentOS 6 που εκτελεί Apache 2.
Αρχικά, πρέπει να βεβαιωθείτε ότι το σύστημά σας είναι ενημερωμένο.
yum -y update
Εάν δεν έχετε εγκαταστήσει το Apache 2, εγκαταστήστε το τώρα.
yum -y install httpd
Τώρα πρέπει να εγκαταστήσετε ορισμένες εξαρτήσεις για να λειτουργήσει το ModSecurity. Ανάλογα με τη διαμόρφωση του διακομιστή σας, ορισμένα ή όλα αυτά τα πακέτα ενδέχεται να είναι ήδη εγκατεστημένα. Το Yum θα εγκαταστήσει τα πακέτα που δεν έχετε και θα σας ενημερώσει εάν κάποιο από τα πακέτα είναι ήδη εγκατεστημένο.
yum -y install httpd-devel git gcc make libxml2 pcre-devel libxml2-devel curl-devel
Αλλάξτε τον κατάλογο και κατεβάστε τον πηγαίο κώδικα από τον ιστότοπο του ModSecuity. Η τρέχουσα σταθερή έκδοση είναι 2.8.
cd /opt/
wget https://www.modsecurity.org/tarball/2.8.0/modsecurity-2.8.0.tar.gz
Εξαγάγετε το πακέτο και αλλάξτε στον κατάλογό του.
tar xzfv modsecurity-2.8.0.tar.gz
cd modsecurity-2.8.0
Διαμορφώστε και μεταγλωττίστε τον πηγαίο κώδικα.
./configure
make
make install
Αντιγράψτε την προεπιλεγμένη διαμόρφωση ModSecurity και το αρχείο αντιστοίχισης unicode στον κατάλογο Apache.
cp modsecurity.conf-recommended /etc/httpd/conf.d/modsecurity.conf
cp unicode.mapping /etc/httpd/conf.d/
Ρυθμίστε τις παραμέτρους του Apache για χρήση του ModSecurity. Υπάρχουν 2 τρόποι με τους οποίους μπορείτε να το κάνετε αυτό.
echo LoadModule security2_module modules/mod_security2.so >> /etc/httpd/conf/httpd.conf
... ή χρησιμοποιήστε ένα πρόγραμμα επεξεργασίας κειμένου όπως το nano:
nano /etc/httpd/conf/httpd.conf
Στο κάτω μέρος αυτού του αρχείου, σε ξεχωριστή γραμμή προσθέστε αυτό:
LoadModule security2_module modules/mod_security2.so
Τώρα μπορείτε να ξεκινήσετε το Apache και να το ρυθμίσετε ώστε να ξεκινά από την εκκίνηση.
service httpd start
chkconfig httpd on
Εάν είχατε εγκατεστημένο το Apache πριν χρησιμοποιήσετε αυτόν τον οδηγό, τότε απλά πρέπει να τον επανεκκινήσετε.
service httpd restart
Τώρα μπορείτε να κάνετε λήψη του βασικού συνόλου κανόνων OWASP.
cd /etc/httpd
git clone https://github.com/SpiderLabs/owasp-modsecurity-crs.git
Τώρα διαμορφώστε το σύνολο κανόνων OWASP.
cd modsecurity-crs
cp modsecurity_crs_10_setup.conf.example modsecurity_crs_10_config.conf
Στη συνέχεια, πρέπει να προσθέσετε το σύνολο κανόνων στη διαμόρφωση του Apache. Και πάλι μπορούμε να το κάνουμε αυτό με δύο τρόπους.
echo Include modsecurity-crs/modsecurity_crs_10_config.conf >> /etc/httpd/conf/httpd.conf
echo Include modsecurity-crs/base_rules/*.conf >> /etc/httpd/conf/httpd.conf
... ή με ένα πρόγραμμα επεξεργασίας κειμένου:
nano /etc/httpd/conf/httpd.conf
Στο κάτω μέρος του αρχείου σε ξεχωριστές γραμμές προσθέστε αυτό:
Include modsecurity-crs/modsecurity_crs_10_config.conf
Include modsecurity-crs/base_rules/*.conf
Τώρα επανεκκινήστε τον Apache.
service httpd restart
Τέλος, διαγράψτε τα αρχεία εγκατάστασης.
yum erase /opt/modsecurity-2.8.0
yum erase /opt/modsecurity-2.8.0.tar.gz
Χρήση ModSecurity
Από προεπιλογή, το ModSecurity εκτελείται σε λειτουργία μόνο εντοπισμού, πράγμα που σημαίνει ότι θα καταγράφει όλες τις διακοπές κανόνων, αλλά δεν θα προβεί σε καμία ενέργεια. Αυτό συνιστάται για νέες εγκαταστάσεις, ώστε να μπορείτε να παρακολουθείτε τα συμβάντα που δημιουργούνται στο αρχείο καταγραφής σφαλμάτων του Apache. Αφού ελέγξετε το αρχείο καταγραφής, μπορείτε να αποφασίσετε εάν θα πρέπει να γίνει οποιαδήποτε τροποποίηση στο σύνολο κανόνων ή απενεργοποίηση του κανόνα (δείτε παρακάτω) πριν μεταβείτε σε λειτουργία προστασίας.
Για να προβάλετε το αρχείο καταγραφής σφαλμάτων Apache:
cat /var/log/httpd/error_log
Η γραμμή ModSecurity στο αρχείο καταγραφής σφαλμάτων Apache χωρίζεται σε εννέα στοιχεία. Κάθε στοιχείο παρέχει πληροφορίες σχετικά με το γιατί ενεργοποιήθηκε το συμβάν.
- Το πρώτο μέρος λέει ποιο αρχείο κανόνων ενεργοποίησε αυτό το συμβάν.
- Το δεύτερο μέρος λέει σε ποια γραμμή στο αρχείο κανόνων ξεκινάει ο κανόνας.
- Το τρίτο στοιχείο σάς λέει ποιος κανόνας ενεργοποιήθηκε.
- Το τέταρτο στοιχείο σας λέει την αναθεώρηση του κανόνα.
- Το πέμπτο στοιχείο περιέχει ειδικά δεδομένα για σκοπούς εντοπισμού σφαλμάτων.
- Το έκτο στοιχείο ορίζει τη σοβαρότητα καταγραφής αυτής της σοβαρότητας συμβάντος.
- Η έβδομη ενότητα περιγράφει ποια ενέργεια συνέβη και σε ποια φάση συνέβη.
Σημειώστε ότι ορισμένα στοιχεία ενδέχεται να απουσιάζουν ανάλογα με τη διαμόρφωση του διακομιστή σας.
Για να αλλάξετε το ModSecurity σε λειτουργία προστασίας, ανοίξτε το αρχείο conf σε ένα πρόγραμμα επεξεργασίας κειμένου:
nano /etc/httpd/conf.d/modsecurity.conf
... και αλλάξτε:
SecRuleEngine DetectionOnly
προς το:
SecRuleEngine On
Εάν συναντήσετε κανένα μπλοκ όταν εκτελείται το ModSecurity, τότε πρέπει να προσδιορίσετε τον κανόνα στο αρχείο καταγραφής σφαλμάτων HTTP. Η εντολή "ουρά" σάς επιτρέπει να παρακολουθείτε τα αρχεία καταγραφής σε πραγματικό χρόνο:
tail -f /var/log/httpd/error_log
Επαναλάβετε την ενέργεια που προκάλεσε το μπλοκ ενώ παρακολουθείτε το αρχείο καταγραφής.
Τροποποίηση συνόλου κανόνων/απενεργοποίηση αναγνωριστικού κανόνα
Η τροποποίηση ενός συνόλου κανόνων είναι πέρα από το πεδίο αυτού του σεμιναρίου.
Για να απενεργοποιήσετε έναν συγκεκριμένο κανόνα, προσδιορίζετε το αναγνωριστικό κανόνα που βρίσκεται στο τρίτο στοιχείο (για παράδειγμα [id=200000]) και στη συνέχεια το απενεργοποιείτε στο αρχείο διαμόρφωσης του Apache:
nano /etc/httpd/conf/httpd.conf
... προσθέτοντας τα ακόλουθα στο κάτω μέρος του αρχείου με το αναγνωριστικό κανόνα:
<IfModule mod_security2.c>
SecRuleRemoveById 200000
</IfModule>
Εάν διαπιστώσετε ότι το ModSecurity αποκλείει όλες τις ενέργειες στον ιστότοπο ή στους ιστότοπούς σας, τότε το "Σύνολο βασικών κανόνων" είναι πιθανότατα σε λειτουργία "Αυτοπεριορισμένη". Πρέπει να το αλλάξετε σε "Συνεργατική ανίχνευση", η οποία εντοπίζει και αποκλείει μόνο ανωμαλίες. Ταυτόχρονα, μπορείτε να δείτε τις επιλογές "Αυτοτελής" και να τις αλλάξετε εάν το επιθυμείτε.
nano /etc/httpd/modsecurity-crs/modsecurity_crs_10_config.conf
Αλλάξτε την "ανίχνευση" σε "Αυτοπεριορισμένη".
Μπορείτε επίσης να διαμορφώσετε το ModSecurity ώστε να επιτρέπει την IP σας μέσω του τείχους προστασίας της εφαρμογής web (WAF) χωρίς καταγραφή:
SecRule REMOTE_ADDR "@ipMatch xxx.xxx.xxx.xxx" phase:1,nolog,allow,ctl:ruleEngine=Off
... ή με υλοτομία:
SecRule REMOTE_ADDR "@ipMatch xxx.xxx.xxx.xxx" phase:1,nolog,allow,ctl:ruleEngine=DetectionOnly