IPTables: Erlaubt nur SSH-Zugriff, sonst nichts rein oder raus

IPTables: Erlaubt nur SSH-Zugriff, sonst nichts rein oder raus

Wie konfiguriert man IPTables, damit esnurSSH zulassen und keinen anderen Datenverkehr zulassenoder aus?

Kann jemand irgendwelche Sicherheitsvorkehrungen empfehlen?

Ich habe einen Server, den ichglaubenwurde erfolgreich von GoDaddy migriert und ichglaubenwird nicht mehr verwendet.

Aber ich möchte sichergehen, einfach weil … man weiß ja nie. :)

Beachten Sie, dass dies ein virtueller dedizierter Server von GoDaddy ist. Das bedeutet: kein Backup und praktisch kein Support.

Antwort1

Sie müssen lediglich die Standardrichtlinie auf DROP für die INPUT- und OUTPUT-Ketten festlegen.

Um SSH zuzulassen, benötigen Sie die folgenden Befehle:

$ sudo iptables -P INPUT DROP
$ sudo iptables -P OUTPUT DROP
$ sudo iptables -A INPUT -i lo -j ACCEPT
$ sudo iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
$ sudo iptables -A OUTPUT -o lo -j ACCEPT
$ sudo iptables -A OUTPUT -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

Die letzten beiden Befehle erlauben Loopback-Verkehr, da dies für die ordnungsgemäße Funktion einiger Anwendungen erforderlich ist. Sie können den SSH-Zugriff von bestimmten IP-Adressen mithilfe der -s source_ipOption einschränken.

Wenn Sie die Befehle in der oben gezeigten Reihenfolge ausführen, bleibt Ihre aktuelle SSH-Sitzung hängen. Dies liegt daran, dass iptables-Befehle sofort wirksam werden. Sie müssen sie in einem Shell-Skript ausführen, um zu vermeiden, dass Sie bei der Remote-Ausführung die Möglichkeit verlieren, eine Verbindung zu Ihrem Computer herzustellen.

Antwort2

Etwas wie das:

iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -j REJECT  # or iptables -P INPUT DROP

iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -j REJECT # or iptables -P OUTPUT DROP

verwandte Informationen