2014-06-17 09:06:40 +0000 2014-06-17 09:06:40 +0000
15
15

Wie kann man alle Ports außer 80,443 mit iptables blockieren?

Das Sperren aller Ports (ein- und ausgehend) ist einfach, aber mit dem Wort “außer” ist es schwierig. Ich kenne keine Regeln, die die Bedingung erfüllen.

PS: Ich weiß, diese Frage ist nicht neu. Aber in der Tat habe ich nichts gefunden, was hilft. Also, helfen Sie mir pls!

Antworten (3)

25
25
25
2014-06-18 01:46:30 +0000

Erstens ist das ! das NOT-Symbol.

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

Zweitens haben die von Ihnen geschriebenen Regeln möglicherweise nicht die erwarteten Ergebnisse. Sie verwerfen alles, einschließlich der Antwort auf die Verbindung auf Port 80. Daher werden Sie nicht in der Lage sein, eine Verbindung zu ihm herzustellen, sagt für die Zwecke eines Webservers.

Diese Regeln erlauben RELATED- und ESTABLISHED-Verbindungen, so dass ein Webserver funktionieren sollte, wenn das tatsächlich das ist, was Sie zu tun versuchen.

iptables -A INPUT -p tcp -m tcp -m multiport --dports 80,443 -j ACCEPT
<insert further allowed list here>
iptables -A INPUT -m conntrack -j ACCEPT --ctstate RELATED,ESTABLISHED
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -j DROP
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -j DROP
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -j DROP
5
5
5
2014-06-17 09:12:54 +0000
# Set the default policy of the INPUT chain to DROP
iptables -P INPUT DROP

# Accept incomming TCP connections from eth0 on port 80 and 443
iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 443 -j ACCEPT

Dies sollte Ihnen geben, was Sie brauchen

3
3
3
2014-06-17 09:11:51 +0000

Sie können Ihre Standardaktion auf DROP setzen und dann Ausnahmeregeln erstellen, um 80 und 443 zu erlauben, etwa so:

# Setting default policies:
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

# Exceptions to default policy
iptables -A INPUT -p tcp --dport 80 -j ACCEPT # HTTP
iptables -A INPUT -p tcp --dport 443 -j ACCEPT # HTTPS

iptables wird die Liste der “Ausnahmen” durchgehen, bis es eine Übereinstimmung findet. Dann führt es die durch den Parameter -j angegebene Aktion aus (in diesem Fall ACCEPT). Wenn es keine Übereinstimmung findet, wird es auf die Standard-Richtlinie zurückgreifen und das Paket verwerfen.

Hinweis: Mit dieser Umgehungslösung werden alle Subdomänen ausgesperrt. Mit dieser Methode funktioniert zum Beispiel www.mydomain.com einwandfrei, aber Ihre Subdomain, sagen wir www.sub.mydomain.com, wird bei DNS-Fehlern nicht geöffnet.