Το να γράψετε -o tun+ μοιάζει με ακριβή οδηγία και στην πραγματικότητα είναι ένας χαρακτήρας μπαλαντέρ που καλύπτει κάθε τούνελ που έχει ο πυρήνας. Ένας δεύτερος πελάτης VPN, μια γέφυρα container ή μια διεπαφή που άφησε μια συνεδρία που κατέρρευσε, όλα το ικανοποιούν, και τότε ο κεντρικός υπολογιστής επιτρέπει κίνηση που η πολιτική είχε γραφτεί για να εμποδίσει. Η διαδικασία παρακάτω καρφιτσώνει ένα όνομα συσκευής, ταξινομεί τις εξαιρέσεις ώστε το τούνελ να μπορεί πράγματι να σχηματιστεί και σας αφήνει δρόμο επιστροφής αν οι κανόνες πέσουν άσχημα. Κάθε βήμα είναι αρκετά σύντομο για να αναιρεθεί μόνο του.

Βήμα 1: καταγράψτε τους κανόνες που έχετε τώρα

Πριν αλλάξετε μια προεπιλεγμένη πολιτική, αποθηκεύστε την τρέχουσα κατάσταση ώστε η επαναφορά να είναι εντολή και όχι ανάμνηση. Το iptables-save > /root/iptables.pre γράφει κάθε πίνακα σε ένα αρχείο που μπορείτε να επαναφέρετε, και ένα δεύτερο τερματικό με ανοιχτή συνεδρία root δεν είναι παράνοια όταν η πολιτική που πρόκειται να θέσετε κόβει τη σύνδεση που τη μεταφέρει. Αν εργάζεστε απομακρυσμένα, προγραμματίστε επίσης ένα flush ως διακόπτη νεκρού ανθρώπου.

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

Βήμα 2: δώστε στο τούνελ το δικό του όνομα

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

Όπου το όνομα δεν μπορεί να ελεγχθεί, αντιστοιχίστε αντί αυτού στη διεύθυνση του τούνελ ή σε ένα σημάδι πακέτου. Και τα δύο λειτουργούν, και τα δύο είναι πιο δύσκολα στην ανάγνωση, και τα δύο αποτυγχάνουν πιο σιωπηλά όταν το τούνελ αλλάζει αρίθμηση. Σε κάθε περίπτωση, αντιστοιχίστε σε ένα πράγμα και να είστε ρητοί για το ποιο.

Βήμα 3: γράψτε την πολιτική με την εξαίρεση endpoint πρώτη

Ένας κεντρικός υπολογιστής μόνο με VPN είναι ένας κεντρικός υπολογιστής με προεπιλεγμένη άρνηση και έναν σύντομο κατάλογο εξαιρέσεων, και η εξαίρεση που έχει τη μεγαλύτερη σημασία είναι αυτή που επιτρέπει στο τούνελ να υπάρχει. Χτίστε την με αυτή τη σειρά, με τον κανόνα endpoint πριν από τον κανόνα της συσκευής τούνελ, ώστε η χειραψία να έχει πού να πάει:

# allow the tunnel to be built, then everything the tunnel carries
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -A INPUT  -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A OUTPUT -d 198.51.100.7 -p udp --dport 1194 -j ACCEPT
iptables -A OUTPUT -o tun_work -j ACCEPT
iptables -A INPUT  -i tun_work -j ACCEPT
iptables -A INPUT  -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

Η κυριολεκτική διεύθυνση endpoint και η θύρα ανήκουν στον πάροχό σας, όχι σε αυτή τη σελίδα. Αν το endpoint είναι όνομα κεντρικού υπολογιστή, επιλύστε το μία φορά και καρφιτσώστε το αποτέλεσμα, γιατί ένας κανόνας δεν μπορεί να αναζητήσει όνομα και μια απάντηση που περιστρέφεται θα σπάσει σιωπηλά την πολιτική μετά την επόμενη αλλαγή DNS. Ελέγξτε και τη θύρα, γιατί πάροχοι που σας μετακινούν σε TCP 443 θα χρειαστούν αλλιώς έναν κανόνα που κανείς δεν έγραψε. Ένα τούνελ που λειτουργεί μόνο με ένα πρωτόκολλο είναι συνήθως αυτή η παράλειψη και όχι βλάβη του τείχους προστασίας.

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

Βήμα 4: ελέγξτε τη σειρά, όχι μόνο την παρουσία

Οι κανόνες αξιολογούνται διαδοχικά, οπότε ένα ACCEPT που έρχεται νωρίτερα απλώς κρύβει το REJECT που προσθέσατε μετά. Η αντιστοίχιση established και related είναι αυτή που αφήνει τις απαντήσεις στα δικά σας εξερχόμενα αιτήματα να επιστρέψουν χωρίς να ανοίξει γενική εισερχόμενη διαδρομή, και η τοποθέτησή της μετά την αποδοχή του τούνελ σημαίνει ότι ένα τούνελ που έπεσε περνά ακόμη κίνηση επιστροφής στη δική του διεπαφή.

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

Βήμα 5: κάντε το να επιβιώσει από την εκκίνηση και την οικογένεια διευθύνσεων

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

Έπειτα ελέγξτε το IPv6 ξεχωριστά, γιατί μια καλή πολιτική προεπιλεγμένης άρνησης για το IPv4 δεν λέει τίποτε για την άλλη οικογένεια. Το ip -6 route θα σας πει αν ο κεντρικός υπολογιστής έχει διαδρομή που θα μπορούσε να μεταφέρει κίνηση γύρω από ένα τούνελ που χειρίζεται μόνο IPv4, και το ip6tables ή το nftables χρειάζεται τους δικούς του ισοδύναμους κανόνες. Δοκιμάστε με προορισμό IPv6-only αντί να εμπιστευτείτε τη συμμετρία του συνόλου κανόνων.

Βήμα 6: επαληθεύστε και να είστε έτοιμοι να επαναφέρετε

Ανεβάστε το τούνελ, επιβεβαιώστε ότι η υπηρεσία που θέλετε λειτουργεί και μετά δοκιμάστε κάτι που η πολιτική θα έπρεπε να αρνηθεί. Επαναφέρετε με το iptables-restore < /root/iptables.pre αν η απάντηση σας εκπλήξει, και μόνο τότε αρχίστε να επεξεργάζεστε κανόνες. Η επιμονή μαζί με μια δοκιμασμένη διαδρομή επαναφοράς είναι αυτό που κάνει αυτό μια αλλαγή που μπορείτε να κάνετε δύο φορές.

Σχετικά άρθρα