ngx_lua_waf
ngx_lua_waf είναι ένα τείχος προστασίας εφαρμογών ιστού που βασίζεται σε ngx_lua που αναπτύχθηκε όταν μπήκα για πρώτη φορά στο Fun Travel.
Ο κώδικας είναι απλός και η αρχική πρόθεση της ανάπτυξης είναι η χρήση απλότητας, υψηλής απόδοσης και ελαφρού βάρους.
Είναι πλέον ανοιχτού κώδικα και συμμορφώνεται με την άδεια MIT. Περιέχει τους κανόνες φιλτραρίσματος. Εάν έχετε οποιεσδήποτε προτάσεις ή θέλετε να κάνετε fa, μη διστάσετε να το βελτιώσετε μαζί μου.
Χρήσεις:
Αποτρέψτε επιθέσεις ιστού όπως SQL injection, τοπική συμπερίληψη, μερική υπερχείλιση, fuzzing testing, xss, SSRF κ.λπ Αποτρέψτε τη διαρροή αρχείων, όπως SVN/backup Αποτρέψτε επιθέσεις από εργαλεία προσομοίωσης ακραίων καταστάσεων όπως το ApacheBench Αποκλεισμός κοινών εργαλείων εισβολής σάρωσης, σαρωτών Αποκλεισμός ασυνήθιστων αιτημάτων δικτύου Αποκλεισμός της άδειας εκτέλεσης PHP του καταλόγου συνημμένων εικόνας Αποτρέψτε τις μεταφορτώσεις webshell
Προτεινόμενη εγκατάσταση:
Συνιστάται η χρήση του lujit2.1 για υποστήριξη lua
ngx_lua εάν πρόκειται για έκδοση 0.9.2 ή νεότερη, συνιστάται να αλλάξετε την κανονική λειτουργία φίλτρου σε ngx.re.find και η απόδοση αντιστοίχισης θα αυξηθεί κατά περίπου τρεις φορές.
Οδηγίες χρήσης:
Η διαδρομή εγκατάστασης του nginx υποτίθεται ότι είναι: /usr/local/nginx/conf/
Κατεβάστε το ngx_lua_waf στον κατάλογο conf και αποσυμπιέστε το και ονομάστε το waf
Προσθέστε το στην ενότητα http του nginx.conf
Διαμορφώστε τον κατάλογο κανόνων WAF στο config.lua (συνήθως στον κατάλογο waf/conf/)
RulePath = "/usr/local/nginx/conf/waf/wafconf/"
Εάν η απόλυτη διαδρομή αλλάξει, πρέπει να τροποποιηθεί ανάλογα
Στη συνέχεια, επανεκκινήστε το nginx
Λεπτομέρειες προφίλ:
RulePath = "/usr/local/nginx/conf/waf/wafconf/" --Κατάλογος αποθήκευσης κανόνων attacklog = "απενεργοποιημένο" --Για να ενεργοποιήσετε την καταγραφή πληροφοριών επίθεσης, πρέπει να διαμορφώσετε το logdir logdir = "/usr/local/nginx/logs/hack/" --Κατάλογος αποθήκευσης καταγραφής, ο οποίος πρέπει να δημιουργηθεί από τον ίδιο τον χρήστη και απαιτεί την άδεια εγγραφής του χρήστη Nginx urlDeny="on" --εάν θα αποκλειστεί η πρόσβαση στη διεύθυνση URL Redirect="ενεργό" --αν θα γίνει ανακατεύθυνση μετά την αναχαίτιση CookieMatch = "ενεργό" --Εάν θα αποκλειστούν οι επιθέσεις cookie postMatch = "ενεργό" --αν θα μπλοκάρει μια επίθεση μετά whiteModule = "ενεργό" --αν θα ενεργοποιηθεί η λίστα επιτρεπόμενων διευθύνσεων URL black_fileExt={"php","jsp"} --Συμπληρώστε τον τύπο επιθήματος αρχείου που δεν επιτρέπεται να μεταφορτωθεί ipWhitelist={"127.0.0.1"} --Λίστα επιτρεπόμενων IP, πολλές IP διαχωρίζονται με κόμματα ipBlocklist={"1.0.0.1"} --Μαύρη λίστα IP, πολλές IP διαχωρίζονται με κόμματα CCDeny="ενεργό" --Εάν θα ενεργοποιηθεί η αναχαίτιση επιθέσεων cc (απαιτεί το τμήμα HTTP του nginx.conf να αυξηθεί lua_shared_dict όριο 10 μέτρα. ) CCrate = "100/60" --Ρυθμίστε τη συχνότητα επίθεσης CC σε δευτερόλεπτα. --Από προεπιλογή, η ίδια διεύθυνση IP μπορεί να ζητήσει την ίδια διεύθυνση μόνο 100 φορές το λεπτό html=[[Παρακαλώ φύγετε~~]] --Προειδοποιητικό περιεχόμενο, προσαρμόσιμο σε παρένθεση Σημείωση: Μην χρησιμοποιείτε διπλά εισαγωγικά για διάκριση πεζών-κεφαλαίων
Ελέγξτε εάν ισχύουν οι κανόνες
Μετά την ανάπτυξη, μπορείτε να δοκιμάσετε την ακόλουθη εντολή:
Σημείωση: Από προεπιλογή, το μηχάνημα δεν φιλτράρει στη λίστα επιτρεπόμενων και μπορείτε να προσαρμόσετε τη διαμόρφωση config.lua μόνοι σας
Οι αποδόσεις είναι οι εξής:
Ενημερώσεις κανόνων:
Λαμβάνοντας υπόψη το πρόβλημα της προσωρινής αποθήκευσης των κανονικών, οι δυναμικοί κανόνες επηρεάζουν την απόδοση, επομένως δεν χρησιμοποιώ πράγματα όπως λεξικά κοινόχρηστης μνήμης και redis για δυναμική διαχείριση.
Οι ενημερώσεις κανόνων μπορούν να τοποθετηθούν σε άλλους διακομιστές και οι κανόνες μπορούν να ενημερωθούν με τακτική λήψη τους μέσω της εργασίας crontab και η επαναφόρτωση nginx θα τεθεί σε ισχύ. Για να διασφαλιστεί η υψηλή απόδοση του NGX LUA WAF.
Καταγράψτε μόνο το αρχείο καταγραφής φίλτρου, μην ενεργοποιήσετε το φιλτράρισμα, απλώς προσθέστε ένα -- σχόλιο πριν από το check in του κώδικα, εάν χρειάζεται να φιλτράρετε, το αντίστροφο
Μερικές σημειώσεις:
Οι κανόνες φιλτραρίσματος μπορούν να προσαρμοστούν ανάλογα με τις ανάγκες σας στο wafconf και κάθε κανόνας πρέπει να τυλιχτεί ή να χωριστεί με |
Οι κανόνες args λαμβάνουν παράμετρο για φιλτράρισμα Τα URL είναι κανόνες που ζητούν μόνο URL φιλτραρισμένα στο GET Η καταχώρηση είναι κανόνας φιλτραρίσματος μόνο σε αιτήματα καταχώρησης Η λίστα επιτρεπόμενων είναι μια λίστα επιτρεπόμενων και οι διευθύνσεις URL σε αυτήν ταιριάζουν έτσι ώστε να μην φιλτράρεται Το user-agent είναι ένας κανόνας φιλτραρίσματος για το user-agent
Το φιλτράρισμα λήψης και ανάρτησης είναι ενεργοποιημένο από προεπιλογή, εάν πρέπει να ενεργοποιήσετε το φιλτράρισμα cookie, επεξεργαστείτε το τμήμα ακύρωσης waf.lua - σχόλιο
Η μορφή του ονόματος του αρχείου καταγραφής είναι η εξής: Όνομα κεντρικού υπολογιστή Web _sec.log
|