Shorewall - Τείχος προστασίας υψηλού επιπέδου για διακομιστές Linux


Η εγκατάσταση ενός τείχους προστασίας στο Linux μπορεί να είναι πολύ αποθαρρυντική για έναν αρχάριο ή για κάποιον που δεν είναι πολύ εξοικειωμένος με τα iptables. Ευτυχώς, υπάρχει μια πολύ εύχρηστη λύση στο Shorewall.

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

Τι είναι το Shorewall;

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

Μια διαμόρφωση δύο διεπαφών αποτελείται από ένα μηχάνημα με δύο θύρες ethernet, μία εισερχόμενη και μία που βγαίνει στο τοπικό δίκτυο.

Εγκαταστήστε το Shorewall Firewall στο Linux

Το Shorewall μπορεί να εγκατασταθεί χρησιμοποιώντας εργαλεία διαχείρισης πακέτων apt και yum.

sudo apt install shorewall    [On Debian-based Sysems]
sudo yum install shorewall    [On RHEL-based Sysems]

Μετά την εγκατάσταση, πρέπει να αντιγράψουμε ένα δείγμα διαμόρφωσης από τον κατάλογο "/usr/share/doc/shorewall" στον προεπιλεγμένο κατάλογο του Shorewall "/etc/shorewall".

sudo cp /usr/share/doc/shorewall/example/two-interfaces/* /etc/shorewall
cd /etc/shorewall

Αν ρίξουμε μια ματιά σε αυτόν τον κατάλογο, βλέπουμε μια δέσμη αρχείων και αρχείο shorewall.conf.

Το Shorewall βλέπει το δίκτυο ως μια ομάδα διαφορετικών ζωνών, επομένως το πρώτο αρχείο που θέλουμε να ρίξουμε μια ματιά είναι το αρχείο "/etc/shorewall/zones".

sudo nano /etc/shorewall/zones

Εδώ, βλέπουμε ότι υπάρχουν τρεις ζώνες που ορίζονται από προεπιλογή: fw, net και loc. Είναι σημαντικό να σημειωθεί ότι το Shorewall αντιμετωπίζει το ίδιο το μηχάνημα τείχους προστασίας ως τη δική του ζώνη και το αποθηκεύει σε μια μεταβλητή που ονομάζεται $fw.

Το αρχείο "/etc/shorewall/zones" είναι αρκετά αυτονόητο. Έχετε τη δικτυακή ζώνη (διασύνδεση που βλέπει στο διαδίκτυο), τη loc ζώνη (διεπαφή με όψη LAN) και fw, που είναι το παν.

Αυτή η ρύθμιση δίνει τα ακόλουθα:

  • Επιτρέπει όλα τα αιτήματα σύνδεσης από τη loc zone (LAN) στη net zone (Internet).
  • Απορρίπτει όλα τα αιτήματα σύνδεσης (αγνοεί) από τη ζώνη δικτύου στο τείχος προστασίας και στο LAN.
  • Απορρίπτει και καταγράφει όλα τα άλλα αιτήματα.

Το bit LOG LEVEL θα πρέπει να είναι γνωστό σε οποιονδήποτε έχει κάνει διαχείριση με Apache, MySQL ή οποιοδήποτε άλλο αριθμό άλλων προγραμμάτων FOSS. Σε αυτήν την περίπτωση, λέμε στην Shorewall να χρησιμοποιήσει το επίπεδο πληροφοριών της καταγραφής.

Τώρα που έχουν οριστεί οι ζώνες και η πολιτική μας, πρέπει να διαμορφώσουμε τις διεπαφές μας. Μπορείτε να το κάνετε αυτό επεξεργάζοντας το αρχείο "/etc/shorewall/interfaces".

sudo nano /etc/shorewall/interfaces

Εδώ, έχουμε ορίσει τη διεπαφή που αντιμετωπίζει το διαδίκτυο ως eth0 στη ζώνη δικτύου. Από την πλευρά του LAN μας, έχουμε ορίσει την άλλη διεπαφή, eth1, στη loc zone. Προσαρμόστε αυτό το αρχείο για να ταιριάζει σωστά στη διαμόρφωσή σας.

Οι διάφορες επιλογές που μπορείτε να τοποθετήσετε για οποιαδήποτε από αυτές τις διεπαφές είναι εκτενείς και εξηγούνται καλύτερα λεπτομερώς στη σελίδα man.

man shorewall-interfaces

Μια γρήγορη περιγραφή ορισμένων από αυτές είναι η εξής:

  • nosmurfs – φιλτράρετε πακέτα με μια διεύθυνση εκπομπής ως πηγή.
  • logmartians – καταγραφή πακέτων με την αδύνατη διεύθυνση πηγής.
  • φίλτρο διαδρομής – φιλτράρισμα διαδρομής πυρήνα για προστασία από πλαστογράφηση.

Φυσικά, τώρα που το σύστημά μας έχει τείχος προστασίας, θα χρειαστούμε να επιτραπούν ορισμένες συνδέσεις για να κάνουμε αυτό που πρέπει να κάνουμε. Αυτά τα ορίζετε στο αρχείο κανόνων στο "/etc/shorewall/rules".

sudo nano /etc/shorewall/rules

Αυτό το αρχείο φαίνεται αρχικά μπερδεμένο, κυρίως επειδή οι στήλες επικαλύπτονται, αλλά οι κεφαλίδες είναι αρκετά αυτονόητες. Αρχικά, έχετε τη στήλη ACTION, η οποία περιγράφει τι θέλετε να εκτελέσετε.

Στη συνέχεια, έχετε μια κεφαλίδα ΠΗΓΗ όπου ορίζετε τη ζώνη από την οποία προέρχεται το πακέτο. Στη συνέχεια, έχετε τον DEST ή τον προορισμό σας, που είναι η ζώνη ή η διεύθυνση IP του προορισμού. Ας χρησιμοποιήσουμε ένα παράδειγμα.

Ας υποθέσουμε ότι θέλετε να εκτελέσετε έναν διακομιστή SSH πίσω από το τείχος προστασίας σας στο μηχάνημα με τη διεύθυνση IP 192.168.1.25. Όχι μόνο θα χρειαστεί να ανοίξετε μια θύρα στο τείχος προστασίας σας, αλλά θα πρέπει να πείτε στο τείχος προστασίας ότι οποιαδήποτε κίνηση που έρχεται στη θύρα 22 πρέπει να δρομολογηθεί στο μηχάνημα στη διεύθυνση 192.168.1.25.

Αυτό είναι γνωστό ως Προώθηση θύρας. Είναι ένα κοινό χαρακτηριστικό στα περισσότερα τείχη προστασίας/δρομολογητές. Στο "/etc/shorewall/rules", θα το πετύχατε προσθέτοντας μια γραμμή όπως αυτή:

SSH(DNAT)	net		loc:192.168.1.25

Παραπάνω, έχουμε ορίσει όλα τα προορισμένα για SSH πακέτα που προέρχονται από τη δικτυακή ζώνη στο τείχος προστασίας πρέπει να δρομολογηθούν (DNAT) στη θύρα 22 σε ένα μηχάνημα με διεύθυνση 192.168.1.25.

Αυτό ονομάζεται Μετάφραση διεύθυνσης δικτύου ή NAT. Το "D " απλά λέει στο Shorewall ότι πρόκειται για NAT για μια διεύθυνση προορισμού.

Για να λειτουργήσει αυτό, πρέπει να έχετε ενεργοποιημένη την υποστήριξη NAT στον πυρήνα σας. Εάν χρειάζεστε το NAT και δεν το έχετε, ανατρέξτε στον οδηγό μου σχετικά με την Εκ νέου μεταγλώττιση ενός πυρήνα του Debian.

Στο επόμενο άρθρο, θα εξερευνήσουμε διάφορες διαμορφώσεις και επιλογές του τείχους προστασίας. Ωστόσο, θα πρέπει να υπάρχουν πολλές πληροφορίες εδώ για να σας βοηθήσουν να ξεκινήσετε προς το παρόν. Όπως πάντα, ανατρέξτε στις σελίδες man για μια πιο εις βάθος κατανόηση.