Blockieren Sie alle Verbindungen, aber lassen Sie nur wenige Ports mit iptables zu

Blockieren Sie alle Verbindungen, aber lassen Sie nur wenige Ports mit iptables zu

Ich brauche Regeln, die:

  1. Blockieren Sie den gesamten eingehenden Datenverkehr (Internet > Server), lassen Sie jedoch ausgehenden Datenverkehr (Server > Internet) zu und lassen Sie auch die Ausführung lokaler Dienste zu.

  2. Akzeptieren Sie nur eingehenden Datenverkehr von den gewünschten Ports.

Ich muss dies auch während einer SSH-Sitzung tun (ich war schon einmal gesperrt).

Der Grund für meine Frage ist, dass ich UFW mit meinem VPS-Anbieter nicht verwenden kann … anscheinend wegen deren Kernel/OpenVZ …

Während ich versucht habe, mir die Befehle selbst beizubringen, ist das wie der Versuch, den Umgang mit einem Werkzeug zu erlernen und gleichzeitig ein Haus zu bauen. Und es wäre wirklich schön, wenn ich heute produktiv sein könnte, anstatt stundenlang zu versuchen, das Problem zu beheben. Wenn mir jemand helfen könnte, wäre ich wirklich dankbar.

Antwort1

Lassen Sie zuerst Ihren spezifischen Port zu und blockieren Sie dann den gesamten eingehenden Datenverkehr.

# iptables -A INPUT -p tcp --dport 22 -j ACCEPT

wo 22 Ihr Demo-Port ändern Sie es auf Ihre Nachfrage

Blockieren Sie den gesamten eingehenden Datenverkehr

# iptables -A INPUT -j REJECT

Alle ausgehenden Pakete zulassen

# iptables -A OUTPUT -j ACCEPT
# iptables -A OUTPUT -o lo -j ACCEPT

Antwort2

@Rakib hat eine großartige Antwort gegeben, und ich denke, sie sollte akzeptiert werden. Meine Antwort ergänzt nur seine. Ich empfehle, ein Shell-Skript zu erstellen, damit Sie es automatisch ausführen können, wenn das Betriebssystem gestartet wird, oder bei Bedarf, ohne alles erneut eingeben zu müssen:

#!/bin/sh

IPT = iptables

#allowing the specific port
$IPT -A INPUT -p tcp --dport 22 -j ACCEPT

#block all incoming traffic
$IPT -A INPUT -j REJECT

#ALLOW ALL OUTGOING PACKETS
$IPT -A OUTPUT -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT

#same thing for ip6tables (IPv6)
IPT = ip6tables
$IPT -A INPUT -p tcp --dport 22 -j ACCEPT
$IPT -A INPUT -j REJECT
$IPT -A OUTPUT -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT

Außerdem wurde das Drehbuch zweimal geschrieben, mit dem einzigen Unterschied, dassip6tableswurde aufgenommen, so dass dies auch für IPv6 gilt, wie @Michael Mol in seinem Kommentar unter @Rakibs Antwort sagte

verwandte Informationen