Επιστροφή στο blog

Προώθηση θυρών με το iptables στο Linux: Ένας οδηγός βήμα προς βήμα

Προώθηση θυρών με το iptables στο Linux: Ένας οδηγός βήμα προς βήμα

Προώθηση θυρών, γνωστή και ως αντιστοίχιση θυρών (port mapping), είναι μια μέθοδος που επιτρέπει σε απομακρυσμένες συσκευές να συνδέονται σε μια συγκεκριμένη υπηρεσία εντός του ιδιωτικού τοπικού σας δικτύου (LAN). Όπως υποδηλώνει το όνομα, η διαδικασία περιλαμβάνει την προώθηση αιτημάτων για μια συγκεκριμένη θύρα σε μια άλλη θύρα ή δίκτυο. Τροποποιεί τον προορισμό του πακέτου κατά τη μεταφορά του και θεωρείται ένας τύπος λειτουργίας μετάφρασης διευθύνσεων δικτύου (NAT) λειτουργίας.

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

Σε αυτόν τον οδηγό, θα σας καθοδηγήσουμε στα βήματα προώθησης θυρών με το iptables στο Linux.

Προαπαιτούμενα

Για να παρακολουθήσετε αυτόν τον οδηγό, θα χρειαστείτε:

Στοιχεία Κεντρικού Υπολογιστή

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

Θα δείτε το αποτέλεσμα:

Εδώ, το επισημασμένο αποτέλεσμα δείχνει δύο διεπαφές, την πρώτη eth0 αντιστοιχισμένη στη διεύθυνση 192.51.100.45, και τη δεύτερη eth1 αντιστοιχισμένη στη διεύθυνση 192.168.1.5. Από αυτές τις δύο διεπαφές, η μία είναι δημόσια και η άλλη ιδιωτική. Θα εκτελέσουμε μια εντολή για να τις διακρίνουμε και να βρούμε τη δημόσια διεπαφή, αυτή που είναι συνδεδεμένη στην προεπιλεγμένη πύλη σας. Για να τις διακρίνετε, πληκτρολογήστε:

Θα δείτε το αποτέλεσμα:

Εικονικά Δεδομένα για τον Οδηγό

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

Στοιχεία δικτύου διακομιστή ιστού:

  • Δημόσια Διεύθυνση IP: 203.0.113.2

  • Ιδιωτική Διεύθυνση IP: 192.0.2.2

  • Δημόσια Διεπαφή: eth0

  • Ιδιωτική Διεπαφή: eth1

Στοιχεία δικτύου τείχους προστασίας:

  • Δημόσια Διεύθυνση IP: 203.0.113.15

  • Ιδιωτική Διεύθυνση IP: 192.0.2.15

  • Δημόσια Διεπαφή: eth0

  • Ιδιωτική Διεπαφή: eth1

Ρύθμιση Διακομιστή Ιστού

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

Εγκατάσταση Nginx

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

Στη συνέχεια, ενημερώστε την τοπική προσωρινή μνήμη πακέτων και χρησιμοποιήστε το apt για να κάνετε λήψη και εγκατάσταση του Nginx:

Προσθήκη Περιορισμών

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

Για να προσθέσετε περιορισμούς, ανοίξτε το προεπιλεγμένο αρχείο ρυθμίσεων του server block /etc/nginx/sites-enabled/default σε οποιονδήποτε επεξεργαστή κειμένου της επιλογής σας (εδώ χρησιμοποιούμε τον επεξεργαστή κειμένου nano), και πληκτρολογήστε:

Στο αποτέλεσμα, θα δείτε την οδηγία listen να εμφανίζεται δύο φορές:

Port Forwarding Nginx Default File

Σε αυτόν τον οδηγό, χρησιμοποιούμε την πρώτη οδηγία για να δείξουμε την προώθηση IPv4. Η δεύτερη, η οποία είναι ρυθμισμένη για IPv6, μπορεί να αφαιρεθεί. Προσθέστε την ιδιωτική διεύθυνση IP του διακομιστή ιστού σας με μια άνω-κάτω τελεία ακριβώς πριν από το 80 για να ενημερώσετε το Nginx να δέχεται εισόδους μόνο από την ιδιωτική διεπαφή. Στη συνέχεια, επεξεργαστείτε την οδηγία:

Port Forwarding Nginx Edited Default File

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

Nginx T

Αν δεν εμφανιστεί κανένα σφάλμα, μπορείτε να επανεκκινήσετε το Nginx και να ενεργοποιήσετε τη νέα ρύθμιση:

Επαλήθευση του περιορισμού δικτύου

Ας επαληθεύσουμε το επίπεδο πρόσβασης που έχουμε στον διακομιστή ιστού μας. Προσπαθήστε να αποκτήσετε πρόσβαση στον διακομιστή ιστού χρησιμοποιώντας την ιδιωτική διεπαφή χρησιμοποιώντας την curl εντολή:

Θα δείτε το αποτέλεσμα:

Port Forwarding Nginx Output1

Αν προσπαθήσουμε να χρησιμοποιήσουμε τη δημόσια διεπαφή, δεν θα μπορέσουμε να συνδεθούμε:

Αυτό είναι ακριβώς αυτό που περιμέναμε.

Διαμόρφωση του τείχους προστασίας για προώθηση της θύρας 80

Ας προχωρήσουμε την εργασία μας με την υλοποίηση της προώθησης θυρών στο μηχάνημα του τείχους προστασίας μας.

Ενεργοποίηση προώθησης στον πυρήνα

Από προεπιλογή, τα περισσότερα συστήματα έχουν την προώθηση θυρών απενεργοποιημένη (OFF). Θα κάνουμε αλλαγές για να την ενεργοποιήσουμε (ON) κάνοντας μερικές επεξεργασίες. Επίσης, υπάρχει η επιλογή να ενεργοποιήσετε την προώθηση θυρών μόνιμα χρησιμοποιώντας τα προνόμια sudo όπως φαίνεται στα επόμενα βήματα.

Για να ενεργοποιήσετε την προώθηση κίνησης σε επίπεδο πυρήνα, πληκτρολογήστε:

Για να ενεργοποιήσετε την προώθηση θυρών μόνιμα, επεξεργαστείτε το αρχείο /etc/sysctl.conf . Ανοίξτε το αρχείο με προνόμια sudo και πληκτρολογήστε:

Μέσα, βρείτε και αποσχολιάστε τη γραμμή που μοιάζει με αυτήν:

Μόλις τελειώσετε, αποθηκεύστε και κλείστε το αρχείο. Στη συνέχεια, χρησιμοποιήστε τις εντολές sysctl για να εφαρμόσετε τις αλλαγές στις ρυθμίσεις ώστε να τεθούν σε ισχύ:

Βασική ρύθμιση τείχους προστασίας

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

  • Εγκαταστήσει το iptables-persistent
  • Αποθηκεύσει το προεπιλεγμένο σύνολο κανόνων στο /etc/iptables/rules.v4
  • Ολοκληρωμένη γνώση σχετικά με την προσθήκη και τροποποίηση κανόνων χρησιμοποιώντας την iptables εντολή

Επίσης, μπορείτε να δείτε πώς να εμφανίσετε τη λίστα και να διαγράψετε κανόνες του τείχους προστασίας iptables.

Προσθήκη των κανόνων προώθησης

Θα ρυθμίσουμε το τείχος προστασίας μας για να διασφαλίσουμε ότι η κίνηση που εισέρχεται στη δημόσια διεπαφή μας ( eth0 ) στη θύρα 80 προωθείται στην ιδιωτική διεπαφή μας ( eth1). Από προεπιλογή, το βασικό μας τείχος προστασίας έχει μια αλυσίδα FORWARD ρυθμισμένη σε DROP κίνησης. Η προσθήκη κανόνων τείχους προστασίας θα επιτρέψει την προώθηση συνδέσεων στον διακομιστή ιστού μας. Για πρόσθετη ασφάλεια, θα κλειδώσουμε τους κανόνες του τείχους προστασίας ώστε να επιτρέπουν μόνο συγκεκριμένα αιτήματα προώθησης.

Στην αλυσίδα FORWARD , θα αποδεχόμαστε νέες συνδέσεις με προορισμό τη θύρα 80 που προέρχονται από τη δημόσια διεπαφή μας και κατευθύνονται προς την ιδιωτική μας διεπαφή. Θα αναγνωρίζουμε τις νέες συνδέσεις με τη βοήθεια της επέκτασης conntrack και θα τις αναπαριστούμε με ένα TCP SYN πακέτο:

Πρέπει να επιτρέψετε οποιαδήποτε επακόλουθη κίνηση και προς τις δύο κατευθύνσεις που προκύπτει από την εισερχόμενη σύνδεση. Πληκτρολογήστε τις παρακάτω εντολές για να επιτρέψετε την κίνηση ESTABLISHED και RELATED μεταξύ της δημόσιας και της ιδιωτικής μας διεπαφής:

Let’s verify if our policy on the FORWARD chain is set to DROP:

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

Προσθήκη των κανόνων NAT για την κατεύθυνση των πακέτων

Θα εκτελέσουμε δύο ξεχωριστές λειτουργίες προκειμένου το iptables να τροποποιήσει σωστά τα πακέτα και να απλοποιήσει την επικοινωνία με τους πελάτες και τον διακομιστή ιστού.

DNAT είναι η πρώτη λειτουργία που ξεκινά την αλυσίδα PREROUTING του πίνακα nat . Η λειτουργία τροποποιεί τη διεύθυνση προορισμού του πακέτου και του επιτρέπει να δρομολογηθεί σωστά καθώς περνά μεταξύ δικτύων. Ωστόσο, οι πελάτες στο δημόσιο δίκτυο θα συνδέονται στον διακομιστή του τείχους προστασίας μας και δεν θα έχουν καμία πληροφορία σχετικά με την τοπολογία του ιδιωτικού μας δικτύου. Για τη μεταφορά πληροφοριών με το ιδιωτικό δίκτυο, αλλάξτε τη διεύθυνση προορισμού κάθε πακέτου για να του επιτρέψετε να φτάσει σωστά στον διακομιστή ιστού προορισμού μας.

Είναι σημαντικό να σημειωθεί ότι εστιάζουμε στη διαμόρφωση της προώθησης θυρών. Η εκτέλεση NAT σε κάθε πακέτο που φτάνει στο τείχος προστασίας δεν αποτελεί μέρος του οδηγού μας. Θα αντιστοιχίσουμε πακέτα στη θύρα 80 στην ιδιωτική διεύθυνση IP του διακομιστή ιστού μας:

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

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

Για να ενεργοποιήσετε αυτήν τη λειτουργία, προσθέστε έναν κανόνα στην αλυσίδα POSTROUTING του πίνακα nat που αξιολογείται ακριβώς πριν σταλούν τα πακέτα στο δίκτυο. Στη συνέχεια, αντιστοιχίστε τα πακέτα που προορίζονται για τον διακομιστή ιστού μας βάσει διεύθυνσης IP και θύρας:

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

Θα δείτε το αποτέλεσμα:

Nginx Output2

Η ρύθμιση της προώθησης θυρών έχει ολοκληρωθεί.

Προσαρμογή του μόνιμου συνόλου κανόνων

Μετά την ολοκλήρωση της ρύθμισης της προώθησης θυρών, θα την αποθηκεύσουμε στο μόνιμο σύνολο κανόνων μας. Εάν θέλετε να διατηρήσετε τα σχόλια στο τρέχον σύνολο κανόνων, χρησιμοποιήστε την υπηρεσία iptables-persistent για να αποθηκεύσετε τους κανόνες σας:

Μπορείτε επίσης να το ανοίξετε και να το επεξεργαστείτε χειροκίνητα για να διατηρήσετε τα σχόλια στο αρχείο σας:

Στη συνέχεια, διαμορφώστε τον πίνακα filter και τον πίνακα nat για να προσθέσετε τους κανόνες της αλυσίδας FORWARD και τους κανόνες ROUTING αντίστοιχα. Η προσαρμογή του πίνακα nat θα μας επιτρέψει να προσθέσουμε κανόνες PREROUTING και POSTROUTING όπως φαίνεται στο παρακάτω παράδειγμα:

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

Αν δεν δείτε σφάλματα, φορτώστε το σύνολο κανόνων:

Ας επαληθεύσουμε ότι ο διακομιστής ιστού μας είναι ακόμα προσβάσιμος μέσω της δημόσιας διεύθυνσης IP του τείχους προστασίας σας:

Συμπέρασμα

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

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

Για να εξερευνήσετε περαιτέρω περισσότερες λύσεις τείχους προστασίας που μπορείτε να εφαρμόσετε στο σύστημά σας, δείτε αυτούς τους πόρους από το ιστολόγιό μας:

Καλή υπολογιστική!

author

Pranay Kapgate

Συγγραφέας · CloudSigma

Ο Preslav Dobrev είναι Δημιουργικός Σχεδιαστής στην CloudSigma, με εστίαση στη συνεπή επιχειρηματική ταυτότητα μέσω παραδοσιακών και καινοτόμων καναλιών μάρκετινγκ. Διαθέτει την ικανότητα να συνδυάζει το καλλιτεχνικό όραμα με το στρατηγικό μάρκετινγκ για τη δημιουργία εντυπωσιακών αφηγήσεων επωνυμίας.

Σχόλια

Δεν υπάρχουν σχόλια ακόμα. Γράψτε το πρώτο.