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

Ονομάστε τη διεργασία που κατέχει τη μεταφορά

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

systemctl status transmission-daemon
ps -o user=,pid=,cmd= -C transmission-daemon

Αν ο λογαριασμός δεν υπάρχει ακόμη, δημιουργήστε τον για αυτόν τον σκοπό και μην του δώσετε τίποτα άλλο να εκτελέσει. Γράψτε τον λογαριασμό και το UID στο σχόλιο του κανόνα, γιατί ένας κανόνας χωρίς υποκείμενο είναι κανόνας που κανείς δεν μπορεί να επεξεργαστεί με ασφάλεια.

Διαχωρίστε τα πεδία ακρόασης από τη διαδρομή

Το Transmission 4.x τεκμηριώνει τις διευθύνσεις ακρόασης ομότιμων χωριστά από το rpc-bind-address, και η διαφορά μετράει. Η ρύθμιση RPC ελέγχει μόνο τον ακροατή απομακρυσμένου ελέγχου, άρα η αλλαγή της δεν επιλέγει διαδρομή για την κίνηση των ομότιμων. Το να διαβάζει κανείς τις δύο ρυθμίσεις ως μία είναι ο συνηθέστερος λόγος που μια προσεκτική στην όψη διαμόρφωση εξακολουθεί να διαρρέει. Η ίδια τεκμηρίωση περιγράφει εφεδρική περίπτωση όταν μια διεύθυνση ακρόασης ομότιμων είναι άκυρη, άρα μια μη διαθέσιμη διεύθυνση είναι τεκμηριωμένη εφεδρική περίπτωση, όχι εγγυημένη απόρριψη.

grep -E '"(peer-port|rpc-bind-address|bind-address-ipv4)"' /var/lib/transmission-daemon/.config/transmission-daemon/settings.json

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

Γράψτε την αντιστοίχιση ιδιοκτήτη στη σωστή αλυσίδα

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

iptables -A OUTPUT -m owner --uid-owner transmission -o tun0 -j ACCEPT
iptables -A OUTPUT -m owner --uid-owner transmission -j REJECT
ip6tables -A OUTPUT -m owner --uid-owner transmission -o tun0 -j ACCEPT
ip6tables -A OUTPUT -m owner --uid-owner transmission -j REJECT

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

Αποφασίστε τι συμβαίνει όταν το tun0 εξαφανιστεί

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

ip link show tun0
iptables -S OUTPUT

Δοκιμάστε το σκόπιμα: σταματήστε το τούνελ, ξεκινήστε μια μεταφορά που είναι ασφαλές να εγκαταλείψετε και παρατηρήστε αν βγαίνει τίποτα. Έπειτα επαναφέρετε το τούνελ και επιβεβαιώστε ότι η προβλεπόμενη διαδρομή λειτουργεί ξανά.

Καλύψτε τις διαδρομές που ο κανόνας δεν βλέπει

Η επίλυση ονομάτων μπορεί να γίνεται από ξεχωριστή διεργασία resolver, και ένας χώρος ονομάτων ή μια αποκλειστική πύλη μπορούν να δώσουν άλλο όριο αν οι διαδρομές κοινής χρήσης και εκκίνησης είναι σχεδιασμένες για αυτό. Αποφασίστε ποιο συστατικό κατέχει το DNS και αν ακολουθεί τον ίδιο κανόνα εξόδου. Έπειτα κοιτάξτε το RPC: αν χρησιμοποιείται το rpc-whitelist, το εγκεκριμένο δίκτυο διαχείρισης είναι μέρος της συμφωνίας, και ένα ευρύ εύρος RFC1918 δεν είναι.

ss -tunp | grep -i transmission

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

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

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