Wie kann ich alle Ports außer 22.80.443 für den gesamten eingehenden Datenverkehr außer localhost blockieren?

1

Ich möchte dieses Verhalten:

Alle externen Computer können nur an die Ports 22 (ssh), 80 (http) und 443 (https) meines Servers gebunden werden.

Alle localhost-Apps können jedoch an jeden gewünschten Port gebunden werden.

Ich habe eine Suche und das habe ich mir ausgedacht:

iptables -A INPUT -p tcp -m tcp -m multiport ! --dports 22,80,443 -j DROP

Es macht, was ich will, blockiert aber auch alle localhost-Apps. Was muss ich dort ändern, damit localhost-Apps an einen beliebigen Port gebunden werden können?

Und wie kann ich dann die Regel dauerhaft machen?

Vielen Dank!

PedroD
quelle
schon eine Weile, aber was ist, wenn Sie hinzufügen -s 127.0.0.1 ?
barlop
Wendet das diese Regel nicht nur auf Localhost-Verbindungen an? d.h. nur localhost-Verbindungen werden an allen Ports blockiert, außer an diesen 3?
PedroD
Ich glaube, ich meinte es eher so, wie es Timy getan hat. in einer Accept-Zeile.
barlop

Antworten:

1

Regeln werden der Reihe nach abgeglichen. Machen Sie einen, um localhost vor dem zuzulassen, der verweigert.

iptables -A INPUT -p tcp -s localhost -m tcp -m Multiport! --dports 22,80,443 -j ACCEPT

iptables - EINGABE - p tcp - m tcp - m Multiport! --dports 22,80,443 -j DROP

Lesen Sie hier, wie Sie sie abhängig von Ihrem Betriebssystem speichern können. https://www.thomas-krenn.com/en/wiki/Saving_Iptables_Firewall_Rules_Permanently

Timmy Browne
quelle