Κάθε διανομή linux έχει module στον πυρήνα του ένα ισχυρό firewall το οποίο υλοποιείται με τις εντολές iptables.
Σε αυτό το tutorial θα υλοποιήσουμε κάποιες εντολές για μία στοιχειώδη προστασία.
Πρώτα όμως θα αναφερθώ σε ορισμένα πράγματα που θεωρητικά ισχύουν.
1ο Θεώρημα : Κανένας δεν θα ασχοληθεί με το δικό μου Linux PC (λανθασμένη :rolleyes:) .
2ο Θεώρημα : Οσο "σφιχτο" firewall και αν έχουμε θα παραβιαστεί αν κάποιος μας βάλει στο μάτι (σωστή).
Πρώτη κίνηση που πρέπει να γίνει είναι να αλλαχτεί η tcp port 22 που ακούει το ssh.
Αυτό γίνεται τροποποιώντας το αρχείο sshd_config που είναι στον φάκελο /etc/ssh/
Aλλάζοντας αυτήν την γραμμή:
σε
Code:
Port <another_port>
όπου another_port μία άλλη tcp port της αρεσκείας μας που να μην κάνει conflict με κάποια άλλη open port που "ακούει" το Linux
PC μας.
Κάνουμε restart to ssh:
Code:
/etc/init.d/ssh restart
Δευτερη κίνηση είνα να περιοσρίσουμε την πρόσβαση του υπερχρήστη root.
Και αυτό γίνεται τροποποιώντας το ίδιο αρχείο:
Code:
PermitRootLogin yes
σε
αφού πρώτα έχουμε δημιουργήσει έναν απλό χρήστη με αυτόν τον τρόπο:
όπου john βάζουμε το username που θέλουμε.
Δίνουμε το επιθυμητό password και τελειώνουμε απατώντας στισ ερωτήσεις που θα μας υποβάλει η εντολή.
Περιορίζουμε την πρόσβαση στo ssh στο τοπικό μας δίκτυο (έστω οτι το subnet έιναι το σύνηθες 192.168.1.0)
Εντολή απο κονσόλα:
Code:
iptables -A INPUT -p tcp --destination-port <another_port> -m iprange --src-range 192.168.1.1-192.168.1.254 -j ACCEPT
iptables -A INPUT -p tcp -m tcp -s 0.0.0.0/0 --dport <another_port> -j DROP
οπου another_port είναι η tcp port που αλλάξαμε παραπάνω στο αρχείο sshd_config και με την παραπάνω εντολή αφήνουμε πρόσβαση στο ssh απο το τοπικό μας δίκτυο αποκλείωντας οποιονδήποτε άλλον.
Κόβουμε το ping (icmp packet):
Code:
iptables -A INPUT -p icmp -m icmp --icmp-type 8 -j DROP
--icmp-type 8 = host unreacheable (αυτό το μήνυμα θα πάρει όποιος μας κάνει ping
Και τέλος θα προσπαθήσουμε να αποθαρρύνουμε το port scan απο το nmap (όσο γίνεται):
Code:
iptables -A INPUT -p tcp -i eth0 -m state --state NEW -m recent --set
iptables -A INPUT -p tcp -i eth0 -m state --state NEW -m recent --update --seconds 30 --hitcount 10 -j DROP
iptables -A FORWARD -p tcp -i eth0 -m state --state NEW -m recent --set
iptables -A FORWARD -p tcp -i eth0 -m state --state NEW -m recent --update --seconds 30 --hitcount 10 -j DROP
iptables -A INPUT -p udp -i eth0 -m state --state NEW -m recent --set
iptables -A INPUT -p udp -i eth0 -m state --state NEW -m recent --update --seconds 30 --hitcount 10 -j DROP
iptables -A FORWARD -p udp -i eth0 -m state --state NEW -m recent --set
iptables -A FORWARD -p udp -i eth0 -m state --state NEW -m recent --update --seconds 30 --hitcount 10 -j DROP
Ενα άλλο πολύ ενδιαφέρον στο συγκεκριμμένο firewall είναι η υλοποίηση του nat στο οποίο θα αναφερθώ σε μελλοντικό tutorial.
Επισημαίνω ότι αυτοι οι κανόνες είναι πολύ βασικοί και υλοποιούν μία βασική προστασία.