Whitelist erlaubte IPs (in / out) mit iptables

21

Ich habe einige IP-Bereiche, zu denen mein Server eine Verbindung herstellen kann, und Benutzer, von denen aus eine Verbindung hergestellt werden soll. Alles andere sollte gesperrt werden.

Wie soll ich das mit iptables machen?

Mein Betriebssystem ist eine Debian-basierte Linux-Distribution.

Frank Bannister
quelle

Antworten:

27

Ich würde vorschlagen, dass Sie sich ein Firewall-Konfigurationstool wie einen Firestarter zulegen und von dort aus fortfahren. Hier sind jedoch einige Grundlagen für Sie.

#Flush existing rules
iptables -F
# Set up default DROP rule for eth0
iptables -P INPUT DROP
# Allow existing connections to continue
iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
# Accept everything from the 192.168.1.x network
iptables -A INPUT -i eth0 -s 192.168.1.0/24 -j ACCEPT
# Allow connections from this host to 192.168.2.10
iptables -A OUTPUT -o eth0 -d 192.168.2.10 -j ACCEPT
Zenham
quelle
3
Sie wissen, dass Sie Ihren Code in Serverfehlern mit der Schaltfläche 101010 formatieren können. Auf diese Weise werden Ihre Kommentare nicht als Schreien herauskommen. Wählen Sie einfach den Code aus (ziehen Sie die Maus über den Code) und klicken Sie dann auf die Schaltfläche 101010 über dem Textfeld.
Jason Tan
2
Ahhh danke, das habe ich nicht gemerkt. Jetzt weiß ich :)
Zenham
1
+1 für EXISTING, RELATED - zu viele Leute machen das nicht.
Alnitak,
1
Aus Liebe zu Gott, setzen Sie bitte die Standard-DROP-Regel LETZT! Ich schloss mich (und alles andere!) Aus einer Maschine aus, indem ich diese Reihenfolge einhielt.
Bendoh
1
Schreckliche Antwort. OP sagt nichts über das Löschen aller aktuellen Verbindungen. Jetzt bin ich ausgesperrt, weil ich davon ausgegangen bin, dass die beste Antwort Sinn macht.
Omikes
14
iptables -I INPUT -s <allowed_ip> -j ACCEPT #(repeat this line as needed)
iptables -P INPUT DROP

Dadurch wird Ihr System zu einem nicht vorhandenen System für nicht zugelassene Computer.

Kevin M
quelle
7

Wenn Sie statt ganzer Subnetze beliebige Bereiche zulassen möchten, können Sie das iptables-Modul 'iprange' verwenden:

iptables -P INPUT DROP

iptables -A INPUT -m iprange --src-range 192.168.1.30-50 -j ACCEPT

Ermöglicht beispielsweise Datenverkehr von allen Computern mit einer Adresse zwischen 192.168.1.30 und 192.168.1.50.

Wenn Sie ein- und ausgehenden Datenverkehr für denselben IP-Bereich zulassen möchten, würde ich vorschlagen, dass Sie eine bestimmte Kette erstellen, die diese IPs zulässt und das gesamte Eingabe- und Ausgabeziel darauf abzielt:

--Definieren Sie die Standardrichtlinien, die gelöscht werden sollen:

iptables -P INPUT DROP

iptables -P OUTPUT DROP

--Erstelle die neue Kette:

iptables -N allowed_ips

--wenn die Quelle Teil des zulässigen Bereichs ist, akzeptieren Sie

iptables -A allowed_ips -m iprange --src-range 192.168.1.30-50 -j ACCEPT

--wenn nicht, kehren Sie zur Aufruferkette zurück, um die Verarbeitung fortzusetzen

iptables -A allowed_ips -j RETURN

- Lassen Sie den gesamten Verkehr, der in die Maschine eintritt und sie verlässt, durch unsere neue Kette laufen

iptables -A INPUT -j allowed_ips

iptables -A OUTPUT -j allowed_ips

und das ist es! Natürlich benötigen Sie möglicherweise zusätzliche Regeln, z. B. eine, die den gesamten Datenverkehr von / zur lo-Schnittstelle usw. zulässt.

Thiagodrv
quelle
0

Sie können auch ferm verwenden, das ich auch im letzten Jahr verwendet habe und das mir bei Fällen wie bedingten Firewall-Regeln sehr geholfen hat.

Giomanda
quelle