Κάθε διανομή linux έχει module στον πυρήνα του ένα ισχυρό firewall το οποίο υλοποιείται με τις εντολές iptables.
Σε αυτό το tutorial θα υλοποιήσουμε κάποιες εντολές για μία στοιχειώδη προστασία.
Πρώτα όμως θα αναφερθώ σε ορισμένα πράγματα που θεωρητικά ισχύουν.
1ο Θεώρημα : Κανένας δεν θα ασχοληθεί με το δικό μου Linux PC (λανθασμένη :rolleyes:) .
2ο Θεώρημα : Οσο "σφιχτο" firewall και αν έχουμε θα παραβιαστεί αν κάποιος μας βάλει στο μάτι (σωστή).
Πρώτη κίνηση που πρέπει να γίνει είναι να αλλαχτεί η tcp port 22 που ακούει το ssh.
Αυτό γίνεται τροποποιώντας το αρχείο sshd_config που είναι στον φάκελο /etc/ssh/
Aλλάζοντας αυτήν την γραμμή:
σεCode:Port 22
όπου another_port μία άλλη tcp port της αρεσκείας μας που να μην κάνει conflict με κάποια άλλη open port που "ακούει" το LinuxCode:Port <another_port>
PC μας.
Κάνουμε restart to ssh:
Δευτερη κίνηση είνα να περιοσρίσουμε την πρόσβαση του υπερχρήστη root.Code:/etc/init.d/ssh restart
Και αυτό γίνεται τροποποιώντας το ίδιο αρχείο:
σεCode:PermitRootLogin yes
αφού πρώτα έχουμε δημιουργήσει έναν απλό χρήστη με αυτόν τον τρόπο:Code:PermitRootLogin no
όπου john βάζουμε το username που θέλουμε.Code:adduser john
Δίνουμε το επιθυμητό password και τελειώνουμε απατώντας στισ ερωτήσεις που θα μας υποβάλει η εντολή.
Περιορίζουμε την πρόσβαση στo ssh στο τοπικό μας δίκτυο (έστω οτι το subnet έιναι το σύνηθες 192.168.1.0)
Εντολή απο κονσόλα:
οπου another_port είναι η tcp port που αλλάξαμε παραπάνω στο αρχείο sshd_config και με την παραπάνω εντολή αφήνουμε πρόσβαση στο ssh απο το τοπικό μας δίκτυο αποκλείωντας οποιονδήποτε άλλον.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
Κόβουμε το ping (icmp packet):
Code:iptables -A INPUT -p icmp -m icmp --icmp-type 8 -j DROP
Και τέλος θα προσπαθήσουμε να αποθαρρύνουμε το port scan απο το nmap (όσο γίνεται):Quote:
--icmp-type 8 = host unreacheable (αυτό το μήνυμα θα πάρει όποιος μας κάνει ping
Ενα άλλο πολύ ενδιαφέρον στο συγκεκριμμένο firewall είναι η υλοποίηση του nat στο οποίο θα αναφερθώ σε μελλοντικό tutorial.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
Επισημαίνω ότι αυτοι οι κανόνες είναι πολύ βασικοί και υλοποιούν μία βασική προστασία.