iptables blockieren den Zugriff auf Port 8000 mit Ausnahme der IP-Adresse

80

Ich habe noch nie iptables verwendet, und die Online-Dokumentation scheint etwas undurchsichtig zu sein.

Ich möchte alle Anforderungen an Port 8000 auf meinem Server blockieren, mit Ausnahme derjenigen, die von einer bestimmten IP-Adresse stammen. Wie mache ich das mit iptables?

werden
quelle
2
//, Würdest du so freundlich sein, einen Link zur undurchsichtigen Dokumentation zu teilen?
Nathan Basanese

Antworten:

148

Diese Frage sollte sich auf Serverfehler beziehen . Trotzdem sollte Folgendes der Trick sein, vorausgesetzt, Sie sprechen von TCP und die IP, die Sie zulassen möchten, ist 1.2.3.4:

iptables -A INPUT -p tcp --dport 8000 -s 1.2.3.4 -j ACCEPT
iptables -A INPUT -p tcp --dport 8000 -j DROP
Jon Bright
quelle
3
Wie würden Sie diese IP-Port-Einschränkung, die Sie hier eingerichtet haben, rückgängig machen? (falls ich dies in Zukunft rückgängig machen möchte)
Tester
4
Tester, um Sachen zu entfernen, beziehen Sie sich auf diese - stackoverflow.com/questions/10197405/…
Quest Monger
2
Ich weiß, dass dies relativ alt ist, und das hat genau das getroffen, was ich brauchte. Und da die Antwort sowieso akzeptiert wurde, wie machen Sie dasselbe mit einem bestimmten IP-Bereich? Vielen Dank! :)
Jagc
1
@JiegoCordoviz Sie können der Quelladresse eine Maske hinzufügen: "-s 1.2.3.0/24" akzeptiert alles, was mit "1.2.3." Beginnt. Suchen Sie nach "Netzmaskenrechner", wenn Sie einen Bereich haben und eine Netzmaske ausarbeiten möchten.
Jon Bright
17

Eine andere Alternative ist;

sudo iptables -A INPUT -p tcp --dport 8000 -s ! 1.2.3.4 -j DROP

Ich hatte ein ähnliches Problem, dass 3 überbrückte virtuelle Maschinen nur mit unterschiedlicher Kombination aufeinander zugreifen müssen. Deshalb habe ich diesen Befehl getestet und er funktioniert gut.

Bearbeiten**

Laut Fernando-Kommentar und diesem Link wird das Ausrufezeichen ( !) vor dem -sParameter gesetzt:

sudo iptables -A INPUT -p tcp --dport 8000 ! -s 1.2.3.4 -j DROP
HRgiger
quelle
1
Das Ausrufezeichen ( !) muss jetzt vor dem -sParameter stehen : sudo iptables -A INPUT -p tcp --dport 8000 -s ! 1.2.3.4 -j DROP.
Fernando Silveira
Ich bin mir nicht sicher, was das Ausrufezeichen hier bewirkt. Ist es besser als die akzeptierte Antwort?
Aexl
@ Aexl so ziemlich das gleiche, außer einzeilig
HRgiger
5

Sie können jederzeit iptables verwenden, um die Regeln zu löschen. Wenn Sie viele Regeln haben, geben Sie diese einfach mit dem folgenden Befehl aus.

iptables-save > myfile

vium sie über die Empfehlungszeile zu bearbeiten. Verwenden Sie einfach das "dd", um die Zeilen zu löschen, die Sie nicht mehr möchten.

iptables-restore < myfile and you're good to go.  

Denken Sie daran, dass, wenn Sie Ihr Betriebssystem nicht so konfigurieren, dass die Regeln in einer Datei gespeichert werden, und dann die Datei während des Startvorgangs geladen wird, dass Ihre Regeln verloren gehen.

RecentCoin
quelle
3
Auf Debian gibt es kein iptables-load, aber iptables-restore iptables-restore < myfile// wiki.debian.org/iptables
Fedir RYKHTIK