Iptables können ziemlich verwirrend sein. Deshalb habe ich, um einen Grundstock zu schaffen, ein ganz simples Skript gebastelt. Standardmässig sind keine Ports von außen erreichbar, gewünschte Ports müssen explizit freigegeben werden. Von innen initiierte Verbindungen funktionieren, Verbindungen mit den freigegebenen Ports auch. Kann man es noch weiter vereinfachen?
#!/bin/bash # alle bestehenden Regeln löschen iptables -F # Standardmässig eingehende Verbindungen verbieten iptables -P INPUT DROP # Standardmässig ausgehende Verbindungen erlauben iptables -P OUTPUT ACCEPT # Nicht routen iptables -P FORWARD DROP # localhost darf alles iptables -A INPUT -i lo -j ACCEPT iptables -A OUTPUT -o lo -j ACCEPT # Eingehende Verbindungen für SSH und HTTP erlauben iptables -A INPUT -j ACCEPT -p tcp --dport 22 iptables -A INPUT -j ACCEPT -p tcp --dport 80 # Eingehende Verbindungen erlauben, die sich auf bestehende Verbindungen # beziehen. (Damit es nach dem Verbindungsrequest eines Clients auch weitergeht) iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT