Sollten Sie die Befehle auch für eine IPv6 Firewall umsetzen wollen, dann ersetzen Sie bitte im folgenden stets "iptables" durch "ip6tables".
SSH Zugriff erlauben
iptables -I INPUT -p tcp --dport 22 -j ACCEPT iptables -I INPUT -i lo -j ACCEPT
Jetzt die beiden wichtigsten Standardports für WebServer freigeben: 80 für normale HTTP und 443 für verschlüsselte HTTPS (SSL) Seiten:
iptables -A INPUT -p tcp --dport 80 -j ACCEPT iptables -A INPUT -p tcp --dport 443 -j ACCEPT
Sollten Sie einen (zu SSH zusätzlichen) Service zur Verwaltung Ihres Servers benutzen, wie z.Bsp. VirtualMin (Unser Beitrag zur Installation), dann sollten diese Ports jetzt ebenfalls freigegeben werden:
iptables -A INPUT -p tcp --dport 10000 -j ACCEPT iptables -A INPUT -p tcp --dport 20000 -j ACCEPT
Jetzt können wir den Server abdichten, denn unser SSH Zugang ist bereits erlaubt. Diesen brauchen wir zwingend, denn ansonsten stehen wir gleich von außen vor der abgeschlossenen Tür.
iptables -P INPUT DROP
Für Programme wie "apt-get" sollten nun ein paar Ausnahmen hinzugefügt werden. Diese erlauben "etablierten Verbindungen" eine Verbindung und Rückmeldung von/nach außen durch die Firewall:
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
Um die erstellten Regeln auch nach einem Serverneustart zu behalten, speichern Sie diese bitte ab:
iptables-save > /etc/iptables/rules.v4
bzw. für IPv6 mit folgendem Befehl:
ip6tables-save > /etc/iptables/rules.v6
Weitere Ausnahmen und Regeln können jederzeit hinzugefügt werden:
Beispiel IMAP / SMTP MailServer:
iptables -A INPUT -p tcp --dport 143 -j ACCEPT iptables -A INPUT -p tcp --dport 993 -j ACCEPT iptables -A INPUT -p tcp --dport 25 -j ACCEPT iptables -A INPUT -p tcp --dport 465 -j ACCEPT iptables -A INPUT -p tcp --dport 587 -j ACCEPT
Beispiel: FTP Server (unsichere Standard-Ports 20 & 21)
Bei FTP sind ebenfalls die passiven Ports freizugeben, welches Sie in Ihrer FTP-Server-Konfiguration festlegen können. Haben Sie die passiven Ports nicht freigegeben, bleibt entweder nur aktives FTP oder es kommt zu Verbindungsproblemen.
iptables -A INPUT -p tcp --dport 20 -j ACCEPT iptables -A INPUT -p tcp --dport 21 -j ACCEPT
Beispiel Netdata WebGUI freigeben. Diese läuft im Standard auf Port 19999:
iptables -A INPUT -p tcp --dport 19999 -j ACCEPT
Ein Hinweis, wenn Sie mit VirtualMin arbeiten:
Die per Shell (Kommandozeile) gesetzten Regeln werden nicht automatisch in die Firewall-Konfiguration von VirtualMin (oder WebMin) übernommen. Bitte speichern Sie daher die Regeln am Ende in der VirtalMin-Firewall-Konfiguration:
iptables-save > /etc/iptables.up.rules
Einen Überblick über die eingestellten Regeln erhalten Sie durch folgenden Befehl:
iptables -L -n