
Ich versuche, einige Regeln einzurichten, um alle Ports außer 21 und 22 auf TCP (SSH und FTP) zu blockieren. Aber wenn ich versuche, dieses Skript auszuführen, werde ich aus meiner Instanz ausgesperrt und kann nicht darauf zugreifen. Dies ist das Skript:
# Flush the FW Rules
iptables -F
iptables -X
# Block all traffic
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
# Allow SSH
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 22 -j ACCEPT
# Allow FTP
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 21 -j ACCEPT
# Allow ICMP (ping)
iptables -A INPUT -p icmp -j ACCEPT
iptables -A OUTPUT -p icmp -j ACCEPT
Im Skript werden sowohl eingehende als auch ausgehende Anfragen für SSH und FTP eingerichtet, aber warum kann ich nicht darauf zugreifen?
Antwort1
- Für Regeln in der
OUTPUT
Kette sollten Sie die Quellportübereinstimmung (--sport
) angeben, nicht die Zielportübereinstimmung (--dport
). - Jedenfalls ist
DROP
die Vorgehensweise in derOUTPUT
Kette keine gängige Praxis. - Lesen Sie das iptables-Tutorial und die Beispielregelsätze.
- Um einen Verbindungsverlust zu vermeiden, verwenden Sie besser
iptables-save
Toolsiptables-apply
.
Antwort2
Sie sollten die Statusverfolgung einrichten und die -A OUTPUT ... -j ACCEPT
Zeilen verlieren.
IPTABLES -I INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
IPTABLES -I FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
IPTABLES -I OUTPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
Es ist gut zu sehen, dass Sie eine explizite Ausgangsfilterung verwenden, die Implementierung erfordert jedoch mehr Arbeit.