Προσωρινοί σύνδεσμοι λιστών επιτρεπόμενων IP: τι πραγματικά επιτρέπει η παραχώρηση
Ένας σύνδεσμος που ανοίγει θύρα τείχους προστασίας επιτρέπει μια διεύθυνση, όχι ένα πρόσωπο. Καθορίστε το εύρος, απαιτήστε συνειδητή επιβεβαίωση και δοκιμάστε την επανάληψη, τη λήξη και το IPv6.
Η μετατροπή ενός κλικ σε προσωρινό κανόνα τείχους προστασίας είναι βολική και παράλληλα χτίζει ένα σύστημα εξουσιοδότησης που αποφασίζει ποιος μπορεί να φτάσει σε μια υπηρεσία. Αυτό που εκδίδει είναι μια διεύθυνση και όχι ένα πρόσωπο, και αυτή η διαφορά μετράει τη στιγμή που δύο άνθρωποι μοιράζονται ένα NAT. Περιορίστε το εύρος της παραχώρησης, επιβεβαιώστε την συνειδητά και δώστε νόημα στη λήξη πριν χτιστεί ο σύνδεσμος. Η απόφαση μπροστά σας είναι πού θα μπει το όριο, όχι αν πρέπει να υπάρχει όριο.
Αποφασίστε σε ποια ερώτηση απαντά η παραχώρηση
Ξεκινήστε από την απαίτηση. Αν ένα συγκεκριμένο πρόσωπο πρέπει να φτάσει στην υπηρεσία και η εφαρμογή ταυτοποιεί ήδη αυτό το πρόσωπο, μια πιστοποιημένη πύλη κρατά την ταυτότητα στο σημείο επιβολής και δεν χρειάζεται καθόλου αποδοχή διεύθυνσης. Αν ο στόχος είναι ένας πράκτορας build, μια διαχειριστική θύρα άλματος ή μια συσκευή που δεν μπορεί να συμμετάσχει στη σύνδεση χρήστη, μια παραχώρηση διεύθυνσης με στενό εύρος μπορεί να είναι ο μόνος πρακτικός έλεγχος.
Η επιλογή αποδοχής διεύθυνσης για μια εφαρμογή που απευθύνεται σε χρήστες μεταφέρει το πραγματικό πρόβλημα εξουσιοδότησης αλλού, και τότε η πύλη κληρονομεί την ευθύνη για ένα κενό που ποτέ δεν έκλεισε.
Περιορίστε το αίτημα στον διακομιστή
Το πρόγραμμα περιήγησης δεν πρέπει να επιλέγει τον προορισμό, τη θύρα ή το πρόθεμα. Η πύλη εντοπίζει την υπηρεσία από τα δικά της αρχεία και ελέγχει το δικαίωμα με δοκιμή στην πλευρά του διακομιστή, που είναι η ίδια αρχή που οι οδηγίες εξουσιοδότησης του OWASP εφαρμόζουν σε κάθε αίτημα. Η εξαγωγή της διεύθυνσης ανήκει επίσης στο προστατευμένο όριο: όταν ένας αντίστροφος διαμεσολαβητής αναφέρει τη διεύθυνση του πελάτη, δέχεστε μόνο την διαμορφωμένη αλυσίδα διαμεσολαβητών και τον τεκμηριωμένο χειρισμό κεφαλίδων της. Μια κεφαλίδα προώθησης που παρέχει ένας επισκέπτης είναι ισχυρισμός για την προέλευση, όχι απόδειξη της.
Στη συνέχεια ελέγξτε ότι η πύλη και η υπηρεσία βλέπουν την ίδια πηγή. Η διαχωρισμένη σήραγγα, ένα άλμα διαμεσολαβητή και το IPv4 έναντι του IPv6 μπορούν να δώσουν σε δύο προορισμούς δύο διαφορετικές διευθύνσεις, οπότε μια παραχώρηση που ενεργοποιήθηκε από ένα μονοπάτι μπορεί να μην καλύπτει το επόμενο αίτημα.
Δείξτε την παραχώρηση πριν την εγκαταστήσετε
Το άνοιγμα ενός συνδέσμου θα πρέπει να εμφανίζει την προτεινόμενη υπηρεσία, την παρατηρούμενη πηγή και τη διάρκεια, και να μην αλλάζει ακόμη τίποτα. Αυτό το ένα βήμα μετατρέπει τον σύνδεσμο από το email από ενέργεια σε πρόταση και εμποδίζει ένα ρομπότ προεπισκόπησης ή έναν σαρωτή αλληλογραφίας να παραχωρήσει πρόσβαση απλώς ανακτώντας τον.
Η επιβεβαίωση θα πρέπει να είναι ένα αίτημα που αλλάζει κατάσταση με τις συνήθεις άμυνες κατά cross-site και προέλευσης. Το διακριτικό θα πρέπει να είναι μίας χρήσης και να καταναλώνεται ατομικά τη στιγμή που εγκαθίσταται ο κανόνας, και η εγγραφή θα πρέπει να καταγράφει τον κάτοχο, την υπηρεσία, τη διεύθυνση, το αναγνωριστικό της παραχώρησης και τη λήξη χωρίς ποτέ να καταγράφει το ακατέργαστο διακριτικό.
Η παράδοση του διακριτικού αξίζει την ίδια φροντίδα με τον κανόνα. Ένας σύνδεσμος που έχει λήξει ή έχει ήδη καταναλωθεί και εξακολουθεί να παράγει κανόνα είναι μια δεύτερη πόρτα εξοπλισμένη με το ίδιο κλειδί.
Η διεύθυνση μοιράζεται ακόμη και όσο ζει η παραχώρηση
Το NAT γραφείου, το NAT παρόχου και μια κοινόχρηστη έξοδος VPN βάζουν το καθένα πολλά άτομα πίσω από μία διεύθυνση. Η αποδοχή αυτής της διεύθυνσης αποδέχεται όλους όσους βρίσκονται πίσω της — όσο αφορά το επόμενο όριο της υπηρεσίας —, χωρίς να αποδεικνύει τίποτα για το ποιος κρατά τον λογαριασμό που περιμένει η υπηρεσία.
Η αφαίρεση του κανόνα δεν είναι ούτε καθολική αποσύνδεση. Οι εδραιωμένες συνδέσεις, τα διακριτικά εφαρμογών στην προσωρινή μνήμη και οι μακρόβιες συνεδρίες μπορούν να επιβιώσουν του κανόνα για λεπτά ή πολύ περισσότερο, οπότε η διάρκεια ζωής που επιλέγετε θα πρέπει να αντανακλά τι κάνει η υπηρεσία μετά την αποδοχή και όχι μόνο πόσο υπάρχει ο κανόνας.
Δοκιμάστε τέσσερις περιπτώσεις και τις δύο οικογένειες διευθύνσεων
Μια παραχώρηση είναι τόσο καλή όσο οι τέσσερις περιπτώσεις που αντέχει: ένα νέο επιτρεπόμενο αίτημα, ένας μη εγκεκριμένος αιτών, μια επανάληψη του ίδιου συνδέσμου και το ίδιο αίτημα μετά τη λήξη.
Στη συνέχεια δοκιμάστε κάθε οικογένεια χωριστά, γιατί η διεύθυνση πηγής που παρατηρεί η υπηρεσία μπορεί να διαφέρει μεταξύ τους.
dig +short A service.example.com
dig +short AAAA service.example.com
curl -4 -sS -o /dev/null -w "%{http_code}\n" https://service.example.com
curl -6 -sS -o /dev/null -w "%{http_code}\n" https://service.example.com
Το χρήσιμο αποτέλεσμα είναι μια προσωρινή, ελέγξιμη απόφαση αποδοχής κάτω από τη συνήθη εξουσιοδότηση χρήστη, αντί για ένα μόνιμο άνοιγμα που φέρει το όνομα όποιου έκανε κλικ πρώτος.