Γιατί το οικιακό NAT δεν προστατεύει τη διεπαφή VPN σας
Ένας οικιακός δρομολογητής προωθεί το τούνελ, αλλά ο κεντρικός υπολογιστής κρίνει το αποκρυπτογραφημένο πακέτο. Διαβάστε ξεχωριστά τον ακροατή, την εσωτερική διαδρομή και την πολιτική εισόδου.
Φορητοί υπολογιστές πίσω από οικιακό δρομολογητή χωρίς προώθηση θυρών εξακολουθούν να δέχονται συνδέσεις SSH που φτάνουν μέσω VPN. Αυτό δεν είναι αντίφαση, γιατί δύο διαφορετικές συσκευές κρίνουν δύο διαφορετικά πακέτα. Ο δρομολογητής προωθεί την κρυπτογραφημένη μεταφορά, και ο κεντρικός υπολογιστής αποφασίζει τι θα γίνει με το αποκρυπτογραφημένο πακέτο που φτάνει στη διεπαφή τούνελ του. Το να κρατάμε αυτές τις δύο αποφάσεις χωριστές είναι όλη η άσκηση.
Ο δρομολογητής προωθεί το τούνελ, ο κεντρικός υπολογιστής κρίνει το πακέτο
Σχεδιάστε τη διαδρομή από την απομακρυσμένη πηγή έως την υπηρεσία πριν κοιτάξετε έστω έναν κανόνα. Το εξωτερικό σκέλος είναι η μεταφορά VPN, που τη διαχειρίζονται ο δρομολογητής και η πύλη. Το εσωτερικό σκέλος αρχίζει όταν το τελικό σημείο αφαιρεί το στρώμα τούνελ και ο κεντρικός υπολογιστής λαμβάνει ένα πακέτο διευθυνσιοδοτημένο στη διεύθυνση VPN του.
Ενώστε τα δύο σκέλη και ο δρομολογητής παίρνει τα εύσημα για μια απόφαση που παίρνει ο κεντρικός υπολογιστής. Μια σελίδα προώθησης θυρών ή ένα αρχείο καταγραφής δρομολογητή περιγράφουν μόνο εξωτερικές συνομιλίες, και κανένα δεν λέει ποια αποκρυπτογραφημένη κίνηση θα δεχτεί ο κεντρικός υπολογιστής. Ο κεντρικός υπολογιστής εφαρμόζει τη δική του πολιτική εισόδου στο εσωτερικό πακέτο, όπως θα έκανε σε κάθε πακέτο που φτάνει σε μια διεπαφή. Σε αυτή την πολιτική κρίνεται πραγματικά το ζήτημα της έκθεσης.
Ένας ακροατής μπαλαντέρ δεν είναι δημόσια υπηρεσία
Στο Linux, η δέσμευση στη διεύθυνση INADDR_ANY σημαίνει κάθε τοπική διεύθυνση, οπότε μια υπηρεσία μπορεί να απαντήσει σε μια διεπαφή τούνελ που δεν ονόμασε ποτέ. Η αναφορά υποδοχών IP περιγράφει αυτή τη δέσμευση, και αξίζει να τη διαβάσετε πριν βγάλετε συμπεράσματα από μια λίστα ακροατών. Μια καταχώριση μπαλαντέρ είναι γεγονός για την υποδοχή, όχι δήλωση για την προσβασιμότητα.
Οι δύο γραμμές παρακάτω είναι η ίδια υπηρεσία σε δύο διαφορετικές δεσμεύσεις, και η διαφορά είναι ολόκληρη η απάντηση στο αν η διεπαφή έχει σημασία. Διαβάστε σε ποια διεύθυνση κάθεται η υποδοχή πριν από οτιδήποτε άλλο.
ss -lntp "sport = :22"
LISTEN 0 4096 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=812,fd=3))
LISTEN 0 4096 10.8.0.6:22 0.0.0.0:* users:(("sshd",pid=812,fd=4))
Ονομάστε τη διάταξη που θα μπορούσε να φτάσει στη θύρα
Τρεις διατάξεις βάζουν ένα πακέτο σε αυτή τη διεπαφή, και έχουν διαφορετικούς ιδιοκτήτες. Το να ονομάσετε τη σωστή καθορίζει ποιος πρέπει να αλλάξει μια πολιτική.
| Arrangement | What reaches the port | Where the decision lives |
|---|---|---|
| Another permitted VPN peer | A packet from the same tunnel subnet | Gateway forwarding policy and host input rules |
| A deliberate public forward | Traffic the gateway publishes on purpose | Gateway service definition |
| A subnet routed behind the gateway | Client traffic from the far side | Gateway route and host input rules |
Ένα αποτέλεσμα προγράμματος περιήγησης που δείχνει δημόσια διεύθυνση εξόδου δεν λέει τίποτα για καμία από τις τρεις, γιατί περιγράφει πώς βγαίνει η εξερχόμενη κίνηση και όχι τι επιτρέπεται στην εισερχόμενη. Δουλέψτε αντίστροφα από τον ακροατή και τη διεύθυνση προέλευσης στο αρχείο καταγραφής υπηρεσίας. Αν η προέλευση είναι άλλος ομότιμος του τούνελ, η πολιτική της πύλης είναι το ενδιαφέρον έγγραφο. Αν είναι μεταφρασμένη διεύθυνση, βρείτε τη μετάφραση πριν αλλάξετε κανόνα.
Περιορίστε την υπηρεσία στη διαδρομή που σκοπεύατε
Αν το SSH χρειάζεται μόνο από μια διαδρομή διαχείρισης, γράψτε αυτή τη διαδρομή ως εύρος προέλευσης συν μια διεπαφή. Στη συνέχεια περιορίστε τους κανόνες εισόδου του κεντρικού υπολογιστή κατά διεπαφή, προορισμό και προέλευση αντί κατά όνομα δικτύου, αφού ένα όνομα που φαίνεται ιδιωτικό μπορεί να σημαίνει οποιαδήποτε διεύθυνση. Κρατήστε μια διαδρομή για το άτομο που θα λύσει το επόμενο πρόβλημα.
nft add rule inet filter input iifname "tun0" ip saddr 10.8.0.0/24 tcp dport 22 accept
nft list chain inet filter input
Ένας κανόνας που ονομάζει τη διεπαφή τούνελ και το εύρος διαχείρισης εκφράζει την πρόθεση σε ένα σημείο. Συγκρίνετε τον με έναν κανόνα γραμμένο για το δίκτυο Wi-Fi, που δεν λέει τίποτα για αποκρυπτογραφημένη κίνηση τούνελ. Όταν τα δύο στρώματα διαφωνούν, η πολιτική του κεντρικού υπολογιστή είναι αυτή που συναντά το πακέτο.
Αφήστε τις συνδέσεις και τις ενημερώσεις ακριβώς εκεί που είναι· το να φτάσεις σε μια θύρα δεν ήταν ποτέ το ίδιο με το να επιτρέπεται να τη χρησιμοποιήσεις. Καταγράψτε την οικογένεια διευθύνσεων και την ώρα για κάθε άγνωστη προέλευση, και ερευνήστε πριν κατηγορήσετε μια λειτουργία ή μια ευπάθεια. Ένας κανόνας που δέχεται κάθε ομότιμο του τούνελ είναι διαφορετικός σχεδιασμός από έναν που δέχεται ένα υποδίκτυο διαχείρισης, και καμία γραμμή καταγραφής δεν θα πει ποιο ήταν το επιδιωκόμενο.
Αποδεχτείτε τη διόρθωση με μία επιτυχία και μία άρνηση
Αποδείξτε και τα δύο μισά: μία εγκεκριμένη σύνδεση πετυχαίνει και μία αποκλεισμένη διαδρομή απορρίπτεται. Η άρνηση είναι το μισό που οι άνθρωποι παραλείπουν, και είναι αυτό που δείχνει ότι ο κανόνας δουλεύει αντί να στέκεται δίπλα σε μια επιτρεπτική προεπιλογή. Δοκιμάστε από την αποκλεισμένη πλευρά αντί να συλλογίζεστε γι' αυτό.
Επαναλάβετε το ζεύγος μετά από επανασύνδεση, γιατί ένα τούνελ που επιστρέφει με άλλο όνομα διεπαφής μπορεί να παρακάμψει σιωπηλά έναν κανόνα περιορισμένο στο παλιό. Το όριο που μετράει είναι αυτό που εφαρμόζει ο κεντρικός υπολογιστής στα πακέτα που πραγματικά λαμβάνει.