Διαχωρίστε τη δημοσίευση του HTTP από την εκτέλεση της εφαρμογής και τα μόνιμα δεδομένα. Ένας αντίστροφος διακομιστής μεσολάβησης μπορεί να οργανώσει τη δρομολόγηση και τα όρια, αλλά η πρόσβαση στο origin, η εξουσιοδότηση της εφαρμογής, η χωρητικότητα του upstream και η ανάκτηση απαιτούν το καθένα τους δικούς του ελέγχους.
Ένα αίτημα web διαπερνά πολλές αρμοδιότητες
Ένας διακομιστής web λαμβάνει αιτήματα HTTP και μπορεί να σερβίρει στατικά αρχεία. Μια διεργασία εφαρμογής εκτελεί τη δυναμική συμπεριφορά του έργου, όπως τον έλεγχο ενός λογαριασμού ή την αναζήτηση σε μια βάση δεδομένων. Ένας αντίστροφος διακομιστής μεσολάβησης λαμβάνει αιτήματα για λογαριασμό αυτής της διεργασίας και τα προωθεί σε ένα upstream. Ένα πρόγραμμα μπορεί να εκπληρώσει πολλούς ρόλους, αλλά ο διαχωρισμός των αρμοδιοτήτων κάνει τη διαμόρφωση και την ανάκτηση ευκολότερες στην κατανόηση.
Ιχνηλατήστε ένα αίτημα από την επίλυση του ονόματος κεντρικού υπολογιστή έως την απόκριση. Καταγράψτε πού τελειώνει το TLS, ποια διεργασία επιλέγει τη διαδρομή και ποιο στοιχείο μπορεί να διαβάσει δεδομένα εφαρμογής. Κάντε το ίδιο για ένα αίτημα διαχείρισης. Αυτή η άσκηση συχνά αποκαλύπτει έναν ακροατή ή ένα όνομα κεντρικού υπολογιστή που δημιουργήθηκε για δοκιμή και παρέμεινε κατά λάθος προσβάσιμο. Το διάγραμμα πρέπει να περιγράφει την αναπτυγμένη διαδρομή και όχι την αρχιτεκτονική που ελπίζατε να υλοποιήσετε.
Χρησιμοποιήστε το άκρο για να οργανώσετε τη συμπεριφορά του HTTP
Το NGINX τεκμηριώνει τόσο το σερβίρισμα στατικού περιεχομένου όσο και την προώθηση αιτημάτων σε ένα upstream. Η αρχιτεκτονική των worker του και οι μονάδες HTTP παρέχουν μηχανισμούς διαμόρφωσης, αλλά μια συγκεκριμένη διαμόρφωση εξακολουθεί να καθορίζει τη συμπεριφορά. Ορίστε σκόπιμα ονόματα κεντρικών υπολογιστών, upstream και ρίζες συστήματος αρχείων. Περιορίστε τα αρχεία που μπορούν να σερβιριστούν, ώστε η διαμόρφωση, τα διαπιστευτήρια και τα μεταδεδομένα του αποθετηρίου να μην γίνονται ποτέ λήψιμα επειδή τυχαίνει να βρίσκονται κοντά στην εφαρμογή.
Ορίστε κατάλληλα όρια για τα σώματα αιτημάτων, τα χρονικά όρια και τις συνδέσεις ανάλογα με την εφαρμογή. Αντιμετωπίστε τις προσωρινές μνήμες ως απόφαση δεδομένων: περιεχόμενο που συνδέεται με χρήστη ή δικαίωμα δεν μπορεί να κληρονομήσει με ασφάλεια έναν κοινόχρηστο κανόνα προσωρινής αποθήκευσης χωρίς έλεγχο. Δοκιμάστε μαζί τη συμπεριφορά ταυτοποίησης και προσωρινής αποθήκευσης. Διατηρήστε μια αναπαραγώγιμη διαμόρφωση και επικυρώστε τις αλλαγές πριν από την επαναφόρτωση της υπηρεσίας, με μια γνωστή διαδρομή επιστροφής στην προηγούμενη λειτουργική έκδοση.
| Επίπεδο | Χρήσιμη αρμοδιότητα | Έλεγχος πριν από την έναρξη |
|---|---|---|
| Δημόσιο web άκρο | TLS, δρομολόγηση ονομάτων κεντρικών υπολογιστών και όρια HTTP | Πιστοποιητικά, ρίζες και προβλεπόμενα ονόματα κεντρικών υπολογιστών |
| Διεργασία εφαρμογής | Επιχειρησιακή λογική και εξουσιοδότηση | Ταυτοποίηση, έλεγχοι εισόδου και αποτυχία εξάρτησης |
| Εσωτερική υπηρεσία δεδομένων | Μόνιμη κατάσταση εφαρμογής | Περιορισμένη πρόσβαση και δοκιμασμένη επαναφορά |
| Δίκτυο παρόχου upstream | Η συμβεβλημένη υπηρεσία δικτύου | Πεδίο προστασίας και διαδρομή κλιμάκωσης |
Ένας αντίστροφος διακομιστής μεσολάβησης δεν αφαιρεί την έκθεση του origin
Εάν το origin παραμένει δημόσια προσβάσιμο, ένας πελάτης μπορεί να το προσεγγίσει χωρίς να χρησιμοποιήσει τη σκοπούμενη διαδρομή μεσολάβησης. Περιορίστε την πρόσβαση στο origin μέσω του σχεδιασμού δικτύου και της διαμόρφωσης της εφαρμογής όταν η ανάπτυξη απαιτεί αυτό το όριο. Σε έναν υπολογιστή, ένα backend μπορεί συχνά να ακούει στο loopback ή σε ένα τοπικό socket. Μεταξύ υπολογιστών, χρησιμοποιήστε ρητές περιορισμένες διαδρομές και κατάλληλη προστασία για τη σύνδεση upstream.
Οι προωθημένες κεφαλίδες χρειάζονται επίσης έναν κανόνα εμπιστοσύνης. Αποδεχτείτε πληροφορίες σχετικά με τον αρχικό πελάτη μόνο από αξιόπιστους ενδιάμεσους και εμποδίστε αυθαίρετους καλούντες να παρέχουν τιμές που η εφαρμογή θεωρεί έγκυρες. Αποφασίστε τι εμφανίζεται στα αρχεία καταγραφής πρόσβασης και στις αναφορές σφαλμάτων. Ένας διακομιστής μεσολάβησης μπορεί να αλλάξει τις πληροφορίες που είναι διαθέσιμες σε κάθε επίπεδο· δεν διαγράφει τα αναγνωριστικά λογαριασμού ούτε κάνει την εφαρμογή ανώνυμη στον δικό της φορέα εκμετάλλευσης.
Εφαρμόστε αποφάσεις πρόσβασης μέσα στην εφαρμογή
Η αρχιτεκτονική Zero Trust του NIST επικεντρώνεται σε αποφάσεις πρόσβασης για πόρους και όχι σε σιωπηρή εμπιστοσύνη που βασίζεται μόνο στη θέση στο δίκτυο. Εφαρμόστε αυτή την αρχή συγκεκριμένα: ταυτοποιήστε τον καλούντα, εξουσιοδοτήστε τη ζητούμενη λειτουργία και δώστε στους λογαριασμούς υπηρεσιών μόνο το απαιτούμενο πεδίο τους. Ένα αίτημα που φτάνει από ένα εσωτερικό υποδίκτυο δεν πρέπει να γίνεται αυτόματα αίτημα διαχειριστή.
Διαχωρίστε τις δημόσιες και τις διοικητικές λειτουργίες όπου είναι πρακτικό. Επανελέγξτε το δικαίωμα όταν ένας χρήστης αποκτά πρόσβαση σε μια εγγραφή αντί να βασίζεστε μόνο στην αρχική σύνδεση. Διατηρήστε τα διαπιστευτήρια για τον διακομιστή μεσολάβησης, την εφαρμογή και τη βάση δεδομένων ξεχωριστά. Εισαγάγετε αλλαγές σε στάδια που μπορούν να δοκιμαστούν, ξεκινώντας από μια στενή ευαίσθητη διαδρομή. Το να αποκαλείτε μια ανάπτυξη Zero Trust είναι λιγότερο χρήσιμο από το να αποδεικνύετε ότι μια απαγορευμένη ενέργεια απορρίπτεται πραγματικά στο στοιχείο που είναι υπεύθυνο για αυτήν.
Σχεδιάστε την άρνηση υπηρεσίας σε περισσότερα από ένα επίπεδα
Ένας κορεσμένος σύνδεσμος δικτύου και ένα δαπανηρό αίτημα εφαρμογής αποτυγχάνουν σε διαφορετικά σημεία. Ο περιορισμός ρυθμού στο web άκρο μπορεί να βοηθήσει στον περιορισμό των μοτίβων αιτημάτων, ενώ τα όρια της εφαρμογής μπορούν να περιορίσουν εργασίες όπως αναζητήσεις, μεταφορτώσεις ή εξαγωγές. Η μονάδα περιορισμού αιτημάτων του NGINX παρέχει έναν μηχανισμό· το κλειδί και τα κατώφλια πρέπει να ταιριάζουν με πραγματικούς χρήστες και να δοκιμάζονται ώστε να αποφεύγεται η απόρριψη νόμιμης κίνησης.
Η καθοδήγηση του OWASP για την άρνηση υπηρεσίας αντιμετωπίζει επίσης την εξάντληση πόρων στη συμπεριφορά της εφαρμογής. Θέστε χρονικά και μεγέθη όρια γύρω από δαπανηρές εργασίες, χρησιμοποιήστε οριοθετημένες ουρές και παρακολουθήστε σήματα αποτυχίας. Οι τοπικοί έλεγχοι δεν μπορούν να δημιουργήσουν χωρητικότητα σε έναν σύνδεσμο upstream που είναι ήδη κορεσμένος. Επιβεβαιώστε τη συγκεκριμένη προστασία δικτύου που περιλαμβάνεται στην επιλεγμένη προσφορά και προετοιμάστε μια διαδρομή κλιμάκωσης. Μην υποθέτετε ποτέ ότι η προστασία Επιπέδου 3–4 ενός καταλόγου αποδεικνύει επίσης προστασία για κάθε φόρτο εργασίας HTTP.
Κάντε την ανάκτηση μέρος της δημοσίευσης
Ελέγξτε τον ιστότοπο από έναν εξωτερικό πελάτη χρησιμοποιώντας το προβλεπόμενο όνομα κεντρικού υπολογιστή του. Επαληθεύστε το HTTPS, τις ανακατευθύνσεις, τους στατικούς πόρους, τις συνδέσεις και μια αντιπροσωπευτική συναλλαγή εφαρμογής. Επιβεβαιώστε ότι οι διοικητικοί ακροατές και τα ιδιωτικά αρχεία παραμένουν μη προσβάσιμα. Προσομοιώστε έναν σταματημένο upstream και ελέγξτε ότι το άκρο επιστρέφει μια ελεγχόμενη αποτυχία αντί να εκθέτει εσωτερικές λεπτομέρειες ή να περιμένει χωρίς όριο.
Για το Canvas, διαβάστε τους διαθέσιμους ελέγχους εντός του λογαριασμού φιλοξενίας. Για ένα VPS, διατηρήστε το web άκρο και την εφαρμογή ως μέρος του δικού σας επιχειρησιακού σχεδίου. Μια μεγάλη θύρα δικτύου είναι προδιαγραφή χωρητικότητας, όχι απόδειξη ότι η εφαρμογή μπορεί να διατηρήσει αυτή τη ρυθμαπόδοση. Διατηρήστε την παρακολούθηση, την επαναφορά και τις επαφές του παρόχου στο εγχειρίδιο λειτουργίας. Δημοσιεύστε μόνο αφού επαληθευτούν η πραγματική διαδρομή αιτήματος και μια πρακτική διαδρομή ανάκτησης.
Η πρακτική λίστα ελέγχου σας.
- Ιχνηλατήστε ένα δημόσιο και ένα διοικητικό αίτημα.
- Ορίστε σερβιριζόμενες ρίζες και ακροατές upstream.
- Εμπιστευτείτε τις προωθημένες κεφαλίδες μόνο από εγκεκριμένους ενδιάμεσους.
- Δοκιμάστε την εξουσιοδότηση και τα όρια της προσωρινής μνήμης.
- Προετοιμάστε όρια και κλιμάκωση για αποτυχίες δικτύου και εφαρμογής.
Οι λεπτομέρειες που έχουν σημασία.
Μπορεί ένας διακομιστής web να λειτουργήσει και ως αντίστροφος διακομιστής μεσολάβησης;+
Ναι. Το NGINX είναι ένα τεκμηριωμένο παράδειγμα. Οι ρόλοι του εξαρτώνται από τη διαμόρφωση και η εφαρμογή εξακολουθεί να χρειάζεται τη δική της εξουσιοδότηση και συντήρηση.
Ένας αντίστροφος διακομιστής μεσολάβησης κρύβει αυτόματα το origin;+
Όχι. Το origin μπορεί να παραμείνει προσβάσιμο εκτός εάν η δρομολόγηση, το τείχος προστασίας και οι ρυθμίσεις του ακροατή επιβάλλουν το προβλεπόμενο όριο.
Θα σταματήσει ο περιορισμός αιτημάτων κάθε επίθεση DDoS;+
Όχι. Αντιμετωπίζει επιλεγμένα μοτίβα αιτημάτων HTTP. Ο κορεσμός δικτύου και άλλες αποτυχίες πόρων απαιτούν κατάλληλους ελέγχους upstream και εφαρμογής.
Πηγαίνετε στην πηγή.
Αυτές οι αναφορές υποστηρίζουν τις τεχνικές έννοιες σε αυτόν τον οδηγό. Ακολουθήστε την τρέχουσα τεκμηρίωση πριν αλλάξετε ένα σύστημα παραγωγής.
- NGINX: Οδηγός για αρχάριους nginx.org
- NGINX: Περιορισμός αιτημάτων HTTP nginx.org
- NIST SP 800-207: Αρχιτεκτονική Zero Trust nvlpubs.nist.gov
- OWASP: Πρόληψη Άρνησης Υπηρεσίας cheatsheetseries.owasp.org
Συντακτική καθοδήγηση από SwissOctet. Τα παραδείγματα είναι ενδεικτικά. Οι προδιαγραφές υπηρεσιών, οι διαθέσιμες επιλογές και οι συμβατικοί όροι πρέπει να επαληθεύονται ξεχωριστά.