Τα kill switches και οι κανόνες μη επικάλυψης δείχνουν προς αντίθετες κατευθύνσεις, κάτι που εξηγεί γιατί οι συνηθισμένες ρυθμίσεις VPN δεν εκφράζουν ποτέ τον δεύτερο. Το kill switch αντιδρά σε ένα τούνελ που έχει πέσει, ενώ αυτή η απαίτηση αντιδρά σε ένα τούνελ που είναι ενεργό και κρατά μια εφαρμογή έξω από την εικόνα. Μία σχεδιαστική απόφαση τακτοποιεί τα περισσότερα: αν η εφαρμογή σταματά, αν της απαγορεύεται η εκκίνηση ή αν απλώς της αφαιρείται η πρόσβαση στο δίκτυο. Επιλέξτε αυτό το επίπεδο πριν φτάσετε σε κανόνα τείχους προστασίας ή σε βρόχο σκοτώματος διεργασιών, γιατί ένας κανόνας που επιβάλλεται με παρατήρηση αφήνει ένα παράθυρο σε κάθε εκκίνηση.

Ο μύθος: ένα kill switch εμποδίζει τα προγράμματα να ξεκινήσουν

Τα kill switches είναι έλεγχοι κίνησης και είναι ειλικρινή γι’ αυτό: επιτρέπουν ή απορρίπτουν πακέτα ανάλογα με την κατάσταση του τούνελ. Κανένα τους δεν αρνείται να ξεκινήσει ένα πρόγραμμα και κανένα δεν εξετάζει ποιο εκτελέσιμο άνοιξε μια υποδοχή. Μια συντόμευση επιφάνειας εργασίας, μια προγραμματισμένη εργασία και ένας βοηθός παρασκηνίου φτάνουν όλα στο δίκτυο χωρίς να περάσουν από κάτι που ξέρει το όνομα της εφαρμογής. Η απόσταση ανάμεσα σε αυτούς τους δύο μηχανισμούς είναι εκεί όπου ζει η περισσότερη σύγχυση.

Η διάταξη που αποφασίζει πραγματικά αν ένα πρόγραμμα μπορεί να ξεκινήσει είναι ο έλεγχος εφαρμογών. Στα Windows αυτό σημαίνει AppLocker ή WDAC, και στο διαχειριζόμενο macOS σημαίνει λίστα επιτρεπόμενων που επιβάλλεται από το προφίλ της συσκευής. Και τα δύο είναι ανεξάρτητα από το τούνελ, γι’ αυτό οι δύο απαιτήσεις συγχωνεύονται στο ίδιο ticket και μετά δεν ικανοποιείται καμία.

Ονομάστε την κατάσταση πριν ονομάσετε το εργαλείο

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

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

Τι κάνει πραγματικά μια αμφίδρομη σύγκρουση

Για δύο υπηρεσίες που τις διαχειρίζεται πραγματικά το systemd, το Conflicts= είναι συμμετρικό: η εκκίνηση της μίας σταματά την άλλη. Η αναφορά μονάδων τεκμηριώνει αυτή τη συμπεριφορά και απαιτεί χωριστά ρητή σειρά όταν η μία πρέπει να ολοκληρώσει το σταμάτημα πριν ξεκινήσει η άλλη. Χωρίς αυτές τις καταχωρίσεις σειράς, το σταμάτημα και η εκκίνηση συναγωνίζονται και το αποτέλεσμα εξαρτάται από τον χρόνο.

Αυτό δεν είναι λίστα απαγόρευσης. Συνδέστε την εξάρτηση ανάποδα και η εκκίνηση της εφαρμογής σταματά αντ’ αυτού το VPN, που είναι η αστοχία που πρέπει να υποψιαστείτε όταν ένα τούνελ αποσυνδέεται μόνο του σε προβλέψιμη στιγμή. Μια εφαρμογή επιφάνειας εργασίας δεν είναι μονάδα systemd, και μια σύνδεση NetworkManager δεν είναι ούτε αυτή μονάδα, οπότε αυτό το μοτίβο δουλεύει μόνο για υπηρεσίες που τυλίγετε μόνοι σας.

Ελέγξτε τις μεταβάσεις, όχι μόνο την πρώτη εκκίνηση

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

systemctl show work-vpn.service -p Conflicts -p After
systemctl start work-vpn.service
systemctl is-active office-sync.service
nmcli connection show --active

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

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

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