Nach dem Einrichten der iptables-Regeln kann nicht auf die Instanz zugegriffen werden

Nach dem Einrichten der iptables-Regeln kann nicht auf die Instanz zugegriffen werden

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

  1. Für Regeln in der OUTPUTKette sollten Sie die Quellportübereinstimmung ( --sport) angeben, nicht die Zielportübereinstimmung ( --dport).
  2. Jedenfalls ist DROPdie Vorgehensweise in der OUTPUTKette keine gängige Praxis.
  3. Lesen Sie das iptables-Tutorial und die Beispielregelsätze.
  4. Um einen Verbindungsverlust zu vermeiden, verwenden Sie besser iptables-saveTools iptables-apply.

Antwort2

Sie sollten die Statusverfolgung einrichten und die -A OUTPUT ... -j ACCEPTZeilen 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.

verwandte Informationen