Linux posiada legendarny firewall, używamy go poleceniem iptables (dawno temu ipchains) zabezpieczając serwer warto z niego skorzystać.
Po pierwsze serwer stoi za routerem, który przekierowuje na niego tylko niektóre porty, ale jako że lepiej dmuchać na zimne w pliku /etc/rc.local uruchamianym na końcu procedury uruchamiania można zablokować wszystkie porty, oprócz tych używanych:
1 2 3 4 5 6 7 8 9 10 11 | iptables -A INPUT --match state --state RELATED,ESTABLISHED -j ACCEPT --match comment --comment "Ruch przychodzacy." iptables -A INPUT -p icmp -j ACCEPT --match comment --comment "Przepusc ping" iptables -A INPUT -p tcp --dport 22 -j ACCEPT --match comment --comment "Pozwol SSH" iptables -A INPUT -p tcp --dport 80 -j ACCEPT --match comment --comment "Pozwol HTTP" iptables -A INPUT -p tcp --dport 443 -j ACCEPT --match comment --comment "Pozwol SSL" iptables -A INPUT --in-interface lo -j ACCEPT --match comment --comment "Pusc caly ruch localhost" # logowanie prób ominięcia firewalla: iptables -A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7 #resztę blokujemy iptables -P INPUT DROP iptables -P FORWARD DROP |
Uwaga, jeśli grzebiemy w ustawieniach SSH przez SSH nie używajmy polecenia iptables –flush (czyszczenie), przynajmniej jeśli Policy = DROP. 🙂
Drugi bardziej elegancki sposób, jeśli posiadasz plik /etc/iptables/rules.v4
możesz w nim dodać analogiczne wpisy bez słowa „iptables” np.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -A INPUT --match state --state RELATED,ESTABLISHED -j ACCEPT --match comment --comment "Ruch przychodzacy." -A INPUT -p icmp -j ACCEPT --match comment --comment "Przepusc ping" -A INPUT -p tcp --dport 20 -j ACCEPT --match comment --comment "Pozwol FTP" -A INPUT -p tcp --dport 21 -j ACCEPT --match comment --comment "Pozwol FTP" -A INPUT -p tcp --dport 22 -j ACCEPT --match comment --comment "Pozwol SSH" -A INPUT -p tcp --dport 80 -j ACCEPT --match comment --comment "Pozwol HTTP" -A INPUT -p tcp --dport 443 -j ACCEPT --match comment --comment "Pozwol SSL" -A INPUT --in-interface lo -j ACCEPT --match comment --comment "Pusc caly ruch localhost" # logowanie prób ominięcia firewalla: -A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7 #resztę blokujemy -P INPUT DROP -P FORWARD DROP COMMIT |