Ο πυρήνας Linux περιλαμβάνει το υποσύστημα Netfilter, το οποίο χρησιμοποιείται για να χειραγωγεί ή να αποφασίσει τη μοίρα της κίνησης δικτύου που κινείται προς ή μέσω του διακομιστής σας. Όλες οι μοντέρνες λύσεις τείχους προστασίας Linux χρησιμοποιούν αυτό το σύστημα για φιλτράρισμα πακέτων.
Το σύστημα φιλτραρίσματος πακέτων του πυρήνα θα ήταν ελάχιστης χρήσης για τους διαχειριστές χωρίς μια διεπαφή χώρου χρήστη για να το διαχειρίζεται. Αυτός είναι ο σκοπός των πινάκων ip. Όταν ένα πακέτο φτάνει στο διακομιστή σας, θα περαστεί στο υποσύστημα Netfilter για αποδοχή, χειραγώγηση, ή απόρριψη βάση των κανόνων που παραχωρούνται από το χώρο χρήστη μέσω των πινάκων ip. Έτσι, οι πίνακες ip είναι το μόνο που χρειάζεστε για να διαχειριστείτε το τείχος προστασίας εάν είστε εξοικειωμένοι με αυτό, αλλά υπάρχουν και πολλές προσόψεις διαθέσιμες για να απλοποιήσετε το έργο.
Το προεπιλεγμένο εργαλείο διαμόρφωσης του τείχους προστασίας για το Ubuntu είναι το ufw. Αναπτυγμένο για να διευκολύνει τη διαμόρφωση πινάκων ip τείχους προστασίας, το ufw παρέχει έναν φιλικό προς το χρήστη τρόπο να δημιουργήσει ένα IPv4 η IPv6 τείχος προστασίας βασισμένο σε κεντρικό υπολογιστή
Το ufw εξορισμού είναι αρχικά απενεργοποιημένο. Από την κεντρική σελίδα ufw:
“Το ufw δεν προορίζεται για να παρέχει πλήρη λειτουργικότητα του τοίχου προστασίας μέσω της διεπαφής εντολών, αλλά αντίθετα παρέχει έναν εύκολο τρόπο να προσθέτετε ή να αφαιρείται απλούς κανόνες. Προς το παρόν χρησιμοποιείται κυρίως για τείχη προστασίας βασισμένα σε κεντρικό υπολογιστή.”
Τα ακόλουθα είναι κάποια παραδείγματα για το πως να χρησιμοποιήσετε το ufw:
-
Πρώτον, το ufw χρειάζεται να ενεργοποιηθεί. Από ένα τερματικό εντολών εισάγετε:
sudo ufw enable -
Για να ανοίξετε μια θύρα (ssh σε αυτό το παράδειγμα):
sudo ufw allow 22 -
Κανόνες μπορούν επίσης να προστεθούν χρησιμοποιώντας τη μορφή numbered:
sudo ufw insert 1 allow 80 -
Ομοίως, για να κλείσετε μια ανοιχτή θύρα:
sudo ufw deny 22 -
Για να αφαιρέσετε έναν κανόνα, χρησιμοποιείστε delete ακολουθούμενο από τον κανόνα:
sudo ufw delete deny 22 -
Είναι επίσης πιθανό να επιτραπεί πρόσβαση από συγκεκριμένους κεντρικούς υπολογιστές και δίκτυα σε μια θύρα. Το ακόλουθο παράδειγμα επιτρέπει πρόσβαση ssh από τον κεντρικό υπολογιστή 192.168.0.2 σε οποιαδήποτε διεύθυνση ip σε αυτόν τον κεντρικό υπολογιστή:
sudo ufw allow proto tcp from 192.168.0.2 to any port 22Αντικαταστήστε το 192.168.0.2 με 192.168.0.0/24 για να επιτρέψετε πρόσβαση ssh από ολόκληρο το υποδίκτυο.
-
Προσθέτοντας την επιλογή --dry-run σε νια εντολή ufw θα έχει έξοδο τους ακόλουθους κανόνες, αλλά δε θα τους εφαρμόσει. Για παράδειγμα, το ακόλουθο είναι αυτό που θα εφαρμοζόταν αν ανοίγατε την θύρα HTTP:
sudo ufw --dry-run allow http*filter :ufw-user-input - [0:0] :ufw-user-output - [0:0] :ufw-user-forward - [0:0] :ufw-user-limit - [0:0] :ufw-user-limit-accept - [0:0] ### RULES ### ### tuple ### allow tcp 80 0.0.0.0/0 any 0.0.0.0/0 -A ufw-user-input -p tcp --dport 80 -j ACCEPT ### END RULES ### -A ufw-user-input -j RETURN -A ufw-user-output -j RETURN -A ufw-user-forward -j RETURN -A ufw-user-limit -m limit --limit 3/minute -j LOG --log-prefix "[UFW LIMIT]: " -A ufw-user-limit -j REJECT -A ufw-user-limit-accept -j ACCEPT COMMIT Rules updated -
Το ufw μπορεί να απενεργοποιηθεί με:
sudo ufw disable -
Για να δείτε την κατάσταση του τείχους προστασίας, πληκτρολογείστε:
sudo ufw status -
Και για περισσότερες πληροφορίες κατάστασης πληκτρολογείστε:
sudo ufw status verbose -
Για να δείτε τη μορφή numbered:
sudo ufw status numbered
|
|
|
Εάν η θύρα που θέλετε να ανοίξετε ή κλείσετε ορίζετε στο |
Αυτή είναι μια γρήγορη εισαγωγή για το πως να χρησιμοποιήσετε το ufw. Παρακαλώ αναφερθείτε στη σελίδα ufw για περισσότερες πληροφορίες.
Οι εφαρμογές που ανοίγουν θύρες μπορούν να περιλαμβάνουν ένα προφίλ ufw, το οποίο αναφέρει λεπτομέρειες για το ποιες θύρες χρειάζονται ώστε η εφαρμογή να εκτελεστεί κανονικά. Τα προφίλ κρατούνται στο /etc/ufw/applications.d, και μπορούν να επεξεργαστούν εάν οι προεπιλεγμένες θύρες έχουν αλλάξει.
-
Για να δείτε ποιες εφαρμογές έχουν εγκαταστήσει ένα προφίλ, πληκτρολογήστε τα ακόλουθα σε ένα τερματικό:
sudo ufw app list -
Όμοια με το να επιτρέψετε κίνηση σε μια θύρα, το να χρησιμοποιήσετε ένα προφίλ εφαρμογής γίνεται πληκτρολογώντας:
sudo ufw allow Samba -
Μια επεκτεταμένη σύνταξη είναι επίσης διαθέσιμη:
ufw allow from 192.168.0.0/24 to any app SambaΑντικαταστήστε τα Samba και 192.168.0.0/24 με το προφίλ εφαρμογής που χρησιμοποιείτε και την εμβέλεια IP για το δίκτυό σας.
Δεν είναι αναγκαίο να προσδιορίσουμε το πρωτόκολλο για την εφαρμογή, επειδή αυτή η πληροφορία είναι λεπτομερής στο προφίλ. Επίσης, σημειώστε ότι το όνομα εφαρμογής αντικαθιστά το νούμερο της θύρας.
-
Για να δείτε λεπτομέρειες για το ποιες θύρες, πρωτόκολλα, κλπ προσδιορίζονται για μια εφαρμογή, πληκτρολογείστε:
sudo ufw app info Samba
Όχι όλες οι εφαρμογές που απαιτούν άνοιγμα μιας θύρας ενός δικτύου έρχονται με προφίλ ufw, αλλά εάν έχετε δημιουργήσει προφίλ για μια εφαρμογή και θέλετε το αρχείο να συμπεριληφθεί με το πακέτο, παρακαλώ υποβάλετε ένα σφάλμα κατά του πακέτου στο Launchpad.
Ο σκοπός της Μεταμφίεσης IP είναι να επιτρέψει σε μηχανές με ιδιωτικές, μη δρομολογήσιμες διευθύνσεις IP του δικτύου σας να έχουν πρόσβαση στο διαδικτύου μέσω μέσω της μηχανής που κάνει τη μεταμφίεση. Η κίνηση από τα ιδιωτικά σας δίκτυα που προορίζεται για το Διαδίκτυο, πρέπει να χειραγωγηθεί ώστε να είναι οι απαντήσεις δρομολογήσιμες πίσω στην μηχανή που έκανε την αίτηση. Για να το κάνετε αυτό, ο πυρήνας πρέπει να τροποποιήσει την πηγαία διεύθυνση IP για κάθε πακέτο ώστε οι απαντήσεις να δρομολογούνται πίσω σε αυτό, και όχι στην ιδιωτική διεύθυνση IP η οποία έκανε το αίτημα, κάτι αδύνατο μέσω του Διαδικτύου. Το Linux χρησιμοποιεί Εντοπισμό Σύνδεσης (conntrack) για να ελέγχει ποιες συνδέσεις ανήκουν σε ποιες μηχανές και να αναδρομολογήσει κάθε πακέτο επιστροφής ανάλογα. Η κίνηση που αφήνει το ιδιωτικό σας δίκτυο είναι γι' αυτό "μεταμφιεσμένη" σαν να προήλθε από μηχανή πυλώνα Ubuntu. Αυτή η διαδικασία αναφέρεται στις βοηθητικές οδηγίες της Microsoft σαν Διαμοιρασμός Διαδικτυακής Σύνδεσης.
Η Μεταμφίεση IP μπορεί να επιτευχθεί χρησιμοποιώντας προσαρμοσμένους κανόνες ufw. Αυτό είναι πιθανό επειδή το τρέχων πρόγραμμα υποστήριξης για το ufw είναι iptables-restore με τους κανόνες του αρχείου να βρίσκονται στο /etc/ufw/*.rules. Αυτά τα αρχεία είναι ένα τέλειο μέρος για να προσθέσετε παλιούς κανόνες πινάκων ip που χρησιμοποιούνται χωρίς ufw, και κανόνες που είναι περισσότερο συναφείς με πυλώνες δικτύου ή γέφυρες.
Οι κανόνες χωρίζονται σε δύο διαφορετικά αρχεία, σε κανόνες που πρέπε να εκτελεστούν πριν τους κανόνες γραμμής εντολών ufw, και κανόνες που πρέπει να εκτελεστούν μετά τους κανόνεςγραμμής εντολών ufw.
-
Πρώτα, η προώθηση πακέτου πρέπει να ενεργοποιηθεί στο ufw. Δύο αρχεία διαμόρφωσης θα πρέπει να προσαρμοστούν, στο
/etc/default/ufwαλλάξτε το DEFAULT_FORWARD_POLICY σε “ACCEPT”:DEFAULT_FORWARD_POLICY="ACCEPT"
Μετά επεξεργαστείτε το
/etc/ufw/sysctl.confαποσχολιάστε το:net/ipv4/ip_forward=1
Ομοίως, για την προώθηση IPv6 αποσχολιάστε το:
net/ipv6/conf/default/forwarding=1
-
τώρα θα προσθέσουμε κανόνες στο αρχείο
/etc/ufw/before.rules. Οι προεπιλεγμένοι κανόνες διαμορφώνουν μόνο τον πίνακα φίλτρων, και για να ενεργοποιήσουμε τη μεταμφίεση του πίνακα nat θα πρέπει να διαμορφωθεί. Προσθέστε τα ακόλουθα στην κορυφή του αρχείου μετά τα σχόλια κεφαλίδας:# ανόνες Πίνακα nat *nat :POSTROUTING ACCEPT [0:0] # Προωθήστε κίνηση από eth1 μέσω eth0. -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE # μην διαγράψετε τη γραμμή 'COMMIT' ή αλλιώς οι κανόνες πίνακα nat δε θα μεταποιηθούν COMMIT
Τα σχόλια δεν είναι αυστηρώς αναγκαία, αλλά θεωρείται καλή άσκηση να καταγράφετε τη διαμόρφωσή σας. Επίσης, όταν διαμορφώνετε οποιοδήποτε από τα αρχεία κανόνων στο
/etc/ufw, σιγουρευτείτε ότι αυτές οι γραμμές είναι οι τελευταίες γραμμές για κάθε πίνακα που διαμορφώνετε.# μη διαγράφετε τη γραμμή 'COMMIT' αλλιώς αυτοί οι κανόνες δε θα μεταποιηθούν COMMIT
Για κάθε Πίνακα μια αντίστοιχη δήλωση COMMIT απαιτείται. Σε αυτά τα παραδείγματα εμφανίζονται οι πίνακες nat και φίλτρου, αλλά μπορείτε επίσης να προσθέσετε κανόνες για τους πίνακες raw και mangle.
Στο παραπάνω παράδειγμα αντικαταστήστε τα eth0, eth1, και 192.168.0.0/24 με την κατάλληλη διεπαφή και εμβέλεια IP για το δίκτυό σας.
-
Τέλος, απενεργοποιήστε και επαναενεργοποιήστε το ufw για να ισχύσουν οι αλλαγές:
sudo ufw disable && sudo ufw enable
Η Μεταμφίεση IP πρέπει τώρα να έχει ενεργοποιηθεί. Μπορείτε επίσης να εισάγετε όποιους επιπλέον κανόνες ΠΡΟΩΘΗΣΗΣ στο /etc/ufw/before.rules. Συστήνεται ότι αυτοί οι επιπρόσθετοι κανόνες μπορούν να προστεθούν στην αλυσίδα ufw-before-forward.
Οι πίνακες IP μπορούν επίσης να χρησιμοποιηθούν για να ενεργοποιηθεί η μεταμφίεση.
-
Ομοίως με το ufw, το πρώτο βήμα είναι να ενεργοποιήσετε την προώθηση πακέτου IPv4 κάνοντας επεξεργασία στο
/etc/sysctl.confκαι αποσχολιάζοντας την ακόλουθη γραμμήnet.ipv4.ip_forward=1
Εάν επιθυμείτε να ενεργοποιήσετε την προώθηση IPv6 επίσης αποσχολιάστε το:
net.ipv6.conf.default.forwarding=1
-
Μετά, εκτελέστε την εντολή sysctl για να ενεργοποιήσετε τις καινούριες ρυθμίσεις στο αρχείο διαμόρφωσης:
sudo sysctl -p -
Η Μεταμφίεση IP μπορεί τώρα να επιτευχθεί με έναν απλό κανόνα πίνακα ip, ο οποίος μπορεί να διαφέρει λίγο ανάλογα με τη διαμόρφωση δικτύου σας:
sudo iptables -t nat -A POSTROUTING -s 192.168.0.0/16 -o ppp0 -j MASQUERADE
Η παραπάνω εντολή υποθέτει ότι ο χώρος των ιδιωτικών σας διευθύνσεων είναι 192.168.0.0/16 και ότι η συσκευή αντιμετώπισης Διαδικτύου είναι ppp0. Η σύνταξη αναλύεται όπως ακολούθως:
-
-t nat -- ο κανόνας πρέπει να πάει στον πίνακα nat
-
-A POSTROUTING -- ο κανόνας πρέπει να προσαρτηθεί στην αλυσίδα (-A) POSTROUTING
-
-s 192.168.0.0/16 -- ο κανόνας εφαρμόζεται στην κίνηση που παράγεται από τον προσαρμοσμένο χώρο διευθύνσεων
-
-o ppp0 -- ο κανόνας εφαρμόζεται σε κίνηση σχεδιασμένη να δρομολογηθεί μέσω της συσκευής δικτύου
-
-j MASQUERADE -- η κίνηση που ταιριάζει σε αυτόν τον κανόνα πρέπει να "μεταπηδήσει" (-j) στο στόχο MASQUERADE για να χειραγωγηθεί όπως αναφέρεται παραπάνω
-
-
Επίσης, κάθε αλυσίδα τον πίνακα φίλτρου (ο προεπιλεγμένος πίνακας, και εκεί που γίνεται το περισσότερο ή όλο το φιλτράρισμα πακέτων) έχει μια προεπιλεγμένη πολιτική ΑΠΟΔΟΧΗΣ, αλλά εάν δημιουργείτε ένα τείχος προστασίας εκτός από μια μηχανή πυλώνα, ίσως έχετε ορίσει τις πολιτικές ΡΗΞΗ ή ΑΠΟΡΡΙΨΗ, στην οποία περίπτωση η μεταμφιεσμένη κίνηση πρέπει να επιτρέπετε μέσω της αλυσίδας ΠΡΟΩΘΗΣΗΣ για να δουλέψει ο παραπάνω κανόνας:
sudo iptables -A FORWARD -s 192.168.0.0/16 -o ppp0 -j ACCEPT sudo iptables -A FORWARD -d 192.168.0.0/16 -m state --state ESTABLISHED,RELATED -i ppp0 -j ACCEPT
Οι παραπάνω εντολές θα επιτρέψουν όλες τις συνδέσεις από το τοπικό σας δίκτυο στο Διαδίκτυο και όλη την κίνηση που σχετίζεται με εκείνες τις συνδέσεις να επιστρέψει στην μηχανή που τις επέτρεψε.
-
Εάν θέλετε να ενεργοποιείται η μεταμφίεση κατά την εκκίνηση, κάτι που μάλλον θέλετε, επεξεργαστείτε το
/etc/rc.localκαι προσθέστε οποιοδήποτε σχόλιο χρησιμοποιήθηκε παραπάνω. Για παράδειγμα προσθέστε την πρώτη εντολή χωρίς φίλτρα:iptables -t nat -A POSTROUTING -s 192.168.0.0/16 -o ppp0 -j MASQUERADE
Τα ιστορικά του Τείχους Προστασίας είναι σημαντικά για αναγνώριση επιθέσεων, επίλυση προβλημάτων των κανόνων του τείχους προστασίας, και για παρατήρηση ασυνήθιστης δραστηριότητας στο δίκτυό σας. Πρέπει να περιλάβετε κανόνες δημιουργίας ιστορικού στο τείχος προστασίας για να παραχθούν, όμως, οι κανόνες δημιουργίας ιστορικού πρέπει να έρθουν πριν από κάθε εφαρμοστέο κανόνα τερματισμού (ένας κανόνας με στόχο που αποφασίζει την τύχη του πακέτου, όπως ΑΠΟΔΟΧΗ, ΡΗΞΗ, ή ΑΠΟΡΡΙΨΗ).
Εάν χρησιμοποιείτε το ufw, μπορείτε να ενεργοποιήσετε τη δημιουργία ιστορικού πληκτρολογώντας σε ένα τερματικό εντολών:
sudo ufw logging on
Για να απενεργοποιήσετε τη δημιουργία ιστορικού του ufw, απλώς αντικαταστήστε το on με off στην παραπάνω εντολή.
Εάν χρησιμοποιείτε πίνακες ip αντί του ufw, πληκτρολογήστε:
sudo iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j LOG --log-prefix "NEW_HTTP_CONN: "
Ένα αίτημα στη θύρα 80 από την τοπική μηχανή, τότε, θα παρήγαγε ένα ιστορικό στο dmesg που δείχνει έτσι:
[4304885.870000] NEW_HTTP_CONN: IN=lo OUT= MAC=00:00:00:00:00:00:00:00:00:00:00:00:08:00 SRC=127.0.0.1 DST=127.0.0.1 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=58288 DF PROTO=TCP SPT=53981 DPT=80 WINDOW=32767 RES=0x00 SYN URGP=0
Το παραπάνω ιστορικό θα εμφανίζεται επίσης στα/var/log/messages, /var/log/syslog, και /var/log/kern.log. Αυτή η συμπεριφορά μπορεί να διαμορφωθεί κάνοντας κατάλληλη επεξεργασία στο /etc/syslog.conf ή εγκαθιστώντας και διαμορφώνοντας το ulogd και χρησιμοποιώντας το στόχο ULOG αντί του LOG. Ο δαίμονας ulogd είναι ένας διακομιστής χώρου χρήστη που ακούει για οδηγίες δημιουργίας ιστορικού από τον πυρήνα ειδικά για τείχη προστασίας, και μπορεί να συνδεθεί σε όποιο αρχείο επιθυμείτε, ή ακόμα και σε βάση δεδομένων PostgreSQL ή MySQL. Η διαδικασία του να καταλάβετε τα ιστορικά σας μπορεί να απλοποιηθεί χρησιμοποιώντας ένα εργαλείο ανάλυσης ιστορικού όπως τα fwanalog, fwlogwatch, ή lire.
Υπάρχουν πολλά διαθέσιμα εργαλεία για να σας βοηθήσουν να κατασκευάσετε ένα πλήρες τείχος προστασίας χωρίς οικεία γνώση πινάκων ip. Για την GUI-κλίση:
-
Το Firestarter είναι αρκετά δημοφιλές και εύκολο στη χρήση.
-
Το fwbuilder είναι πολύ ισχυρό και θα φαίνεται γνώριμο σε έναν διαχειριστή ο οποίος έχει χρησιμοποιήσει μια λειτουργία εμπορικού τείχους προστασίας όπως το Checkpoint FireWall-1.
Εάν προτιμάτε ένα εργαλείο γραμμής-εντολών με διαμόρφωση αρχείων απλού-κειμένου:
-
Το Shorewall είναι μια πολύ ισχυρή λύση για να σας βοηθήσει να διαμορφώσετε ένα προηγμένο τείχος προστασίας για κάθε δίκτυο.
-
Το ipkungfu θα σας δώσει ένα τείχος προστασίας "έτοιμο" με καμία διαμόρφωση, και θα σας επιτρέψει να στήσετε εύκολα ένα πιο προηγμένο τείχος προστασίας επεξεργάζοντας απλά, καλά τεκμηριωμένα αρχεία διαμόρφωσης.
-
Το fireflier είναι σχεδιασμένο να είναι μια εφαρμογή τείχους προστασίας επιφάνειας εργασίας. Αποτελείται από ένα δικομιστή (fireflier-server) και πελάτες GUI της επιλογής σας (GTK ή QT), και συμπεριφέρεται όπως πολλές δημοφιλείς διαδραστικές εφαρμογές τείχους προστασίας για Windows.
-
Η σελίδα wiki Ubuntu Firewall περιέχει πληροφορίες πάνω στην ανάπτυξη του ufw.
-
Επίσης, η σελίδα εγχειριδίου του ufw περιέχει μερικές πολύ χρήσιμες πληροφορίες: man ufw.
-
Δείτε το packet-filtering-HOWTO για περισσότερες πληροφορίες για τη χρήση πινάκων ip.
-
Το nat-HOWTO περιέχει επιπλέον λεπτομέρειες για τη μεταμφίεση.
-
The IPTables HowTo in the Ubuntu wiki is a great resource.

