Προστασία Nginx από τις επιθέσεις DDOS. Προστασία του διακομιστή Web από προγράμματα για την προστασία των επιθέσεων DDOS Nginx από τις επιθέσεις DDOS

Πριν από λίγο καιρό έγραψα ένα λεπτομερές άρθρο σχετικά με την εγκατάσταση και τη διαμόρφωση του διακομιστή ιστού με βάση τις τελευταίες εκδόσεις. Εκεί ανέφερα ότι αυτό είναι το πρώτο άρθρο από τον κύκλο ζώνης διακομιστή ιστού. Σήμερα θα σας πω τόσο απλό και φραγκοστάσιο για να προστατεύσετε τον εαυτό σας από απλό ddos. επιθέσεις.

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

Θα πρέπει να γίνει κατανοητό ότι η προστασία από την DDOS πρέπει να είναι επαρκής για τη σημασία του πόρου. Εάν έχετε ένα προσωπικό blog, το οποίο δεν φέρει σημαντικά κέρδη, τότε πληρώστε για την προστασία από το DDOS χωρίς νόημα. Αρκεί μόνο για να ξαπλώσετε για λίγο ή να κάνετε προστασία μόνοι σας. Γενικά, είναι πάντα απαραίτητο να μετρηθεί το κόστος διακοπής του χρόνου διακοπής με το κόστος προστασίας και με βάση αυτό να αποφασίσει σχετικά με τη σκοπιμότητα μιας ή άλλης μεθόδου.

Θα δώσω συμβουλές για να προστατεύσω από απλές επιθέσεις bots ή μερικά μικρά παράσιτα και πακέτα, τα οποία χωρίς κατάλληλες ενέργειες από την πλευρά σας μπορούν να βάλουν τον ιστότοπό σας ή το διακομιστή σας χωρίς προβλήματα. Εδώ είναι ένα απλό παράδειγμα. Δεν υπάρχει πολύ αδύναμος, επί του σκάφους που 2 ναυπηγεία, 8 συναυλίες και ένας δίσκος SSD.

Ο διακομιστής έχει ρυθμιστεί από το προηγούμενο άρθρο μου, η αναφορά στην οποία οδήγησε στην αρχή. Στον διακομιστή, θα αναπτυχθεί η τοποθεσία WordPress με μερικά περιεχόμενα. Και έχουμε ένα παράσιτο, το οποίο στο διακομιστή σας τρέχει την απλή δοκιμή από το Apache στην απόδοση του διακομιστή Web:

# AB -C 50 -N 30000 "https://hl.zeroxzed.ru/"

Μόνο 50 παράλληλα ρεύματα. Τι βλέπουμε στον διακομιστή Web:

Δεν είναι μια πολύ ευχάριστη εικόνα. Ο διακομιστής φορτώνεται στο 100%. Και παρόλο που κανονικά επεξεργάζεται τα αιτήματα και γενικά λειτουργεί σωστά. Δεν επιβραδύνεται καν, αλλά εξακολουθεί να είναι κακό. Και αν υπάρχουν 3 διακομιστές και 100 ροές σε κάθε μία; Δεν υπάρχουν προβλήματα ακόμη και για μια δοκιμή να απομακρυνθεί από τους διαφορετικούς αρχοδοτικούς σε μια εικονική μηχανή και να τρέξει τέτοια πράγματα πάνω τους με μιμίωση της επίθεσης DDOS.

Σε γενικές γραμμές, εάν δεν κάνατε προστασία στο διακομιστή σας, τότε ο καθένας θα είναι σε θέση να παραδώσει κάποια ταλαιπωρία χωρίς ειδικά προβλήματα. Που παρέχεται από μια τέτοια "επίθεση" δεν είναι δύσκολη. Τότε θα σας πω πώς να το κάνετε.

Προστασία DDOS χρησιμοποιώντας τα iptables

Για την προστασία από την απλούστερη επίθεση, θα χρησιμοποιήσουμε το τείχος προστασίας - iptables., Ο πυρήνας της μονάδας iPSet. Για να αποθηκεύσετε μεγάλη λίστα με IP και αυτο-γραπτά σενάρια. Για το τείχος προστασίας, δείτε το άρθρο μου -. Εδώ δεν θα σταματήσω σε αυτό.

IPSet Setup Ερώτηση που θεωρώ λεπτομερώς στο άρθρο μου. Σας συμβουλεύω να δείτε το υλικό, καθώς σχετίζεται άμεσα με αυτό το άρθρο και το συμπληρώνει.

Έτσι, θα προχωρήσουμε στη δημιουργία της απλής προστασίας μας εναντίον επιθέσεων DOS με μεγάλο αριθμό συνδέσεων από μία διεύθυνση IP. Για να ξεκινήσετε, ελέγξτε την εντολή που θα μας δείξει τον αριθμό των συνδέσεων από κάθε διεύθυνση IP:

# Netstat -ntu | AWK "(Εκτύπωση $ 5)" | GREP -VE "(Διεύθυνση | Διακομιστές | 127.0.0.1)" | Cut -d: -f1 | Ταξινόμηση | Uniq -c | Sort -n | Sed "s / ^ [\\ t] * //"

Εδώ είναι ένας παραβάτης της ηρεμίας μας, προσπαθώντας να οργανώσω το αφεντικό στο διακομιστή μας. Τώρα σχεδιάστε ένα σενάριο που θα αποκλείσει όλους όσους ρυθμίζουν περισσότερες από 50 ταυτόχρονες συνδέσεις με τον ιστότοπο.

#! / Bin / sh netstat -ntu | AWK "(Εκτύπωση $ 5)" | GREP -VE "(Διεύθυνση | Διακομιστές | 127.0.0.1)" | Cut -d: -f1 | Ταξινόμηση | Uniq -c | Sort -n | Sed "s / ^ [\\ t] * //" | AWK "(αν ($ 1\u003e 50) Εκτύπωση $ 2)"\u003e /OOT/DDOS/MUCH_CONN.TXT SLEVE 3 LIST \u003d $ (CAT /OT/DDOS/MUCH_CONN.TXT) για IPNet σε $ Λίστα Κάντε IPSET -A MUST_CONN Το $ IPNET έκανε

Κατ 'αρχήν, δεν υπάρχει τίποτα να σχολιάσει εδώ. Παίρνουμε μια λίστα συνδέσεων που μόλις αποδείχθηκαν, συγκρίνουμε την πρώτη στήλη σε αυτήν, αν είναι μεγαλύτερη από 50, τότε το αποτέλεσμα της δεύτερης στήλης, όπου καταγράφεται η διεύθυνση IP, περάστε στο αρχείο.

Στη συνέχεια, διαβάστε αυτό το αρχείο και προσθέστε όλες τις διευθύνσεις IP από αυτήν στη λίστα IPSet που ονομάζεται πολύ_conn. Χρειάζεται προηγουμένως να το δημιουργήσετε. Μίλησα για αυτό λεπτομερώς στο άρθρο στο οποίο ο σύνδεσμος οδήγησε πάνω, αλλά επαναλαμβάνω και πάλι εδώ:

# IPSet -n πολύ_conn iPhash

Δείτε τα περιεχόμενα της λίστας μπορεί να είναι εντολή:

# IPSet -L πολύ_conn

Τώρα πρέπει να προσθέσετε έναν κανόνα σε iptables, με τα οποία όλες οι συνδέσεις από τη συγκεκριμένη λίστα IPSET θα αποκλειστούν.

# iptables -a inper-m set - match-set much_conn src -j drop

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

Όλοι, μπλοκάρσαμε όλους όσους δημιουργούν μαζικές συνδέσεις spam με το διακομιστή. Το όριο σε 50 συνδέσεις μπορεί να διορθωθεί στη θέση, μπορεί να χρειαστεί να μειωθεί εάν κάποιος θα ανοίξει λιγότερες συνδέσεις από ένα IP.

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

Αυτό το σενάριο μπορεί να στραφεί στο στέμμα και να τρέξει κάθε λεπτό. Αλλά προσωπικά, δεν θα το έκανα αυτό. Σας συνιστώ να παρακολουθείτε τους πόρους του διακομιστή και να εκτελέσετε παρόμοια εργαλεία μόνο εάν ο διακομιστής λειτουργεί στο όριο των δυνατοτήτων του και εισάγετε χειροκίνητα και βεβαιωθείτε ότι κάποιος θα είναι spamped με συνδέσεις. Μετά από αυτό, οδήγησε για κάποιο χρονικό διάστημα αυτό το σενάριο Crown. Όταν το DDOS σταματήσει, αποσυνδέστε.

Θα ήταν ωραίο να καθαρίσετε αυτόματα τον κατάλογο των απαγορευμένων, αφαιρώντας από εκεί τους που δεν σας συνδέονται για μια μέρα, αλλά αυτό περιπλέκει σημαντικά το έργο. Χρειάζεστε τουλάχιστον ένα σύνδεσμο στη λίστα αποκλεισμού, αποθηκεύστε τον τελευταίο χρόνο προσκλήσεως. Επεξεργασία όλων αυτών, υπολογισμού. Γενικά, το έργο δεν είναι πολύ δύσκολο, αλλά όχι ασήμαντο. Δεν ήθελα να το κάνω αυτό.

Υπάρχει, αν και όχι πολύ κομψό, αλλά μια απλή λύση σε αυτό το πρόβλημα. Δημιουργήστε μια λίστα με iPSet με μια καθορισμένη εγγραφή χρόνου ζωής με Τέλος χρόνου.. Για παράδειγμα, όπως αυτό:

IPSET -N πολύ_CONN IPHASH TIMEOUT 3600

Σε αυτή την περίπτωση, η αποθηκευμένη εγγραφή IP IP στη λίστα IPSet θα αποθηκευτεί για 3600 δευτερόλεπτα ή 60 λεπτά.

Θα πρέπει να γίνει κατανοητό ότι σε αυτό το παράδειγμα με 1 διεύθυνση IP για να χρησιμοποιήσετε το ipset δεν υπάρχει σημείο, μπορείτε να απαγορεύσετε αμέσως τα μέσα της ίδιας της IPTables. Το iPSet απαιτείται μόνο όταν αυτός ο κατάλογος είναι τουλάχιστον εκατοντάδες γραμμές. Εάν υπάρχουν αρκετές δεκάδες διευθύνσεις, αρκετό ένα iptables.

Ανάλυση του διακομιστή καταγραφής διακομιστή Web για προστασία από DDOS

Εξετάστε ένα άλλο απλό, αλλά ακόμα ένα πιο περίπλοκο τύπο Attack DDOS όταν τα ερωτήματα τύπου προέρχονται από διαφορετική IP. Αυτό είναι, απλό botnet, ίσως ακόμη και συναρμολογημένο με τα χέρια από αρκετούς φτηνούς διακομιστές VDS. Οι ταυτόχρονες συνδέσεις δεν θα είναι πολύ, αλλά αν έχετε ένα βαρύ τόπο και ένας εισβολέας θα βρει την αδύναμη θέση του (για παράδειγμα, μια αναζήτηση), μπορεί να είναι αρκετό για να βάλουμε τον ιστότοπο.

Θα απαγορευτούν μέσω των IPTables και ο κατάλογος των διευθύνσεων για την απαγόρευση θα εξαχθεί από τα αρχεία καταγραφής διακομιστή Web. Για να το κάνετε αυτό, πρέπει να είστε ενεργοποιημένοι αιτήσεις καταγραφής στον διακομιστή Web. Για παράδειγμα, στο Nginx, αυτό είναι υπεύθυνο για αυτή τη ρύθμιση ενός εικονικού κεντρικού υπολογιστή:

Access_log /web/sites/hl.zeroxzed.ru/log/access.log main;

Δεν θα αναλύσουμε ολόκληρο το αρχείο καταγραφής κάθε φορά. Αυτή η ίδια η λειτουργία θα θερμαίνει το διακομιστή Web. Πάρτε τις τελευταίες 1000 γραμμές από το αρχείο καταγραφής και εξετάστε τον αριθμό των συνδέσεων από ένα IP με περιεχόμενο τύπου, όπως το αίτημα της κύριας σελίδας από το http 1.0, "Get / http / 1.0". Εάν παρατηρήσετε ένα άλλο μόνιμο χαρακτηριστικό του botnet που σας επιτεθείτε, χρησιμοποιήστε το. Μπορεί να είναι ο ίδιος πράκτορας χρήστη ή κάτι άλλο. Ας υποθέσουμε εάν ο εισβολέας θα μειωθεί σε ένα ευάλωτο μέρος, θα είναι η διεύθυνση αυτής της σελίδας.

# Tail -1000 / jeb/sites/hl.zeroxzed.ru/log/ssla-access.log | EGREP "GET / HTTP / 1.0" | AWK "(Εκτύπωση $ 1)" | Sort -n | Uniq -c.

Το αποτέλεσμα αυτής της εντολής θα είναι περίπου μια τέτοια λίστα.

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

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

#! / Bin / sh tail -1000 / jeb/sites/hl.zeroxzed.ru/log/ssla-access.log | EGREP "GET / HTTP / 1.0" | AWK "(Εκτύπωση $ 1)" | Sort -n | Uniq -c | Sort -n | Ουρά -N100 | AWK "(αν ($ 1\u003e 50) Εκτύπωση $ 2)"\u003e /OOT/DDOS/MUCH_GETS.TXT SLEVE 3 LIST \u003d $ (CAT /OOT/DDOS/MUCH_GETS.TXT) για IPNet σε $ Λίστα Κάντε IPSET -A MUST_GETS Το $ IPNET έκανε

Εδώ κάνουμε το ίδιο όπως πριν. Εκείνοι που έκαναν περισσότερα από 50 πανομοιότυπα αιτήματα στη μάσκα μας για τις τελευταίες 1000 γραμμές στο αρχείο καταγραφής αποστέλλονται στην απαγόρευση.

Εφηγώ την προσοχή στη συμβολοσειρά στην οποία θα φιλτράρετε αιτήματα. Σε αυτή την περίπτωση, έδειξα μόνο ένα παράδειγμα. Μην πάρετε και εφαρμόστε τη φόρμα, όπως δείξω. Επιδείχνω τεχνικές δυνατότητες και προσέγγιση. Πρέπει να διαμορφώσετε και να βαθμονομήσετε το σύστημα στη θέση μου. Είναι σημαντικό να το καταλάβετε αυτό και να μην εφαρμόσετε την απόφαση χωρίς ανυπομονησία. Θα υπάρξει μόνο βλάβη.

Μην ξεχάσετε να δημιουργήσετε μια ξεχωριστή λίστα στην IPSet και να προσθέσετε ξεχωριστό κανόνα σε ένωση. Μπορείτε να χρησιμοποιήσετε την ήδη υπάρχουσα λίστα και να προστεθεί κανόνα από το προηγούμενο παράδειγμα, αλλά συνιστούμε την επίλυση όλων. Τόσο πιο βολικό για μεταγενέστερη ανάλυση.

Κατά τη διάρκεια της επίθεσης DDOS προσθέστε αυτόν τον κανόνα για να Cror και να εκτελέσετε κάθε λεπτό. Μετά την ολοκλήρωση της επίθεσης, το σενάριο μπορεί να απενεργοποιηθεί. Κατ 'αρχήν, μπορείτε να φύγετε για συνεχώς, αλλά εδώ πρέπει να σκεφτείτε προσεκτικά και να υπολογίσετε πώς πρέπει να κοιτάξει. Η βασική αρχή δεν είναι επιβλαβής.

Banya Bots με εσφαλμένο παραπομπή

194.67.215.242 - - "post / index.php http / 1.1" 200 913 " g0dfw4p1.ru."" Mozilla / 5.0 (Windows NT 6.0, RV: 34.0) Gecko / 20100101 Firefox / 34.0 "" - "

Ο σωστός πεδίο αναφοράς πρέπει να περιέχει είτε HTTP είτε HTTPS, είτε να είναι κενή. Όλα αυτά διαφορετικά, μπορείτε να μπλοκάρετε ή να επιστρέψετε την κατάσταση σφάλματος. Προσθέστε περίπου αυτόν τον σχεδιασμό στην εικονική διαμόρφωση κεντρικού υπολογιστή, στην ενότητα Διακομιστής ().

Αν ($ http_referer! ~ * ^ ($ | Http: // | https: //)) (επιστροφή 403;)

Μετά από αυτό, ελέγξτε τη διαμόρφωση Nginx και ξαναδιαβάστε το.

# Nginxt -t # nginx -s reload

Εάν βγάζετε κάποιο είδος bot με έναν συγκεκριμένο αναφερόμενο, μπορείτε να το απαγορεύσετε. Για να το κάνετε αυτό, μπορείτε να προσθέσετε μια κατάσταση ή να αλλάξετε. Για παράδειγμα, όπως αυτό:

Εάν ($ http_referer \u003d "https://bots.ru/dostanim_tebya.html") (επιστροφή 403;)

Επιπλέον, μπορείτε όλοι αυτά τα bots χρησιμοποιώντας ένα απλό σενάριο για να απαγορεύσετε τα iptables, όπως στα παραπάνω παραδείγματα. Με την ευκαιρία, μπορούν να απαγορευτούν αμέσως, να προβάλλουν αιτήματα HTTP ακόμη και πριν πέσουν στο Nignx, για παράδειγμα, χρησιμοποιώντας NGreP, αλλά αυτό είναι ένα πιο δύσκολο έργο. Δεν γνωρίζουν όλοι πώς να το κάνουν, υπάρχουν αποχρώσεις εκεί, και όλα είναι εξοικειωμένα με το Nginx. Δεν θα είναι πολύ δυσκολία στην εφαρμογή αυτής της μεθόδου.

Προστασία DDOS με μονάδες Nginx - Limit_Conn και Limit_req

Θα μοιραστώ έναν άλλο απλό τρόπο για να μειώσετε το φορτίο στο διακομιστή και να προστατεύσετε εν μέρει έναντι DDOS χρησιμοποιώντας τις μονάδες Nginx - limit_conn. και limit_req. Δεν είναι δύσκολο να τα διαμορφώσετε, εν μέρει το αποτέλεσμα της πρώτης μονάδας θα διασταυρωθεί με τις δύο πρώτες μεθόδους προστασίας DDOS που περιγράφονται στην αρχή. Είναι απλούστερο να προσαρμόσετε, οπότε αν δεν έχετε αντιμετωπίσει αυτές τις μεθόδους, μπορείτε να το δοκιμάσετε αυτό.

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

Θα περιορίσω στο παράδειγμά μου τον αριθμό των ταυτόχρονων συνδέσεων με τον τόπο από έναν αριθμό IP 50 και τον αριθμό των ταυτόχρονων αιτημάτων στη δυναμική περιεκτικότητα σε όχι περισσότερο από 2 ανά δευτερόλεπτο. Αυτό θα επιλυθεί μια βουτιά ( Εκρηξη.) Ερώτησε μέχρι 5. Θα εξηγήσω πώς να καταλάβω αυτή την εκτόξευση, καθώς δεν κατάλαβα αμέσως τι ακριβώς σημαίνει.

Εάν υπερβαίνουμε τον αριθμό των καθορισμένων αιτημάτων ανά δευτερόλεπτο, τότε η εκτέλεσή τους καθυστερεί και είναι ενσωματωμένα στην ουρά με την καθορισμένη ταχύτητα. Το μέγεθος αυτής της ουράς είναι ίσο με την αξία της έκρηξης. Όλα τα αιτήματα που δεν είναι αρκετό χώρο στην ουρά θα ολοκληρωθούν με σφάλμα. Δηλαδή, εάν τα αιτήματα είναι 4 ανά δευτερόλεπτο, τότε 2 θα πραγματοποιηθούν αμέσως και άλλα 2 θα είναι στην ουρά. Και αν είναι 10, τότε 2 θα πραγματοποιηθεί αμέσως, 5 θα είναι σε μια ουρά για εκτέλεση 2 τεμαχίων ανά δευτερόλεπτο και τα υπόλοιπα θα ολοκληρωθούν με ένα σφάλμα.

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

Εδώ είναι ένα παράδειγμα του Config Nginx για την εφαρμογή των καθιερωμένων περιορισμών, προκειμένου να προστατευθούν από τις επιθέσεις DDOS.

Http_conn_zone $ binary_remote_addr ζώνη \u003d perip: 10m; limit_req_zone $ binary_remote_zone ζώνη \u003d δυναμική: 10m τιμή \u003d 2r / s; ... server (... limit_conn perip 50, ... Τοποθεσία ~ \\ \\ .php $ ( ... Limit_req ζώνη \u003d δυναμική έκρηξη \u003d 5 Nodeley, ...))))

Μετά από αυτό επανεκκίνηση του Nginx και ελέγξτε πώς λειτουργούν τα όρια. Το όριο στον αριθμό των δυναμικών αιτημάτων που εκτελούνται μπορεί να φανεί απλά πιέζοντας πολύ γρήγορα F5 στο πρόγραμμα περιήγησης. Εάν είστε αρκετό deft, τότε σύντομα θα δείτε μια φωτογραφία

και την είσοδο στο αρχείο καταγραφής με σφάλματα:

2017/11/30 15:25:26 9773 # 9773 9773 # 9773: * 51482 Περιοριστικά αιτήματα, υπέρβαση: 5.664 ανά ζώνη "δυναμική", πελάτης: 195.91.248.43, διακομιστής: hl.zeroxzed.ru, αίτημα: "Get / http / 2.0 ", Host:" hl.zeroxzed.ru ", παραπομπή:" https://hl.zeroxzed.ru/2013/03/15/featured-image-vertical/ "

Το όριο του αριθμού των συνδέσεων μπορεί να ελέγξει το ίδιο βοηθητικό πρόγραμμα abΕίπα για την εισαγωγή.

017/11/30 15:38:56 9773 # 9773: * 53938 Περιορισμός συνδέσεων ανά ζώνη "Perip", Client: 94.142.141.246, Server: Hl.Zeroxzed.ru, Αίτηση: "Αποκτήστε / WP-Περιεχόμενο / Μεταφόρτωση / 2013 /03/the-dark-knight-res.jpg http / 1.0, Host: "hl.zeroxzed.ru"

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

Κατά την έκδοση περιορισμών, μην ξεχάσετε να ελέγξετε αν τα bots αναζήτησης δεν εμπίπτουν σε αυτούς τους περιορισμούς. Από προεπιλογή, προσπαθούν να μην δημιουργήσουν αυξημένη επιβάρυνση στον ιστότοπο. Εάν είναι επιθυμητό, \u200b\u200bτο ρομπότ Yandex μπορεί να καθοριστεί μέσω robots.txt, πόσο γρήγορα για να σαρώσετε τον ιστότοπό σας. Και το ρομπότ Google μπορεί να κάνει το ίδιο μέσω του webmaster.

συμπέρασμα

Εξετάσαμε τους πιο απλούς τρόπους για την προστασία του διακομιστή Web από όχι λιγότερες απλές επιθέσεις DDOS που μοιάζουν περισσότερο με ένα pamper. Μια σοβαρή επίθεση που θα γεμίσει απλά ολόκληρο το κανάλι εισερχόμενου καναλιού, δεν θα παρατηρήσει καν την προστασία μας. Παρ 'όλα αυτά, έπρεπε να σιγουρευτώ την αποτελεσματικότητα αυτών των μεθόδων στην αντανάκλαση ορισμένων επιθέσεων.

Υπάρχει ακόμη ένας τεράστιος αριθμός διακομιστών ιστού που δεν προστατεύονται καν ούτε από τη χρησιμότητα. ab :) Ξέρω τι μιλάω, καθώς οι διακομιστές αυτοί συναντώνται στην εργασία. Και υπάρχουν επίσης πολλά πλήθος bots και απλά προγράμματα που μπορούν να βρεθούν στο διαδίκτυο και το παλτό, οι τολμηρές τοποθεσίες που δεν είναι έτοιμες για τα φορτία καθόλου.

Υπάρχει ένας άλλος τρόπος, το ίδιο απλό όπως περιγράφω και αποτελεσματικό από τα bots που δεν καταλαβαίνουν τις ανακατευθύνσεις και τα μπισκότα. Δεν το περιγράψω, γιατί τίποτα για να ελέγξω και ήταν απλά κουρασμένος να γράψει ένα άρθρο, αποδείχθηκε πολύ μεγάλο. Έγραψα και το επεξεργάστηκα για μεγάλο χρονικό διάστημα, συλλέγοντας σενάρια και ρυθμίσεις σε διαφορετικούς διακομιστές και θυμηθείτε ότι κάνατε κάποτε. Στη συνέχεια έλεγξε όλα αυτά ξεχωριστά.

Η ουσία της προστασίας είναι ότι με τη βοήθεια του Nginx εκδίδουμε ένα συγκεκριμένο cookies στον χρήστη και στη συνέχεια ανακατευθύνετε τη σελίδα που ζητήσατε. Εάν το bot δεν καταλάβει τα cookies ή ανακατευθύνει, τότε πέφτει. Οι κανονικοί χρήστες δεν παρατηρούν τίποτα. Ίσως αργότερα θα σας πω για αυτή τη μέθοδο και να προσθέσετε ένα άρθρο. Εν τω μεταξύ. Θα χαρούμε να σχολιάσω τα πλεονεκτήματα στα άρθρα.

Online πορεία linux

Εάν έχετε την επιθυμία να μάθετε πώς να χτίσετε και να διατηρήσετε εξαιρετικά προσβάσιμα και αξιόπιστα συστήματα, συνιστούμε να εξοικειωθείτε online Course "Administrator Linux" στο Otus. Το μάθημα δεν είναι για αρχάριους, για την είσοδο χρειάζεστε βασικές γνώσεις σχετικά με τα δίκτυα και την εγκατάσταση του Linux σε εικονική. Η εκπαίδευση διαρκεί 5 μήνες, μετά από το οποίο οι επιτυχημένοι απόφοιτοι του μαθήματος θα μπορούν να περάσουν συνεντεύξεις από τους εταίρους. Τι θα σας δώσει αυτό το μάθημα:
  • Γνώση της αρχιτεκτονικής Linux.
  • Mastering σύγχρονες μεθόδους και ανάλυση δεδομένων και εργαλεία επεξεργασίας δεδομένων.
  • Η δυνατότητα επιλογής της διαμόρφωσης για τις απαραίτητες εργασίες, διαχειρίζεται τις διαδικασίες και εξασφαλίζει την ασφάλεια του συστήματος.
  • Κατοχή των κύριων μέσων εργασίας του διαχειριστή του συστήματος.
  • Κατανόηση των χαρακτηριστικών της ανάπτυξης, των ρυθμίσεων και της συντήρησης των δικτύων που χτίστηκαν με βάση το Linux.
  • Η ικανότητα να λύσει γρήγορα τα αναδυόμενα προβλήματα και να εξασφαλιστεί μια σταθερή και αδιάκοπη λειτουργία συστήματος.
Ελέγξτε τον εαυτό σας στην εισαγωγική δοκιμή και δείτε περισσότερα από το πρόγραμμα λογισμικού.

Στο Blog μας στο Habré, γράφουμε όχι μόνο για την ανάπτυξη του έργου Cloud 1 Cloud, αλλά και να πείτε πώς να λύσετε ορισμένα τεχνολογικά καθήκοντα. Το καλοκαίρι του 2015, ένα υλικό εμφανίστηκε στο Blog του Nginx Project για το πώς με τη βοήθειά του μπορεί να αντέξει τις επιθέσεις DDOS. Η σημείωση μας φαινόταν ενδιαφέροντα για εμάς, έτσι δίνουμε τα σημαντικότερα σημεία τους εδώ.

Εισαγωγή: Τι είναι το DDOS

- "Η κατανεμημένη επίθεση στην υπηρεσία για να το αντανακλούσε" είναι μια προσπάθεια να κάνουμε οποιαδήποτε υπηρεσία, συνήθως μια ιστοσελίδα, απροσπέλαστη, βομβαρδίζοντας την κυκλοφοριακή της από μια ποικιλία πηγών. Ως αποτέλεσμα, ο διακομιστής που το εξυπηρετεί, απλά παύει να εργάζεται κανονικά, χωρίς να αντιμετωπίσει υπερφόρτωση.

Το τυποποιημένο διάγραμμα σε αυτή την επιχείρηση είναι να "βασανίσει" το σύστημα από μια τέτοια νέα νέες συνδέσεις και αιτήματα, έτσι ώστε το δίκτυο να σταματήσει να αντιμετωπίζει το ρεύμα τους ή έχει γίνει τόσο αργή ώστε να είναι αδύνατο να συνεργαστείτε με αυτό.

Προδιαγραφές DDOS επιθέσεις

Στο επίπεδο εφαρμογής, η επίθεση DDOS γίνεται από ειδικά προγράμματα (bots) που μπορούν να χρησιμοποιήσουν ευπάθειες σε ένα συγκεκριμένο σύστημα. Για παράδειγμα, ένα σύστημα που δεν προκαλείται από τον έλεγχο ενός μεγάλου αριθμού παράλληλων ενώσεων μπορεί να απενεργοποιηθεί με τη δημιουργία ενός μεγάλου αριθμού τέτοιων "συνδετήρων". Σε ενεργό κατάσταση, μπορούν να διατηρηθούν, από καιρό σε καιρό, κάθισαν μέσα από τους μικρούς όγκους της κυκλοφορίας. Μια άλλη επιλογή είναι να γεμίσετε το σύστημα με μεγάλο αριθμό αιτημάτων ή να κάνετε αυτά τα αιτήματα είναι επαρκώς βαριά. Δεν πρόκειται για πραγματικές συνδέσεις, επομένως, μέσω των bots, είναι πολύ εύκολο να στείλετε ένα τεράστιο αριθμό ερωτημάτων και να δημιουργήσετε γρήγορα πολλές νέες συνδέσεις.

Παρακάτω είναι τα τεχνικά χαρακτηριστικά των επιθέσεων DDOS για τα οποία μπορούν να αναγνωριστούν και, δεδομένου ότι, για να αντιμετωπίσουν μαζί τους:

  • Η κυκλοφορία προέρχεται συνήθως από έναν σταθερό αριθμό διευθύνσεων IP που προορίζονται για επίθεση. Ως αποτέλεσμα, κάθε τέτοια διεύθυνση καθιστά έναν μη φυσιολογικό αριθμό συνδέσεων και ερωτημάτων που δεν είναι χαρακτηριστικό ενός πραγματικού χρήστη. Για αναφορά: δεν είναι πάντα μια παρόμοια ευθυγράμμιση υποδεικνύει μια επίθεση DDOS. Παρόμοια ενέργειες μπορούν να παρατηρηθούν όταν χρησιμοποιείτε το proxy προς τα εμπρός (ανώνυμο), επειδή η διεύθυνση IP του στο διακομιστή χρησιμοποιείται για τον εντοπισμό οποιουδήποτε χρήστη που εξυπηρετεί. Ωστόσο, ο αριθμός των περιπτώσεων και των αιτημάτων ενός ανώνυμου πληρεξουσίου θα είναι μερικές φορές μικρότερη από ό, τι όταν επιτίθεται.
  • Επειδή πρόκειται για bots που παράγει κυκλοφορία, το διακομιστή "υπερθέρμανσης", η ένταση αυτής της κυκλοφορίας είναι πολύ υψηλότερη από ό, τι ο πραγματικός χρήστης είναι ικανός να παράγει.
  • Η κεφαλίδα εφαρμογής πελάτη-πελάτη χρήστη εμφανίζεται μερικές φορές σε μια μη τυπική διαμόρφωση.
  • Μερικές φορές μια επίθεση μπορεί να αναγνωριστεί από την κεφαλίδα του αναφοροποιητή.

Διαθέτει Nginx και Nginx Plus για την καταπολέμηση των επιθέσεων DDOS

Πολλά χαρακτηριστικά του Nginx και Nginx Plus μπορούν να παρέχουν ανεκτίμητη βοήθεια στην επίλυση των ερωτήσεων πώς να αντιμετωπίσουν την επίθεση DDOS. Λειτουργεί σε δύο κατευθύνσεις: μέσω της διαχείρισης της εισερχόμενης κυκλοφορίας και μέσω του ελέγχου της διανομής του από εσωτερικούς διακομιστές.
Όριο συχνότητας ερωτήματος
Μπορείτε να ρυθμίσετε τη συχνότητα εισερχόμενου αιτήματος μέσω Nginx και Nginx Plus με την τιμή που είναι χαρακτηριστική των πραγματικών χρηστών. Για παράδειγμα, πιστεύετε ότι οι χρήστες εισέρχονται στην κύρια σελίδα σας κάθε δύο δευτερόλεπτα. Μπορείτε να διαμορφώσετε τον εξοπλισμό σε αυτή τη συχνότητα αιτημάτων στη σελίδα - 30 ανά λεπτό.

Limit_req_zone $ binary_remote_addr ζώνη \u003d ένα: 10m rarate \u003d 30r / m; Server (... Τοποθεσία /login.html (ζώνη limit_req \u003d ένα; ...))
Η οδηγία LIMIT_REQ_ZONE δημιουργεί τη συνολική ζώνη μνήμης για την αποθήκευση του καθορισμένου αριθμού αιτημάτων για ένα καθορισμένο πλήκτρο. Σε αυτή την περίπτωση, αυτή είναι μια διεύθυνση IP πελάτη ($ binary_remote_addr). Η οδηγία LIMIT_REQ στο μπλοκ /login.html αναφέρεται σε αυτή τη ζώνη μνήμης.

Περιορισμός του αριθμού των συνδέσεων
Μπορείτε να επιβάλλετε περιορισμούς στον αριθμό των συνδέσεων που μπορούν να προέρχονται από τη διεύθυνση IP ενός πελάτη. Και πάλι, εκτιμώντας την αξία τους χαρακτηριστικό ενός πραγματικού χρήστη. Για παράδειγμα, μπορείτε να εγκαταστήσετε όχι περισσότερο από 10 γκολ από ένα IP στην περιοχή / κατάστημα του ιστότοπού σας.

Limit_conn_zone $ binary_remote_addr ζώνη \u003d addr: 10m; Server (... Τοποθεσία / κατάστημα / (LIMIT_CONN ADDR 10; ...))
Όπως και στο προηγούμενο παράδειγμα, η οδηγία LIMIT_CONN_ZONE δημιουργεί μια κοινή προσθήκη ζώνης μνήμης για την αποθήκευση αιτημάτων για ένα δεδομένο κλειδί - $ binary_remote_addr-πελάτη διεύθυνση IP. Το όριο_Conn στο σώμα / κατάστημα αναφέρεται σε αυτή τη ζώνη μνήμης και ρυθμίζει τις συνδέσεις περιορισμού 10 από κάθε πελάτη IP.

Κλείνοντας αργές ενώσεις
Μπορείτε να κλείσετε τις συνδέσεις που στέλνουν τα δεδομένα πολύ σπάνια, τα οποία μπορεί να είναι ένα σημάδι ότι ο κύριος στόχος τους είναι ανοιχτός σε όλο το χρόνο και να εμποδίσει νέες ενώσεις. Αυτός ο τύπος προγράμματος επίθεσης ονομάζεται Slowloris. Η οδηγία Client_body_timeout ελέγχει τον χρόνο αναμονής Nginx μεταξύ των αρχείων του σώματος του πελάτη. Η οδηγία Client_header_timeout κάνει το ίδιο για τις κεφαλίδες. Από προεπιλογή, και στις δύο περιπτώσεις είναι 60 δευτερόλεπτα. Στο παρακάτω παράδειγμα, αυτό το διάστημα ρυθμίζεται σε 5 δευτερόλεπτα.

Server (client_body_timeout 5s; client_header_timeout 5s; ...)

Κάνοντας διευθύνσεις IP σε "μαύρη λίστα"
Εάν αναγνωρίσετε την IP που χρησιμοποιείται για να επιτεθεί, μπορείτε να τα προσθέσετε στη "Μαύρη λίστα" χρησιμοποιώντας την οδηγία Deny, Nginx και Nginx Plus, δεν θα ανταποκρίνεται πλέον σε αιτήματα από αυτές τις διευθύνσεις. Για παράδειγμα, αν διαπιστώσετε ότι η επίθεση προέρχεται από την περιοχή 123.123.123.1 μέσω της διεύθυνσης 123.123.123.16:

Θέση / (Deny 123.123.123.0/28; ...)
Εάν υπάρχουν αρκετές τέτοιες διευθύνσεις:

Θέση / (Deny 123.123.123.3; Deny 123.123.123.5; Deny 123.123.123.7; ...)

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

Θέση / (Επιτρέψτε στο 192.168.1.0/24; αρνείται όλα; ...)
Οι διευθύνσεις IP που δεν πληρούν τις συνθήκες του εγκατεστημένου εύρους θα αποκλειστούν.

Προσαρμογή για να αποφευχθεί η κυκλοφορία άλματα
Μπορείτε να διαμορφώσετε το Nginx και το Nginx Plus έτσι ώστε να απορροφούν τα άλματα κυκλοφορίας κατά τη διάρκεια της επίθεσης μέσω της προσωρινής προσωρινής αποθήκης και να περάσουν στις παραμέτρους του, θα αγνοήσουν τα ερωτήματα επιστροφής. Αυτό μπορεί να γίνει με τις ακόλουθες επιλογές:

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

Το κλειδί που ορίζεται από το proxy_cache_key αποτελείται συνήθως από ενσωματωμένες παραλλαγές (προεπιλεγμένο πλήκτρο, $ schement $ proxy_host $ request_uri έχει τρεις παραλλαγές). Εάν η τιμή περιλαμβάνει $ query_string, η επίθεση που στέλνει σπάνιες γραμμές ερωτήματος μπορεί να οδηγήσει σε υπερβολική προσωρινή αποθήκευση. Δεν συνιστάται να συμπεριλάβετε αυτήν την επιλογή στο κλειδί εάν δεν υπάρχει επείγουσα ανάγκη.

Lock query
Μπορείτε να διαμορφώσετε το Nginx και το Nginx Plus για να εμποδίσετε τους ακόλουθους τύπους αιτημάτων:
  • Ερωτήσεις σε μια συγκεκριμένη διεύθυνση URL, η οποία μπορεί να κινδυνεύει.
  • Αιτήματα όπου οι κεφαλίδες πράκτορα χρήστη έχουν μια τιμή που δεν ταιριάζει με τη συνήθη κίνηση του πελάτη.
  • Αιτήσεις στον οποίο οι κεφαλίδες του αναφοροποιητή μπορούν να οριστούν ως σχετίζονται με την επίθεση.
  • Αιτήματα στα οποία οι άλλοι τίτλοι φαίνονται ύποπτοι.
Για παράδειγμα, εάν αποφασίσετε ότι η επίθεση στοχεύει στο URL /FOO.PHP, μπορείτε να αποκλείσετε όλα τα αιτήματα στη σελίδα:

Τοποθεσία /FOO.php (αρνείται όλους;)
Εάν διαπιστώσετε ότι οι επιθέσεις DDOS έχουν μια τιμή foo ή bar στις κεφαλίδες του πράκτορα χρήστη, μπορείτε να τα εμποδίσετε:

Θέση / (αν ($ http_user_agent ~ * foo | μπαρ) (επιστροφή 403;) ...)
Με την ίδια αρχή, μπορείτε να εργαστείτε με άλλους τίτλους που έχουν τις τιμές που δείχνουν την απειλή μιας επίθεσης.

Σύνδεση συνδέσεων με εσωτερικούς διακομιστές
Το Nginx και το Nginx Plus μπορούν ταυτόχρονα να ελέγχονται με μεγάλο αριθμό συνδέσεων από τους εσωτερικούς διακομιστές επιτρέπουν τον εαυτό τους. Χρησιμοποιώντας το Nginx Plus, μπορείτε να περιορίσετε τον αριθμό των συνδέσεων σε κάθε έναν από τους εσωτερικούς διακομιστές. Ας υποθέσουμε ότι θέλετε να περιορίσετε τον αριθμό των συνδέσεων με δύο εσωτερικούς διακομιστές της ομάδας που εξυπηρετούν τον ιστότοπο, αριθμός 200:

Upstream Website (Server 192.168.100.1:80 max_conns \u003d 200. Server 192.168.100.2:80 max_conns \u003d 200; Queue 10 Timeout \u003d 30s;)
Η παράμετρος Max_Conns ορίζει τον μέγιστο αριθμό συνδέσεων που ανοίγουν από το Nginx Plus για κάθε διακομιστή. Η οδηγία ουράς περιορίζει τον αριθμό των αιτημάτων στην ουρά αν όλοι οι διακομιστές ομάδας υπερβαίνουν το όριο τους. Στην ίδια γραμμή, ο χρόνος καταχωρείται στην ουρά στην ουρά - 30 δευτερόλεπτα.

Επίθεση που βασίζεται σε εύρος
Υπάρχει μια επιλογή επίθεσης στην οποία η κεφαλίδα λειτουργίας εύρους αποστέλλεται με πολύ μεγάλη τιμή, η οποία μπορεί να οδηγήσει σε υπερχείλιση buffer. Για να μάθετε πώς να χρησιμοποιείτε το Nginx και το Nginx Plus για να αντιμετωπίσετε αυτόν τον τύπο επίθεσης που σας συμβουλεύουμε να διαβάσετε.
Πώς να διαχειριστείτε με τις μεγάλες λήψεις
Οι επιθέσεις DDOS συνήθως οδηγούν σε ένα κρίσιμο επίπεδο εκκίνησης. Διαβάστε για το πώς να διδάξετε το Nginx και το Nginx Plus και να αντιμετωπίσετε αυτό το πρόβλημα, μπορείτε.

Ddos ανίχνευση επίθεσης

Μέχρι στιγμής, συζητήσαμε πώς μπορείτε να χρησιμοποιήσετε το Nginx και το Nginx Plus για να μαλακώσετε τα αποτελέσματα των επιθέσεων DDOS. Αλλά είναι δυνατόν να ανιχνεύσετε την ίδια την επίθεση χρησιμοποιώντας αυτούς τους διακομιστές; Η μονάδα κατάστασης Nginx Plus παρέχει λεπτομερή αρχεία μετρικής κυκλοφορίας που διανεμήθηκε σε εσωτερικούς διακομιστές. Αυτό το εργαλείο σάς επιτρέπει να αναγνωρίσετε την ανώμαλη κατάσταση της κυκλοφορίας. Το Nginx Plus έχει τη λειτουργία της λειτουργίας του πίνακα διαχείρισης ιστότοπου, όπου εμφανίζονται τα γραφήματα της τρέχουσας κατάστασης του συστήματός του (ένα παράδειγμα μπορεί να προβληθεί εδώ: demo.nginx.com/status.html). Οι ίδιοι δείκτες είναι διαθέσιμοι μέσω του API, μπορούν να ενσωματωθούν στο δικό τους ή τρίτο μέρος του συστήματος παρακολούθησης και να παρακολουθήσουν την κυκλοφορία εγκαίρως, προειδοποιώντας ασυνήθιστες συνθήκες.

Περίληψη

Το Nginx και το Nginx Plus μπορούν να παρέχουν ανεκτίμητη βοήθεια στην επίλυση των ερωτήσεων πώς να σταματήσουν τις επιθέσεις DDOS. Ταυτόχρονα, το Nginx Plus έχει πρόσθετες ιδιότητες για να προστατεύσει έναντι αυτού του είδους επιθέσεις που προειδοποιεί την εμφάνισή τους.

Μπορείτε να βοηθήσετε και να μεταφράσετε κάποια χρήματα στην ανάπτυξη του ιστότοπου.



Εξετάστε την προστασία του διακομιστή NGIX Web που εκτελείται στο λειτουργικό σύστημα Ubuntu (κατ 'αρχήν - οποιοδήποτε Linux).

Υπάρχουν δύο τύποι επιθέσεων DOS / DDOS με βάση την ιδέα της πλημμύρας, δηλαδή τα θύματα των θυμάτων με έναν τεράστιο αριθμό πακέτων.

Η πλημμύρα είναι διαφορετική: πλημμύρα ICMP, Syn-Flood, UDP-πλημμύρα και πλημμύρα HTTP. Οι σύγχρονοι bots DOS μπορούν να χρησιμοποιήσουν όλες αυτές τις επιθέσεις ταυτόχρονα, οπότε θα πρέπει να φροντίσετε επαρκή προστασία από κάθε ένα από αυτά.

  • ICMP-πλημμύρα
  • Πρωραίσθητης μεθόδου εύρους ζώνης και δημιουργίας φορτίων στη στοίβα του δικτύου μέσω του μονότονου αγροτεμαχίου αιτημάτων για ICMP ECHO (PING). Εντοπίζεται με ανάλυση των ροών κυκλοφορίας και στις δύο κατευθύνσεις: Κατά τη διάρκεια μιας επίθεσης πλημμύρας ICMP, είναι σχεδόν πανομοιότυπα. Μια πρακτικά ανώδυνη μέθοδος απόλυτης προστασίας βασίζεται σε απαντήσεις στην απενεργοποίηση στις αιτήσεις ICMP ECHO:

    Αποθήκευση και εφαρμογή:

    Sudo sysctl -p.
  • Syn-πλημμύρα.
  • Ένας από τους συνηθισμένους τρόπους δεν είναι μόνο να βαθμολογήσετε το κανάλι επικοινωνίας, αλλά εισάγετε επίσης τη στοίβα του δικτύου λειτουργικού συστήματος σε μια τέτοια κατάσταση όταν δεν μπορεί πλέον να λαμβάνει νέες αιτήσεις σύνδεσης.
    Με βάση μια προσπάθεια προετοιμασίας ενός μεγάλου αριθμού ταυτόχρονων συνδέσεων TCP μέσω του πακέτου SYN με μια μη υπάρχουσα διεύθυνση επιστροφής. Μετά από αρκετές προσπάθειες αποστολής ενός πακέτου ACK απόκρισης σε μια απροσπέλαστη διεύθυνση, τα περισσότερα συστήματα έθεσαν μια μη αναγνωρισμένη σύνδεση με την ουρά. Και μόνο μετά το n-th, η σύνδεση είναι κλειστή.
    Δεδομένου ότι η ροή πακέτων ACK είναι πολύ μεγάλη, η ουρά ολοκληρώθηκε εντελώς και ο πυρήνας δίνει μια άρνηση να προσπαθήσει να ανοίξει μια νέα σύνδεση.
    Τα πιο έξυπνα bots DOS αναλύουν επίσης το σύστημα πριν ξεκινήσουν την επίθεση για να στείλουν αιτήματα μόνο για να ανοίξουν ζωτικά λιμάνια. Απλώς αναγνωρίζω μια τέτοια επίθεση: αρκεί να προσπαθήσουμε να συνδεθώ με μία από τις υπηρεσίες.

    Τα αμυντικά γεγονότα περιλαμβάνουν συνήθως:
    Αυξημένη ουρά "ημι-ανοικτές" συνδέσεις TCP,
    Μείωση του χρόνου έκπτωσης "ημι-ανοικτές" ενώσεις,
    Ενεργοποιώντας τον μηχανισμό Syncookies TCP,
    Περιορισμός του μέγιστου αριθμού "ημι-ανοικτών" συνδέσεων από ένα IP σε μια συγκεκριμένη θύρα "

  • UDP-πλημμύρα
  • Η συνήθης μέθοδος αναρρίχησης εύρους ζώνης. Με βάση την άπειρη προϋπόθεση των πακέτων UDP στους λιμένες διαφόρων υπηρεσιών UDP. Εύκολα εξαλείφονται με την κοπή τέτοιων υπηρεσιών από τον εξωτερικό κόσμο και ρυθμίστε το όριο στον αριθμό των συνδέσεων ανά μονάδα χρόνου στον διακομιστή DNS στην πλευρά της πύλης:

    Iptables -i inport -p udp --port 53 -j drop-m iplimit --plimit-πάνω από 1

    Πιθανότατα θα πρέπει να επαναλάβετε τον πυρήνα. Αλλά είναι ήδη .......

  • Http-πλημμύρα
  • Μία από τις πιο δημοφιλείς μεθόδους πλημμύρας. Με βάση την ατελείωτη αποστολή των αιτημάτων της 80ης θύρας για να μεταφορτώσετε τον διακομιστή Web έτσι ώστε να μην είναι σε θέση να επεξεργαστεί όλα τα άλλα αιτήματα.
    Συμβαίνει ότι ο σκοπός της πλημμύρας δεν γίνεται η ρίζα του διακομιστή ιστού, αλλά ένα από τα σενάρια που εκτελούν τα καθήκοντα έντασης πόρων ή εργάζονται με τη βάση δεδομένων. Σε κάθε περίπτωση, ο δείκτης της επίθεσης εκκίνησης θα εξυπηρετήσει μια ασυνήθιστα ταχεία ανάπτυξη των αρχείων καταγραφής διακομιστή Web.
    Οι μέθοδοι ελέγχου των πλημμυρών HTTP περιλαμβάνουν τη δημιουργία ενός διακομιστή ιστού και τη βάση δεδομένων, προκειμένου να μειωθεί η επίδραση της επίθεσης, καθώς και στην οθόνη DOS-Bots χρησιμοποιώντας διάφορες τεχνικές.

    Πρώτον, θα πρέπει να αυξήσετε τον μέγιστο αριθμό συνδέσεων με τη βάση δεδομένων ταυτόχρονα.
    Δεύτερον, για να εγκαταστήσετε ένα εύκολο και παραγωγικό Nginx στον διακομιστή Web Apache - θα το δοθεί η προσωρινή μνήμη και θα δώσει στατική. Αυτή είναι μια λύση από τη λίστα "Πρέπει", η οποία όχι μόνο θα μειώσει την επίδραση των επιθέσεων DOS, αλλά θα επιτρέψει στον διακομιστή να αντέξει τα τεράστια φορτία.
    Για παράδειγμα:

    Nano /etc/nginx/nginx.conf.
    # Αυξήστε τον μέγιστο αριθμό των χρησιμοποιούμενων αρχείων
    worker_rlimit_nofile 8192;
    ## Αριθμός ροών εργασίας, συνιστάται να τοποθετήσετε τον αριθμό των πυρήνων
    worker_processes 1;
    # Μειώνει τον αριθμό των κλήσεων του συστήματος gettimeofday (), η οποία οδηγεί σε αύξηση της παραγωγικότητας
    Timer_resolution 100ms;
    # Οδηγία θέτει την προτεραιότητα των ροών εργασίας από -20 έως 20 (ένας αρνητικός αριθμός σημαίνει υψηλότερη προτεραιότητα).
    worker_priority -5;

    Συμβάντα (
    # Αυξήστε τον μέγιστο αριθμό συνδέσεων
    Worker_connections 2048;
    # Χρησιμοποιήστε μια αποτελεσματική μέθοδο Epoll για την επεξεργασία της ένωσης
    Χρησιμοποιήστε epoll.
    }
    http (
    # Ενεργοποιήστε το sendfile (). Η χρήση του SendFile () αποθηκεύει κλήσεις συστήματος, μειώνει τον αριθμό της αντιγραφής δεδομένων
    Sendfile on;
    Output_buffers 2 64k;

    gzip on;
    gzip_min_length 1100;
    gzip_buffers 64 8k;
    gzip_comp_level 3;
    gzip_http_version 1.1;
    Gzip_proxied οποιαδήποτε?
    Gzip_types κείμενο / Απλή εφαρμογή / εφαρμογή XML / x-javascript text / css;
    # Απενεργοποιήστε το χρονικό όριο στο κλείσιμο των κρατικών συνδέσεων
    keepalive_timeout 0;
    # Μην δώσετε μια έκδοση του Nginx στην κεφαλίδα απόκρισης
    Server_tokens off?
    # Ρίξτε τις ώρες
    Reset_TimEDout_Connection on.
    Η οδηγία περιγράφει τη ζώνη στην οποία αποθηκεύονται η κατάσταση των συνεδριών. Οι τιμές περιόδου σύνδεσης καθορίζονται από μια δεδομένη μεταβλητή.
    limit_req_zone $ binary_remote_addr ζώνη \u003d ένα: 10m τιμή \u003d 1r / s;

    Διακομιστής (
    Ακούστε 80 προεπιλογή.
    server_name localhost;

    access_log /var/log/nginx/localhost.access.log;

    τοποθεσία / (
    root / var / www /?
    Ευρετήριο δείκτη.html index.htm index.php;
    Open_file_cache max \u003d 1024 ανενεργό \u003d 600s;
    Open_file_cache_vidal 2000s;
    Open_file_cache_min_eses 1;
    open_file_cache_errors on?
    }
    τοποθεσία ~ \\ .php $ (
    limit_req ζώνη \u003d ένα burst \u003d 5;
    Fastcgi_pass unix: //tmp/php5-fpm.sock;
    Fastci_index index.php;
    Fastcgi_param script_filename / var / www $ fastcgi_script_name;
    περιλαμβάνουν fastcgi_params;
    Fastcgi_hide_header "control control".
    }
    τοποθεσία ~ /.ht (
    Αρνείται όλους.
    }
    Λήγει το max; # Προσοχή!!! Αυτή η συμβολοσειρά λήγει είναι απαραίτητη!
    Add_header Τελευταία τροποποίηση $ sent_http_expires;
    }


    Εάν είναι απαραίτητο, μπορείτε να χρησιμοποιήσετε τη μονάδα NGLX NGX_HTTP_LIMIT_REQ_Module, η οποία περιορίζει τον αριθμό των ταυτόχρονων συνδέσεων από μία διεύθυνση. Τα σενάρια έντασης των πόρων μπορούν να προστατευθούν από τα bots χρησιμοποιώντας καθυστερήσεις, κουμπιά "κλικ με", γράψιμο cookies και άλλες τεχνικές που αποσκοπούν στον έλεγχο της "ανθρωπότητας".

    Προκειμένου να μην πέσει σε μια απελπιστική θέση κατά τη διάρκεια της κατάρρευσης της DDOS-Storm στο σύστημα, είναι απαραίτητο να τα προετοιμαστεί διεξοδικά σε μια τέτοια κατάσταση:

    1. Οι διακομιστές που έχουν άμεση πρόσβαση στο εξωτερικό δίκτυο πρέπει να προετοιμαστούν για μια απλή και ακατέργαστη απομακρυσμένη επανεκκίνηση (SSHD θα σώσει τον πατέρα της ρωσικής δημοκρατίας). Το μεγάλο πλεονέκτημα θα είναι η παρουσία μιας δεύτερης, διοικητικής διασύνδεσης δικτύου, μέσω της οποίας μπορείτε να αποκτήσετε πρόσβαση στο διακομιστή σε περίπτωση ένα στρώμα του κύριου καναλιού.
    2. Το λογισμικό (λογισμικό) που χρησιμοποιείται στον διακομιστή πρέπει πάντα να είναι ενημερωμένο. Όλες οι οπές δοκιμάζονται, οι ενημερώσεις είναι εγκατεστημένες (παρεμπιπτόντως, μια απλή συμβουλή που πολλοί δεν ακολουθούν). Θα προστατεύσει από τις επιθέσεις DOS που λειτουργούν σφάλματα στις υπηρεσίες.
    3. Όλες οι υπηρεσίες δικτύου ακρόασης που προορίζονται για διοικητική χρήση πρέπει να είναι κρυμμένα από το τείχος προστασίας από όλους όσους δεν πρέπει να έχουν πρόσβαση σε αυτά. Στη συνέχεια, ο εισβολέας δεν θα μπορέσει να τα χρησιμοποιήσει για επίθεση dos ή grutfors.
    4. Σε προσεγγίσεις στον διακομιστή (πλησιέστερο δρομολογητή), πρέπει να εγκατασταθεί ένα σύστημα ανάλυσης της κυκλοφορίας (NetFlow για βοήθεια), η οποία θα σας επιτρέψει να μάθετε για την αρχή και να λάβετε μέτρα για να την αποτρέψετε εγκαίρως.

    Επαναλάβετε το δείγμα σε δέκα δευτερόλεπτα

    Αποθηκεύστε και εφαρμόστε:

    Sudo sysctl -p.

    Όλες οι τεχνικές που εμφανίζονται σε αυτό το θέμα αποσκοπούν στη μείωση της αποτελεσματικότητας των επιθέσεων DDOS που σκοπεύουν να δαπανήσουν τους πόρους του μηχανήματος.
    Από την πλημμύρα, βαθμολογώντας τα σκουπίδια του καναλιού, είναι σχεδόν αδύνατο να υπερασπιστεί τον εαυτό του, και το μόνο σωστό, αλλά όχι πάντα μια εφικτή μέθοδος είναι να «στερήσει την επίθεση του νόημα».
    Εάν έχετε ένα πραγματικά ευρύ κανάλι στη διάθεσή σας, η οποία θα χάσει εύκολα μια μικρή κίνηση botnet, τότε θεωρήστε ότι από το 90% η επίθεση του διακομιστή σας προστατεύεται. Υπάρχει ένας πιο εξελιγμένος τρόπος προστασίας.
    Βασίζεται στην οργάνωση ενός κατανεμημένου υπολογιστικού δικτύου, το οποίο περιλαμβάνει πολλούς διπλούς διακομιστές που συνδέονται με διαφορετικά κύρια κανάλια.
    Όταν τελειώσει η υπολογιστική ισχύς ή το εύρος ζώνης καναλιού, όλοι οι νέοι πελάτες ανακατεύονται σε άλλο διακομιστή (ή σταδιακά "επίχρισμα" στους διακομιστές της αρχής στρογγυλής ροής).
    Αυτή είναι μια πολύ ακριβή, αλλά πολύ επίμονη δομή, για να συμπληρώσετε σχεδόν εξωπραγματικό.
    Μια άλλη περισσότερο ή λιγότερο αποτελεσματική απόφαση είναι να αγοράσετε ακριβό ανιχνευτή ανίχνευσης ανωμαλιών της Cisco και φρουρά Cisco.
    Εργασία σε μια δέσμη, μπορούν να καταστέλλουν την επίθεση έναρξης, αλλά, όπως και οι περισσότερες άλλες λύσεις που βασίζονται σε συνθήκες μάθησης και ανάλυσης, είναι δυσλειτουργίες.
    Επομένως, θα πρέπει να σκεφτείτε αν θα χτυπήσετε δεκάδες χιλιάδες δολάρια σε τέτοια προστασία.

    "Censored, άρχισε. Τι να κάνετε;"

    Το κύριο πράγμα δεν είναι πανικός. Πριν από την άμεση έναρξη της επίθεσης των bots "θερμαινόμενη", αυξάνοντας σταδιακά τη ροή των πακέτων στην επιτιθέμενη μηχανή. Είναι σημαντικό να πιάσετε τη στιγμή και να ξεκινήσετε ενεργές ενέργειες. Θα βοηθήσει σε αυτή τη μόνιμη παρακολούθηση του δρομολογητή που συνδέεται με το εξωτερικό δίκτυο (ανάλυση γραφικών NetFlow). Στο θύμα του διακομιστή, είναι δυνατόν να προσδιοριστεί η αρχή της επίθεσης με τα κατάλληλα μέσα.

    Η παρουσία της SYN-πλημμύρας έχει ρυθμιστεί εύκολα - με την καταμέτρηση του αριθμού των συνδέσεων "Half-Open" TCP:

    Οι τιμές, αρκετές φορές υψηλότερες από τον μέσο όρο, δίνουν λόγους να σκεφτούν. Στη συνέχεια, προβάλετε τη λίστα των διευθύνσεων IP από τις οποίες πηγαίνουν οι αιτήσεις σύνδεσης:

    Βεβαιωθείτε ότι υπάρχει η διεπαφή ETH1. Ελέγξτε το εύκολο - ifconfig. Σε ποια περίπτωση αντικαταστήστε σας.

    Η ένδειξη είναι ένα μεγάλο ρεύμα μονοτονικού (και δεν περιέχει χρήσιμες πληροφορίες) πακέτων από διαφορετικά IPs που απευθύνονται σε μία θύρα / υπηρεσία (για παράδειγμα, μια ρίζα διακομιστή ιστού ή ένα συγκεκριμένο σενάριο CGI).
    Τέλος αποφασισμένος, αρχίζοντας να εγκαταλείπετε τις διευθύνσεις IP (θα υπάρξει πολύ περισσότερο αποτέλεσμα αν το κάνετε στο δρομολογητή):

    Αυτό θα σας δώσει κάποιες αποδόσεις (πολύ μικρές, συχνά η διεύθυνση IP πηγής), η οποία πρέπει να χρησιμοποιήσετε για να επικοινωνήσετε με τον πάροχο / κεντρικό υπολογιστή (με τα αρχεία καταγραφής διακομιστή που είναι συνδεδεμένα στο αρχείο καταγραφής, πυρήνα, τείχος προστασίας και λίστα IP διευθύνσεις που προσδιορίζονται).
    Οι περισσότεροι από αυτούς, φυσικά, αγνοούν αυτό το μήνυμα (και η φιλοξενία με την πληρωμή της κυκλοφορίας θα είναι επίσης ευτυχισμένη - η επίθεση DOS θα φέρει τα κέρδη τους) ή απλά να απενεργοποιήσετε το διακομιστή σας. Αλλά σε κάθε περίπτωση, θα πρέπει να γίνει αναγκαστικά - η αποτελεσματική προστασία από την DDOS είναι δυνατή μόνο σε κανάλια κορμού. Μόνο, θα αντιμετωπίσετε μικρές επιθέσεις που στοχεύουν στην εξάντληση των πόρων του διακομιστή, αλλά θα είναι ανυπεράσπιστες πριν από ένα πιο ή λιγότερο σοβαρό DDOS "OHM.

    Δεν χρειάζεται να αντιγράψετε τα πάντα από εδώ και εισάγετε στο config. Ελέγξτε πρώτα, η παράμετρος έχει ήδη οριστεί και αξίζει τον επαναπροσδιορισμό. για παράδειγμα

    Cat /etc/sysctl.conf | grep net.ipv6.conf.lo.cisable_ipv6

    Θα στείλουμε δύο διακομιστές: frontend (θα εκτελέσει το ρόλο του διακομιστή φίλτρων: nginx, iptables, naxsi \\ mucurity, fail2ban κ.λπ.) και backend (προστατευτική εφαρμογή ιστού). Σε αυτό το άρθρο, θα περιγραφούν πρακτικά παραδείγματα κακόβουλου φιλτραρίσματος κυκλοφορίας από τον διακομιστή περίπτερο.

    1. Βελτιστοποιήστε το λειτουργικό σύστημα

    Το πρώτο πράγμα είναι η βελτιστοποίηση του λειτουργικού συστήματος στον διακομιστή περίπλοκου για βαριά φορτία. Επεξεργαστείτε το αρχείο /etc/sysctl.conf:

    ## Βελτιστοποίηση του RAM
    kernel.shmmax \u003d xxx
    kernel.shmall \u003d xxx

    ## Βελτιστοποίηση του υποσυστήματος εξόδου μηνυμάτων
    kernel.msgmnb \u003d 65536.
    Kernel.msgmax \u003d 65536.

    ## Βελτιστοποίηση της εργασίας με ανταλλαγή
    vm.swappiness \u003d 10.
    vm.dirty_ratio \u003d 40.
    vm.dirty_background_ratio \u003d 5.

    ## Βελτιστοποίηση του υποσυστήματος εργασίας με αρχεία ("Πάρα πολλά ανοίγματα αρχείων")
    FSILE-MAX \u003d 2097152

    ## Βελτιστοποίηση υποσυστήματος δικτύου
    net.ipv4.ip_forward \u003d 1.
    net.core.somaxconn \u003d 65535.
    net.netfilter.nf_conntrack_max \u003d 10000000.
    net.netfilter.nf_conntrack_tcp_lose \u003d 0.
    net.netfilter.nf_conntrack_tcp_timeout_establed \u003d 1800.
    net.netfilter.nf_conntrack_tcp_timeout_close \u003d 10.
    net.netfilter.nf_conntrack_tcp_timeout_close_wait \u003d 10.
    net.netfilter.nf_conntrack_tcp_timeout_fin_wait \u003d 20.
    net.netfilter.nf_conntrack_tcp_timeout_last_ack \u003d 20.
    net.netfilter.nf_conntrack_tcp_timeout_syn_recv \u003d 20.
    net.netfilter.nf_conntrack_tcp_timeout_syn_sent \u003d 20.
    net.netfilter.nf_conntrack_tcp_timeout_time_wait \u003d 10.
    net.ipv4.tcp_congestion_control \u003d hybla
    net.ipv4.trcp_slow_start_after_idle \u003d 0.
    Net.ipv4.ip_local_port_range \u003d 1024 65000
    net.ipv4.ip_no_pmtu_disc \u003d 1.
    net.ipv4.route.flush \u003d 1.
    net.ipv4.route.max_size \u003d 8048576.
    net.ipv4.icmp_echo_ignore_broadcasts \u003d 1.
    net.ipv4.icmp_ignore_bogus_error_responses \u003d 1.
    net.ipv4.tcp_mem \u003d 65536 131072 262144
    net.ipv4.udp_mem \u003d 65536 131072 262144
    net.ipv4.tcp_rmem \u003d 4096 87380 33554432
    Net.ipv4.udp_rmem_min \u003d 16384.
    net.ipv4.tcp_wmem \u003d 4096 87380 33554432
    Net.ipv4.udp_wmem_min \u003d 16384.
    net.ipv4.tcp_max_tw_buckets \u003d 1440000.
    net.ipv4.tcp_tw_recycle \u003d 0.
    net.ipv4.tcp_tw_reuse \u003d 1.
    net.ipv4.tcp_max_orphans \u003d 400000.
    net.ipv4.tcp_window_scaling \u003d 1.
    net.ipv4.tcp_rfc1337 \u003d 1.
    net.ipv4.tcp_syncookies \u003d 1.
    net.ipv4.tcp_synack_reetries \u003d 1.
    net.ipv4.tcp_syn_reetries \u003d 2.
    net.ipv4.tcp_max_syn_backlog \u003d 16384.
    net.ipv4.tcp_timestamps \u003d 1.
    net.ipv4.tcp_sack \u003d 1.
    net.ipv4.tcp_fack \u003d 1.
    net.ipv4.tcp_ecn \u003d 2.
    net.ipv4.tcp_fin_timeout \u003d 10.
    net.ipv4.tcp_eeprealive_time \u003d 600.
    net.ipv4.tcp_eeprealive_intvl \u003d 60.
    net.ipv4.tcp_eeprealive_probes \u003d 10.
    net.ipv4.tcp_no_metrics_save \u003d 1.
    net.ipv4.conf.all.accept_redirects \u003d 0.
    net.ipv4.conf.all.send_redirce \u003d 0.
    net.ipv4.conf.all.accept_source_route \u003d 0.
    net.ipv4.conf.all.rp_filter \u003d 1.

    Οι τιμές των παραμέτρων του Kernel.Shmmmax και του Kernel.shmall υπολογίζονται με βάση τον όγκο του RAM. Για να μετρήσετε, μπορείτε να χρησιμοποιήσετε το σενάριο:

    #! kernel.shmall \u003d $ shmall

    Αυτές οι παράμετροι θα βελτιστοποιήσουν τη λειτουργία του συστήματος για υψηλά φορτία. Η εφαρμογή των αλλαγών γίνεται από την εντολή "systl -p" ή το σύστημα επανεκκίνησης.

    2. Iptables.

    Φιλτράρετε τις επιθέσεις στο δίκτυο \\ επίπεδο μεταφοράς χρησιμοποιώντας τα iptables:

    ## Αποκλεισμός μη έγκυρων συσκευασιών
    Iptables -a input -i eth0 -m conntrack - utstate invalid -j drop
    ## Αποκλεισμός νέων πακέτων που δεν έχουν σημαία syn
    Iptables -a input -i eth0 -p tcp! --Syn -M conntrack - cctstate new -j drop
    ## Αποκλεισμός μη τυποποιημένων MSS τιμές
    Iptables -a input -i eth0 -p tcp -m conntrack - uctstate new-m tcpmss! - MMSS 536: 65535-Drop
    ## Αποκλεισμός κατακερματισμένων πακέτων
    Iptables -a input -i eth0 -f -j drop
    ## Αποκλεισμός πακέτων με εσφαλμένες σημαίες TCP
    Iptables -a input -i eth0 -p tcp - dcp-flags fin, syn, rst, psh, ack, Urg none -j drop
    Iptables -a input -i eth0 -p tcp --tcp-flags fin, syn fin, syn -j drop
    Iptables -a input -i eth0 -p tcp - dcp-flags syn, rst syn, rst -j drop
    Iptables -a input -i eth0 -p tcp --tcp-flags syn, fin syn, fin -j drop
    Iptables -a input -i eth0 -p tcp - dcp-flags fin, rst fin, rst -j drop
    Iptables -a input -i eth0 -p tcp --tcp-flags fin, ack fin -j drop
    Iptables -a input -i eth0 -p tcp --tcp-flags ack, urg ur-drop
    Iptables -a input -i eth0 -p tcp --tcp-flags ack, fin fin -j drop
    Iptables -a input -i eth0 -p tcp --tcp-flags ack, psh psh -j drop
    Iptables -a input -i eth0 -p tcp - dcp-σημαίες όλες all -j drop
    Iptables -a input -i eth0 -p tcp - dcp-σημαίες όλα "
    Iptables -a inport -i eth0 -p tcp - dcp-flags όλα πτερύγια, psh, urg -j drop
    Iptables -a input -i eth0 -p tcp - dcp-σημαίες όλα syn, fin, psh, urg -j drop
    Iptables -a input -i eth0 -p tcp - ncp-flags όλα syn, rst, ack, fin, urg -j drop
    ## λιμάνια αγορών
    Iptables -n port-scanning
    Iptables -a port-scanning -p tcp - ncp-flags syn, ack, fin, rst rst-m όριο - 100 / s - 100 slimit-burst 2 -j επιστροφή
    IPTIBLESA Port-Scanning -J Drop

    Περιορίζουμε τον αριθμό των συνδέσεων με έναν διακομιστή ιστού:

    Iptables -a input -i eth0-et eth1 -p tcp --ssyn -m multiport - mopports 80,443 -m connlimit - connllimit-πάνω από 30 - connlllllllllllllllllll
    Iptables -a inport -i eth0-et eth1 -p tcp -m multiport - deports 80,443-dece

    Οι κανόνες θα περιορίσουν τον αριθμό των συνεδριών που έχουν οριστεί έως 30 ανά δευτερόλεπτο για κάθε εξωτερική διεύθυνση. Η τιμή επιλέγεται ξεχωριστά, ανάλογα με τον τύπο της εφαρμογής Web. Κατά κανόνα, θα είναι αρκετές 30 τιμές για τη Connlimit-παραπάνω.

    3. Nginx

    3.1 Αποκλεισμός περιττών έκκλησης

    Θα διαμορφώσετε το Nginx στον διακομιστή περίπτωσης με τέτοιο τρόπο ώστε να περιορίσετε την υπερβολική πρόσβαση στο διακομιστή. Επεξεργαστείτε το αρχείο VHOST:

    # Nano / etc / nginx / sit-enabled / frontend

    Limit_req_zone $ binary_remote_addrzone \u003d θέση: 10m τιμή \u003d 10r / s;
    Διακομιστής (
    Ακούστε 80;
    Server_name site;
    ...
    }
    τοποθεσία / (
    proxy_pass ...
    ...
    Limit_req ζώνη \u003d site burst \u003d 20;
    limit_req_log_level Σφάλμα;
    limit_req_status 503;
    ...
    }

    Έτσι, η Nginx θα προχωρήσει στην πρόσβαση στον πελάτη στον διακομιστή backend όχι περισσότερο από 10 αιτήματα ανά δευτερόλεπτο (ρυθμός παραμέτρου). Οι υπερβολικές προσφυγές θα συσσωρευτούν στην ουρά και το πληρεξούσιο, καθώς απελευθερώνεται η "πισίνα" των προσφυγών. Εάν ο αριθμός των προσφυγών υπερβεί την τιμή 20 (παράμετρος έκρηξης), το Nginx στο μπροστινό μέρος θα αρχίσει να παρέχει 503 λάθη μέχρι να αρχίσει να απελευθερωθεί η πισίνα.

    3.2 Αποκλεισμός ύποπτων χρηστών

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

    # Nano /etc/nginx/nginx.conf.

    Χάρτης $ http_user_agent $ bad_useragent (
    Περιλαμβάνουν / etc / nginx / bad_useragents;
    }

    # Nano / etc / nginx / bad_useragents

    ~ * nmap 1;
    ~ * nikto1 1;
    ~ * Wikto 1;
    ~ * sf 1;
    ~ * sqlmap 1;
    ~ * bsqlbf 1;
    ~ * Acunetix 1;
    ~ * havij 1;
    ~ * AppScan 1;
    ~ * Wpscan 1;
    ~ * Mj12bot 1;
    ~ * Apachebench 1;
    ~ * WordPress 1;
    ~ * Dirbuster 1;
    ~ * perl 1;
    ~ * Phpstorm 1;
    ~ * Python 1;
    ~ * W3AF 1;
    ~ * Whathaeb 1;
    ~ * Arachni 1;
    ~ * Xspider 1;
    ~ * Ύδρα 1;
    ~ * Evasions 1;
    ~ * OpenVas 1;
    ~ * Visionutils 1;
    ~ * Συναυρίδα 1;
    ~ * Http_request2 1;
    ~ * BEZELTHTTP 1;
    ~ * Πάρος 1;
    ~ * Συναυρίδα 1;
    ~ * Python-urllib 1;

    Ξεχωριστά, αξίζει να δοθεί προσοχή στον πράκτορα χρήστη "WordPress". Εάν η προστατευμένη εφαρμογή Web δεν χρησιμοποιεί το CMS WordPress, ή η λειτουργικότητα "Track-back-back" και "ping-back" δεν έχει προγραμματιστεί να χρησιμοποιηθεί (πιθανότατα), μπλοκάρισμα αιτημάτων στον πράκτορα χρήσης θα σας επιτρέψει να εμποδίσετε τις επιθέσεις Χρησιμοποιώντας τα χαρακτηριστικά της εφαρμογής μιας τέτοιας λειτουργικότητας στο WordPress. Για να μελετήσετε τα χαρακτηριστικά μιας τέτοιας επιθέσεων μπορεί να είναι.

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

    ΥΣΤΕΡΟΓΡΑΦΟ.: Βεβαιωθείτε ότι άλλες υπηρεσίες διακομιστή Frontend είναι καλά προστατευμένες και δεν επιτρέπουν σε έναν εισβολέα να πάρει απομακρυσμένη πρόσβαση (για παράδειγμα, SSH ή FTP).

    Under: Εναλλακτικά, μπορείτε να δοκιμάσετε το Nemesida WAF Free - εντελώς δωρεάν, που παρουσιάζεται με τη μορφή μιας δυναμικής μονάδας Nginx, είναι εγκατεστημένο και ενημερώνεται από το αποθετήριο, δεν απαιτεί συλλογή, συνδέεται σε λίγα λεπτά στο ήδη εγκατεστημένο nginx. waf.penestit.ru/about/2511

    Μπορείτε να καθίσετε όπως αυτό, δεν αγγίζετε κανέναν και στη συνέχεια καλέσετε και πείτε ότι οι υπηρεσίες λειτουργούν αργά, οι τοποθεσίες ανοίγουν για 2-3 λεπτά κατάφεραν να παράγουν 504 λάθη.
    Αναστατωμένος αναρρίχηση σε κάκτους και υπάρχει:

    Παρακάτω θα είναι οι εντολές που θα σας βοηθήσουν να καταλάβετε τι συνέβη και είναι ακριβώς DDOS.

    Πρώτον, συνιστώ να διαβάσετε το άρθρο σε αυτό λεπτομερώς περιέγραψε ποια αρχεία καταγραφής μας ενδιαφέρουν πώς να διαβάσετε την κορυφαία έξοδο εντολών και πώς να χρησιμοποιήσετε την ομάδα PS. Όλοι τους θα είναι χρήσιμοι για να καταλάβουμε ποιες οικοδεσπότες έχουμε υποβληθεί σε επίθεση και ποια σημεία σημείων υπάρχουν στο διακομιστή.

    Τι ομάδες, και τι μπορούμε να καθορίσουμε;

    Για να ξεκινήσετε, μπορείτε να δείτε τον αριθμό των διαδικασιών λειτουργίας Apache. Εάν περισσότερο από 20-30 είναι περισσότερο από 20-30, τότε κάτι δεν είναι έτσι.

    Εξετάζουμε τον αριθμό των διαδικασιών Apache στο Debian:

    PS AUX | Apache Grep | Wc -l.

    Εξετάζουμε τον αριθμό των διαδικασιών Apache στο Centos:

    PS AUX | Grep httpd | Wc -l.

    Αυτή η εντολή μπορούμε να δούμε τον αριθμό των συνδέσεων με το διακομιστή:

    CAT / PROC / NET / IP_CONNTRACK | Wc -l.

    Επίσης, ο δείκτης που ο διακομιστής έρχεται στον διακομιστή μπορεί να χρησιμεύσει ως ο αριθμός των συνδέσεων σε θύρα 80 ή 443. Εδώ είναι οι ομάδες ικανές να δείξουν αυτόν τον αριθμό:

    Netstat -na | GREP: 80 | Wc -l netstat -na | GREP: 443 | Wc -l.

    Υπάρχει ακόμα μια τέτοια ποικιλία DDOD ως SYN. Παρακάτω είναι μια εντολή που σας επιτρέπει να προσδιορίσετε τον αριθμό των αιτημάτων SYN για τις ίδιες θύρες 80 και 443:

    Netstat -na | GREP: 80 | GREP SYN | Sort -u | Περισσότερο netstat -na | GREP: 443 | GREP SYN | Sort -u | Περισσότερο

    Και αυτή η εντολή δείχνει τον αριθμό των αιτημάτων SYN:

    Netstat -n -t | Grep syn_recv | Wc -l.

    Η ακόλουθη εντολή θα μας επιτρέψει να καταλάβουμε τι τομέα είναι το μεγαλύτερο μέρος όλων των αιτημάτων:

    Tcpdump -npi domain eth0 θύρας

    Τώρα ας δούμε πόσα αιτήματα προέρχονται από κάθε IP. Αυτή η εντολή εμφανίζει όλες τις θύρες:

    Netstat -ntu | AWK "(Εκτύπωση $ 5)" | Cut -d: -f1 | Ταξινόμηση | Uniq -c | Sort -nr | Περισσότερο

    Παρόμοιες εντολές:

    Netstat -Anp | Grep "TCP \\ | UDP" | | AWK "(Εκτύπωση $ 5)" | Cut -d: -f1 | Ταξινόμηση | Uniq -c | Sort -n netstat -antu | AWK "$ 5 ~ /: / (Split ($ 5, A,": "); IPS [A] ++) Τέλος (για (IP σε IPS) Εκτύπωση IPS, IP |" SORT -K1 -NR ")"

    Αυτή η εντολή δείχνει τον αριθμό των αιτημάτων μόνο σε 80 θύρες:

    Netstat -ntu | Grep ": 80 \\" | AWK "(Εκτύπωση $ 5)" | Cut -d: -f1 | Ταξινόμηση | Uniq -c | Sort -nr | Περισσότερο

    Αυτή η εντολή εμφανίζει όλα τα αιτήματα για 80 θύρα, χωρίς να τις υπολογίζετε, δηλ. "Απλοποιημένη" αλλά "πιο ολοκληρωμένη" επιλογή εξόδου:

    Netstat -na | GREP: 80 | Ταξινόμηση | Uniq -c | Sort -nr | Περισσότερο

    Ο υπολογισμός της πιο ενεργού IP μπορεί επίσης να εξετάσει ποιες θύρες πηγαίνουν από το ζητεί. Εδώ για παράδειγμα, το IP 127.0.0.1 είναι υποκατεστημένο:

    Netstat -na | 87.0.0.1

    Με την ευκαιρία, εάν δεν έχετε ρυθμιστεί με κατάσταση διακομιστή στο Apache, τότε η κατάσταση αυτού του διακομιστή μπορεί να προβληθεί στο CLI:

    Κατάσταση Apachectl.

    Αρχεία καταγραφής

    Τα παγκόσμια αποστολές Apache, ο Debian, είναι συνήθως εκεί:

    • /var/log/apache2/error.log.
    • /var/log/apache2/access.log.
    • /var/log/httpd/error.log.
    • /var/log/httpd/access.log.

    Τα παγκόσμια αρχεία καταγραφής Nginx υπάρχουν:

    /var/log/nginx/error.log.
    /var/log/nginx/access.log.

    Επίσης, μην ξεχάσετε να δείτε τα αρχεία καταγραφής των εικονικών ξενιστών εάν οι οικοδεσπότες έχουν ρυθμιστεί. Θα μας ενδιαφέρουν το μεγαλύτερο κορμό που "μεγαλώνει" μπροστά.

    Είναι απαραίτητο να αναζητήσετε σε αυτά τα αρχεία καταγραφής μια ανωμαλία, δηλαδή τον ίδιο τύπο αιτημάτων χωρίς παράγοντες χρήστη (ή με το ίδιο), ένας μεγάλος αριθμός αιτημάτων από το ίδιο IP, αιτήματα χωρίς να καθορίζει έναν εικονικό κεντρικό υπολογιστή κ.λπ.

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

    Cat Access.log | AWK "(Εκτύπωση $ 1)" | Ταξινόμηση | Uniq -c.

    Μπορείτε επίσης να λάβετε στατιστικά στοιχεία σχετικά με αιτήματα με ομαδοποίηση IP χρησιμοποιώντας το βοηθητικό πρόγραμμα LOGTOP.

    Για να ξεκινήσετε, εγκαταστήστε αυτό το βοηθητικό πρόγραμμα:

    Apt-get install git libncurses5-dev uthash-dev gcc # σε περίπτωση που δεν έχετε πακέτα για σωστή λειτουργία git git κλώνο https://github.com/julienpalard/logtop.git

    Και τώρα θα λάβουμε στατιστικά στοιχεία:

    Tail -F Access.log | AWK ("Εκτύπωση $ 1, fflush ();") | Logtop.

    Η ακόλουθη εντολή θα μας βοηθήσει να εντοπίσουμε τους δημοφιλείς πράκτορες χρήστη:

    Cat Access.log | Awk -f \\ "" (εκτύπωση $ 6) "| ταξινόμηση | uniq -c | sort -n

    Πώς να μπλοκάρει;

    Εν πάση περιπτώσει, πρέπει να σταθείτε σε iptables. Πιθανότατα μπορεί να μην διαμορφωθεί, ειδικά αν δεν ξέρετε τι είναι. Νωρίτερα, έγραψα ήδη ένα άρθρο σχετικά με το πώς να το χρησιμοποιήσω: "", οπότε θα δώσω μόνο τις απαραίτητες εντολές για την επίλυση του προβλήματος εδώ και τώρα.

    Έτσι είναι δυνατόν Αποκλεισμός αιτημάτων TCP για 80 θύρα από συγκεκριμένη διεύθυνση IP:

    Iptables -a inport -p tcp -dport 80 -s 12.34.56.78-drop

    Έτσι εμείς Αποκλεισμός ερωτήματα για όλες τις θύρες από μια συγκεκριμένη IP:

    IPTables -A INPUT -S 12.34.56.78-Drop

    Προβολή λίστας που έχει ήδη αποκλειστεί Μπορούμε να δώσουμε αυτές τις ομάδες:

    Iptables -l -n.

    Iptables -l -n -n -line-alline

    Αν χρειαζόμαστε Αφαιρέστε από το μπλοκάρισμα μιας συγκεκριμένης IP, μπορείτε να χρησιμοποιήσετε αυτήν την εντολή

    IPTable -D INPUT -S 1.2.3.4 -J

    ή είναι δυνατόν Διαγράψτε τον κανόνα με τον αριθμό τουΑφού αναθεωρήσετε την εντολή του IPTIBLES -N -N -N -N -N -N-NING:

    Iptable -d input 6

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

    Iptables -f.

    Κάποια πρόληψη, προκειμένου να προστατεύεται από το DDOS ...

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

    Εγκαθιστούμε την επόμενη εντολή Μέγιστος αριθμός συνδέσεων από ένα IP σε 80 θύρα:

    Iptables -a inport -p tcp -dport 80 -m connlimit - connllimit-πάνω από 128 -J drop iptables -a inport-ps tcp --pport 80-jpspect

    Ιδιο Μπορείτε να κάνετε i. Για το DNS.:

    Iptables -a inport -p udp --port 53 -m connlimit - connlllllimit-πάνω από 16 -j drop iptables -a input -p udp - dapport 53 -j αποδεχθεί

    Ο ακόλουθος κανόνας στα iptables θα αποτρέψει μια άκρη από το όνομά μας. Κατά κανόνα, κατά τη διάρκεια της DDOS, λαμβάνουμε ένα πακέτο με εγκατεστημένες σημαίες SYN και ACK σε μια μη ανοιχτή σύνδεση (αυτός ο συνδυασμός σημαδιών έχει μόνο την απάντηση στο πακέτο SYN). Αυτό υποδηλώνει ότι κάποιος έστειλε έναν άλλο οικοδεσπότη syn υποδοχής από το όνομά μας και η απάντηση ήρθε σε εμάς.
    Σύμφωνα με αυτόν τον κανόνα, ο οικοδεσπότης μας θα απαντήσει με ένα πακέτο RST, αφού η παραλαβή του επιτιθέμενου ξενιστή κλείνει τη σύνδεση.

    Iptables -i εισόδου -M conntrack - cctstate New, Invalid -P TCP --TCP-FLARS SYN, ACK SYN, ACK -J Απόρριψη - Reset - με TCP-RESET

    Iptables-save\u003e /etc/iptables.rules

    Τι άλλο μπορείς να κάνεις?

    Δεν εμποδίζει ένα κομμάτι "outstuning" τον πυρήνα, να κάνει μια λεπτή ρύθμιση του Apache και του Nginx (εάν αξίζει), τοποθετήστε πρόσθετες μονάδες και πακέτα για να προστατεύσετε έναντι των επιθέσεων, όπως αποτυχία2Ban, mod_evisization, modsecurity ..

    Αλλά όλα αυτά είναι τα θέματα άλλων άρθρων που σύντομα θα γραφτούν ...

    Συνεχίζοντας το θέμα:
    Δίκτυο

    Μετά την πρώτη εμφάνιση του δισκίου στην αγορά συσκευών του υπολογιστή, δεν υπήρχε χρόνο, καθώς ένας tablet PC έγινε ανεξάρτητη μονάδα. Παγκόσμια μάρκες όπως η Samsung και η Apple ...