it-swarm.com.de

iptables: Erlaube bestimmte ips und blockiere alle anderen Verbindungen

Wie erlaube ich bestimmte IPs und blockiere alle anderen Verbindungen in IPTables?

27
David

Ich habe vor langer Zeit einen Blog-Beitrag über grundlegende Iptables-Regeln für den Desktop-Benutzer geschrieben, und Sie sollten ihn wahrscheinlich lesen, und den dazugehörigen Artikel über Stateful Firewall Design . Aber Pre-Kernel 2.6.39 (das ipset enthält und das Sie möglicherweise für Whitelist-IPs verwenden möchten, wenn Sie mehr als 10 Whitelists haben (wobei 10 willkürlich ist)).

Behandeln Sie zuerst Zustände, von denen wir wissen, dass wir sie akzeptieren oder löschen möchten, und Schnittstellen.

iptables -P FORWARD DROP # we aren't a router
iptables -A INPUT -m state --state INVALID -j DROP
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -s 192.168.1.1 -j ACCEPT
iptables -P INPUT DROP # Drop everything we don't accept

Wenn Sie nur eine IP-Erlaubnis ohne Status ausführen möchten

iptables -A INPUT -s 192.168.1.1 -j ACCEPT
iptables -A OUTPUT -d 192.168.1.1 -j ACCEPT
iptables -P INPUT DROP
iptables -P OUTPUT DROP

es ist jedoch wahrscheinlich, dass Sie dabei auf Probleme stoßen, und ich schlage vor, den Status zu verwenden, um Ihnen das Leben zu erleichtern. Zum Beispiel nicht zulassen, dass -i lo und -o lo wird sicherlich Probleme für bestimmte Anwendungen verursachen.

29
xenoterracide

Hier ist ein (ungetestetes!) Beispiel, das nur eingehende Verbindungen blockiert. Verbindungen über die Loopback-Schnittstelle von 192.168.3.x, ICMP oder zum SSH-Port sind zulässig. Alle anderen Verbindungen werden abgelehnt.

iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p icmp -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -s 192.168.3.0/24 -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -j REJECT

Die folgende Regel erlaubt nur Ihre IP und blockiert alle anderen IPs über Port 22 oder ssh. Testen Sie mit einem neuen Terminal, bevor Sie die Verbindung trennen.

iptables -I INPUT -p tcp ! -s yourIPaddress --dport 22 -j DROP
7

Hier ist ein voll funktionsfähiges Beispiel.
Lässt auch die Anwendungen funktionieren (bezüglich: Mein Kommentar zu Keepass startet nicht)

https://github.com/skironDotNet/linux-allow-only-single-ip

0
Pawel Cioch