Εισαγωγή
Προαπαιτούμενα
Βήμα 1: Προσδιορίστε τις υπηρεσίες και τις θύρες που χρησιμοποιούνται στον διακομιστή σας
Βήμα 2: Διαμόρφωση κανόνων iptables
Βήμα 3: Αποθηκεύστε τις διαμορφώσεις
Λύσεις για τυχαίο αποκλεισμό
Εισαγωγή
Το τείχος προστασίας είναι ένας τύπος εργαλείου ασφάλειας δικτύου που ελέγχει την εισερχόμενη και εξερχόμενη κυκλοφορία δικτύου σύμφωνα με το προκαθορισμένο σύνολο κανόνων του. Μπορούμε να χρησιμοποιήσουμε ένα τείχος προστασίας μαζί με άλλα μέτρα ασφαλείας για να προστατεύσουμε τους διακομιστές μας από τα pries και τις επιθέσεις των χάκερ.
Ο σχεδιασμός ενός τείχους προστασίας μπορεί να είναι είτε αποκλειστικό υλικό είτε πρόγραμμα λογισμικού που εκτελείται στο μηχάνημά μας. Στο CentOS 6, το προεπιλεγμένο πρόγραμμα τείχους προστασίας είναι το iptables.
Σε αυτό το άρθρο, θα σας δείξω πώς να ρυθμίσετε ένα βασικό τείχος προστασίας iptables με βάση την εφαρμογή Vultr "WordPress on CentOS 6 x64", η οποία θα αποκλείει όλη την κυκλοφορία εκτός από υπηρεσίες web, SSH, NTP, DNS και ping. Ωστόσο, αυτή είναι μόνο μια προκαταρκτική διαμόρφωση που ικανοποιεί κοινές ανάγκες ασφαλείας. Θα χρειαστείτε μια πιο εξελιγμένη διαμόρφωση iptables εάν έχετε περαιτέρω απαιτήσεις.
Σημείωση :
Εάν προσθέσετε μια διεύθυνση IPv6 στον διακομιστή σας, θα πρέπει επίσης να ρυθμίσετε την υπηρεσία ip6tables. Η ρύθμιση παραμέτρων ip6tables δεν εμπίπτει στο πεδίο εφαρμογής αυτού του άρθρου.
Σε αντίθεση με το CentOS 6, το iptables δεν είναι πλέον το προεπιλεγμένο πρόγραμμα τείχους προστασίας στο CentOS 7 και έχει αντικατασταθεί με ένα πρόγραμμα που ονομάζεται τείχος προστασίας. Εάν σκοπεύετε να χρησιμοποιήσετε το CentOS 7, θα χρειαστεί να ρυθμίσετε το τείχος προστασίας σας χρησιμοποιώντας το τείχος προστασίας.
Προαπαιτούμενα
Αναπτύξτε πρόσφατα μια παρουσία διακομιστή με την εφαρμογή Vultr "WordPress on CentOS 6 x64" και, στη συνέχεια, συνδεθείτε ως root.
Βήμα 1: Προσδιορίστε τις υπηρεσίες και τις θύρες που χρησιμοποιούνται στον διακομιστή σας
Υποθέτω ότι αυτός ο διακομιστής θα φιλοξενεί μόνο ένα ιστολόγιο WordPress και δεν θα χρησιμοποιείται ως δρομολογητής ή δεν θα παρέχει άλλες υπηρεσίες (για παράδειγμα, αλληλογραφία, FTP, IRC κ.λπ.).
Εδώ χρειαζόμαστε τις ακόλουθες υπηρεσίες:
- HTTP (TCP στη θύρα 80)
- HTTPS (TCP στη θύρα 443)
- SSH (το TCP στη θύρα 22 από προεπιλογή, μπορεί να αλλάξει για λόγους ασφαλείας)
- NTP (UDP στη θύρα 123)
- DNS (TCP και UDP στη θύρα 53)
- ping (ICMP)
Όλες οι άλλες περιττές θύρες θα μπλοκαριστούν.
Το Iptables ελέγχει την κυκλοφορία με μια λίστα κανόνων. Όταν τα πακέτα δικτύου αποστέλλονται στον διακομιστή μας, η iptables θα τα επιθεωρήσει χρησιμοποιώντας κάθε κανόνα με τη σειρά και θα προβεί σε ενέργειες ανάλογα. Εάν τηρηθεί ένας κανόνας, οι άλλοι κανόνες θα αγνοηθούν. Εάν δεν πληρούνται κανόνες, το iptables θα χρησιμοποιήσει την προεπιλεγμένη πολιτική.
Όλη η κίνηση μπορεί να κατηγοριοποιηθεί ως INPUT, OUTPUT και FORWARD.
- Η κίνηση INPUT μπορεί να είναι είτε κανονική είτε κακόβουλη, θα πρέπει να επιτρέπεται επιλεκτικά.
- Η κυκλοφορία OUTPUT θεωρείται συνήθως ασφαλής και θα πρέπει να επιτρέπεται.
- Η κίνηση FORWARD είναι άχρηστη και θα πρέπει να αποκλειστεί.
Τώρα, ας διαμορφώσουμε τους κανόνες iptables σύμφωνα με τις ανάγκες μας. Όλες οι ακόλουθες εντολές θα πρέπει να εισαχθούν από το τερματικό SSH ως root.
Ελέγξτε τους υπάρχοντες κανόνες:
iptables -L -n
Ξεπλύνετε όλους τους υπάρχοντες κανόνες:
iptables -F; iptables -X; iptables -Z
Δεδομένου ότι οι αλλαγές στη διαμόρφωση του iptables θα τεθούν σε ισχύ αμέσως, εάν ρυθμίσετε εσφαλμένα τους κανόνες του iptables, ενδέχεται να αποκλειστείτε από τον διακομιστή σας. Μπορείτε να αποτρέψετε τυχαία αποκλεισμούς με την ακόλουθη εντολή. Θυμηθείτε να αντικαταστήσετε [Your-IP-Address]με τη δική σας δημόσια διεύθυνση IP ή εύρος διευθύνσεων IP (για παράδειγμα, 201.55.119.43 ή 201.55.119.0/24).
iptables -A INPUT -s [Your-IP-Address] -p tcp --dport 22 -j ACCEPT
Να επιτρέπεται όλη η επισκεψιμότητα (loopback) και απόθεση όλης της επισκεψιμότητας στο 127.0.0.0/8 εκτός από το lo:
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -d 127.0.0.0/8 -j REJECT
Αποκλείστε ορισμένες κοινές επιθέσεις:
iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
Αποδεχτείτε όλες τις καθιερωμένες εισερχόμενες συνδέσεις:
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
Να επιτρέπεται η εισερχόμενη κυκλοφορία HTTP και HTTPS:
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
Επιτρέπονται οι συνδέσεις SSH:
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
Επιτρέπονται οι συνδέσεις NTP:
iptables -A INPUT -p udp --dport 123 -j ACCEPT
Να επιτρέπονται τα ερωτήματα DNS:
iptables -A INPUT -p udp --dport 53 -j ACCEPT
iptables -A INPUT -p tcp --dport 53 -j ACCEPT
Να επιτρέπεται το ping:
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
Επιτέλους, ορίστε τις προεπιλεγμένες πολιτικές:
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
Βήμα 3: Αποθηκεύστε τις διαμορφώσεις
Κάθε μία από τις αλλαγές που κάναμε παραπάνω έχει τεθεί σε ισχύ, αλλά δεν είναι μόνιμες. Εάν δεν τα αποθηκεύσουμε στον σκληρό δίσκο, θα χαθούν μόλις γίνει επανεκκίνηση του συστήματος.
Αποθηκεύστε τη διαμόρφωση iptables με την ακόλουθη εντολή:
service iptables save
Οι αλλαγές μας θα αποθηκευτούν στο αρχείο /etc/sysconfig/iptables. Μπορείτε να ελέγξετε ή να τροποποιήσετε τους κανόνες επεξεργάζοντας αυτό το αρχείο.
Λύσεις για τυχαίο αποκλεισμό
Εάν έχετε αποκλειστεί από τον διακομιστή σας λόγω λάθους διαμόρφωσης, μπορείτε και πάλι να ανακτήσετε την πρόσβασή σας με ορισμένες λύσεις.
- Εάν δεν έχετε αποθηκεύσει ακόμα τις τροποποιήσεις σας στους κανόνες iptables, μπορείτε να επανεκκινήσετε τον διακομιστή σας από τη διεπαφή ιστότοπου Vultr και, στη συνέχεια, οι αλλαγές σας θα απορριφθούν.
- Εάν έχετε αποθηκεύσει τις αλλαγές σας, μπορείτε να συνδεθείτε στον διακομιστή σας μέσω της κονσόλας από τη διεπαφή ιστότοπου Vultr και να εισάγετε
iptables -Fγια να ξεπλύνετε όλους τους κανόνες iptables. Στη συνέχεια, μπορείτε να ρυθμίσετε ξανά τους κανόνες.