Ποιο εργαλείο του macOS μπορεί να αναγκάσει μία εφαρμογή να κινείται μόνο μέσω VPN;
Ένα όριο «μόνο VPN» χρειάζεται και διαδρομή και άρνηση. Συγκρίνετε προφίλ ανά εφαρμογή, διαμεσολαβητές, φίλτρα και PF, και μετά δοκιμάστε την εφαρμογή που σας ενδιαφέρει.
Μία γραμμή σε ένα έγγραφο απαιτήσεων — «αυτή η εφαρμογή επιτρέπεται να χρησιμοποιεί το VPN και τίποτε άλλο» — ζητά ήσυχα δύο μηχανισμούς που κανένας μεμονωμένος διακόπτης δεν παρέχει. Η κίνηση χρειάζεται διαδρομή μέσα από τη σήραγγα που προορίζεται, και η κίνηση που θα έφευγε απευθείας πρέπει να απορρίπτεται. Εργαλεία που κάνουν το ένα καλά και το άλλο καθόλου είναι συνηθισμένα, γι’ αυτό μια σύγκριση που ρωτά μόνο αν κάτι μπορεί να μπλοκάρει απαντά με αυτοπεποίθηση στο μισό της ερώτησης. Γράψτε πρώτα το όριο και μετά επιλέξτε τα συστατικά που καλύπτουν και τα δύο μισά του.
Δύο απαιτήσεις κρυμμένες σε μία πρόταση
Η καθοδήγηση είναι το μέρος που βάζει μια σύνδεση στη σήραγγα ή στον διαμεσολαβητή. Η άρνηση είναι το μέρος που εμποδίζει την ίδια σύνδεση να βγει από οποιαδήποτε άλλη διαδρομή. Διαφορετικά συστατικά τις υλοποιούν, αποτυγχάνουν με διαφορετικούς τρόπους, και ένα προϊόν μπορεί να είναι εξαιρετικό στο ένα και να μη λέει τίποτα για το άλλο:
| Approach | Steers traffic | Refuses direct egress | Knows the app identity |
|---|---|---|---|
| Per-app VPN profile | Yes, for the apps it names | Only if a filter or firewall also blocks | Yes, within its own rules |
| Application proxy setting | Partly, for requests that honour it | No | No |
| Content filter | No | Yes | Yes, if the filter is written that way |
| Local PF ruleset | No | Yes, by address and port | Not reliably |
Διαβάστε τον πίνακα ως λίστα ελέγχου και όχι ως κατάταξη. Καμία γραμμή δεν γεμίζει και τις δύο μεσαίες στήλες, και οι γραμμές που τις καλύπτουν είναι δύο συστατικά που συνεργάζονται: το ένα κατέχει τη διαδρομή, το άλλο την άρνηση. Η στήλη ταυτότητας έχει σημασία για άλλο λόγο, γιατί ένας κανόνας που δεν μπορεί να ονομάσει την εφαρμογή δεν μπορεί να επιβάλει κανόνα γι’ αυτήν. Ό,τι κι αν αναπτύξετε, πρέπει να απαντά και στα τρία, αλλιώς το όριο στο έγγραφο απαιτήσεων δεν είναι το όριο στο μηχάνημα.
Η καθοδήγηση μόνη της αφήνει διέξοδο
Η ρύθμιση διαμεσολαβητή εφαρμογής είναι το σαφέστερο παράδειγμα καθοδήγησης χωρίς άρνηση. Μπορεί να καθοδηγήσει αιτήματα από μια εφαρμογή που σέβεται τον διαμεσολαβητή του συστήματος και δεν καλύπτει τίποτα άλλο: μια βοηθητική διεργασία, ένα πρόγραμμα ενημέρωσης, μια υπηρεσία υποβάθρου ή ένα διαφορετικό πρωτόκολλο μπορούν να ταξιδέψουν στη δική τους διαδρομή χωρίς να διαβάσουν ποτέ αυτή τη ρύθμιση. Επομένως η επιλογή ενός τελικού σημείου SOCKS σε ένα παράθυρο δεν δημιουργεί πολιτική απαγόρευσης άμεσης εξόδου για την εφαρμογή. Αν η απαίτηση αφορά την εφαρμογή συνολικά, ρωτήστε ποια συστατικά αναγνωρίζει πραγματικά ο κανόνας.
Ένα προφίλ VPN ανά εφαρμογή καθοδηγεί καλύτερα από έναν διαμεσολαβητή, γιατί η πλατφόρμα αποφασίζει ποιες εφαρμογές μπαίνουν στη σήραγγα αντί να αποφασίζει κάθε εφαρμογή μόνη της. Και όμως δεν αρνείται τίποτα: το προφίλ παρέχει διαδρομή, και η κίνηση που δεν ταιριάζει με αυτήν ακολουθεί τη συνηθισμένη διαδρομή. Αυτό ακριβώς το κενό είναι το σημείο όπου ένα δεύτερο συστατικό κερδίζει τη θέση του, και γι’ αυτό τα προϊόντα που μοιάζουν με έναν διακόπτη είναι συνήθως δύο.
Η άρνηση μόνη της χαλάει την εφαρμογή
Η τεκμηρίωση της Apple για φίλτρα περιεχομένου περιγράφει μια ετυμηγορία επιτρεπτή-ή-αποκλεισμός για την κίνηση καθώς περνά από τη στοίβα δικτύου. Η ετυμηγορία αυτή δεν είναι σήραγγα ούτε σύνδεση διαμεσολαβητή, γιατί αποφασίζει αν κάτι επιτρέπεται να συνεχίσει και όχι πού πηγαίνει. Ένα φίλτρο μόνο του επιβάλλει την άρνηση τέλεια και αφήνει την εφαρμογή άχρηστη, με καθαρά αρχεία και καμία εξήγηση. Μια ετυμηγορία φίλτρου μπορεί να σταματήσει μια σύνδεση αλλά ποτέ δεν παρέχει τη σήραγγα, γι’ αυτό ο συνδυασμός της με την καθοδήγηση είναι η σχεδιαστική απόφαση και όχι πρόσθετη επιλογή.
Ένα τοπικά διαχειριζόμενο σύνολο κανόνων PF βρίσκεται στο άλλο άκρο αυτού του φάσματος. Είναι μια νόμιμη απόφαση υποστήριξης σε μηχάνημα που ανήκει σε διαχειριστή, και δεν είναι αυτόματα το θεμέλιο ενός διανεμόμενου προϊόντος, γιατί όποιος κατέχει το σύνολο κανόνων κατέχει και τις αλληλεπιδράσεις του με άλλους χρήστες του τείχους προστασίας, τη διαδρομή αναβάθμισης και την ανάκτησή του όταν ένας κανόνας είναι λάθος. Η προσθήκη PF σε ένα προϊόν δεν αφαιρεί αυτό το ερώτημα ιδιοκτησίας· το ορίζει.
Η ανάπτυξη αποφασίζει αν ο κανόνας θα υπάρχει και αύριο
Το πώς αναπτύσσεται ένα Network Extension στις πλατφόρμες της Apple εξαρτάται από τον τύπο παρόχου, τη συσκευασία και την έκδοση λειτουργικού συστήματος που έχετε μπροστά σας. Μια επέκταση εφαρμογής στο macOS τρέχει σε περιβάλλον χρήστη και τελειώνει όταν αυτός ο χρήστης αποσυνδεθεί, ενώ μια επέκταση συστήματος έχει καθολικό περιβάλλον που δεν εξαρτάται από τη συνεδρία. Αν η προστασία πρέπει να επιβιώσει από μια αποσύνδεση, αυτή η διαφορά είναι όλο το σχέδιο και όχι υποσημείωση. Επιβεβαιώστε τη διαδρομή ανάπτυξης πριν υποσχεθείτε τη συμπεριφορά, γιατί ο ίδιος κώδικας προσγειώνεται διαφορετικά ανάλογα με τον τύπο επέκτασης που αποστέλλεται.
Η διαθεσιμότητα του πηγαίου κώδικα είναι ξεχωριστό ζήτημα από την επιβολή. Το να διαβάσετε ένα αποθετήριο σας λέει πώς υλοποιείται κάτι, όχι τι επιτρέπεται να κάνει το εγκατεστημένο δυαδικό αρχείο σε αυτό το μηχάνημα. Η υπογραφή, η εγκατάσταση και η εξουσιοδότηση εξακολουθούν να ισχύουν, και οδηγίες που χτίστηκαν γύρω από μια παρωχημένη επέκταση πυρήνα ή ένα κόλπο έγχυσης βιβλιοθήκης περιγράφουν άλλη πλατφόρμα και άλλη στάση κινδύνου, όσο καλά κι αν λειτούργησαν κάποτε.
Μια περίπτωση αποδοχής που ονομάζει την εφαρμογή
Επιλέξτε μία μόνο ενέργεια που εκτελεί η εφαρμογή από μόνη της, σημειώστε τη διεύθυνση που θα έπρεπε να φτάσει και αν αυτή η διεύθυνση είναι IPv4 ή IPv6, και μετά επαναλάβετε την ίδια ενέργεια στην εγκεκριμένη κατάσταση χωρίς σήραγγα. Η δεύτερη εκτέλεση πρέπει να παράγει τη δηλωμένη άρνηση και όχι μια σιωπηλή άμεση επανάληψη. Αυτό είναι το μισό που οι άνθρωποι αφήνουν αδιευκρίνιστο, και το μόνο μισό που αποδεικνύει ότι η άρνηση υπάρχει καθόλου. Εκτελέστε το πρώτα με τη σήραγγα διαθέσιμη, ώστε μια διαφορά μεταξύ των δύο αποτελεσμάτων να μπορεί να προέρχεται μόνο από τη σήραγγα που λείπει.
Στη συνέχεια διατρέξτε τις μεταβάσεις που ονομάζει η απαίτηση: επανεκκίνηση της εφαρμογής, ενεργοποίηση βοηθητικής διεργασίας, επανασύνδεση της σήραγγας, αλλαγή δικτύων του μηχανήματος και αποσύνδεση ή επανεκκίνηση όπου ισχύουν. Μια σελίδα δημόσιας IP του περιηγητή δεν είναι δοκιμή των υποδοχών μιας άλλης εφαρμογής, οπότε δεν μπορεί να αντικαταστήσει αυτήν. Όπου καμία υποστηριζόμενη ανάπτυξη δεν καλύπτει την πραγματική συμπεριφορά της εφαρμογής, ένα εξουσιοδοτημένο απομονωμένο περιβάλλον με ρητή πύλη και χωρίς εναλλακτική έξοδο είναι απόφαση περιορισμού με δικό της κόστος διαχείρισης, όχι υποκατάστατο ενός πλαισίου ελέγχου.
Ολοκληρώστε γράφοντας τέσσερα στοιχεία: από ποια συστατικά αποτελείται η εφαρμογή, ποιος κατέχει την καθοδήγηση, ποιος κατέχει την άρνηση και οι καταστάσεις στις οποίες ο κανόνας πρέπει να ισχύει ακόμη. Ένα δημόσιο αποθετήριο μπορεί να είναι ένα κριτήριο επιλογής, αλλά δεν είναι ένα από τα τέσσερα, και αυτά τα στοιχεία καθορίζουν αν ένα δεδομένο εργαλείο ικανοποιεί την απαίτηση δικτύου.