Ubuntu IPTables erlauben nur 1 Land

10

Ich habe mich im Internet nach einem Skript umgesehen, das den gesamten Datenverkehr auf alle Ports außer den Ports http (80) und https (443) verteilt und dann nur den Datenverkehr auf allen anderen Ports aus Land x zulässt (wo in meinem Fallland x sind die USA).

Ich möchte nicht alle IPs aus jedem Land hinzufügen, sondern nur IPs aus meinem Land zulassen und dann fast den gesamten anderen Datenverkehr von außen blockieren. Niemand außerhalb meines Landes sollte Zugang zu ssh, ftp, smtp, ect haben. anders als ich. Sollte sich dies jemals ändern, werde ich einen Sonderfall hinzufügen, wenn es näher rückt.

Randnotiz

Ich muss beachten, dass ich eine Frage gefunden habe, die ein Skript zum Bannen von IP nach Land mithilfe von IP-Tabellen enthält, aber das ist eine Menge zusätzlichen Einfügens, das ich tun müsste.

Das als beste Antwort markierte Skript blockiert den gesamten Datenverkehr dieser IP-Adressen. Ich möchte nur den Zugriff auf alle Ports außer 80 und 443 blockieren.

Aktualisieren

Mit der folgenden Regel

iptables -A OUTPUT -m geoip --dst-cc CN -j DROP

wäre ich in der lage es zu modifizieren und sowas zu machen

iptables -A OUTPUT -m geoip --dst-cc CN --dport 80 -j ACCEPT
iptables -A OUTPUT -m geoip --dst-cc CN --dport 443 -j ACCEPT
iptables -A OUTPUT -m geoip --dst-cc CN -j DROP

Ich würde annehmen, dass dies IPS aus China erlauben würde, auf Port 80 und Port 443 zuzugreifen, und es würde den Rest fallen lassen. Wäre diese Annahme richtig? Wenn nein, warum nicht?

Update 2

Nach einigem Herumspielen stellte ich fest, dass meine Ubuntu-Version das --dportAttribut nicht mag . Anstatt das zu verwenden, müssen diejenigen von uns, die Ubuntu 14+ ausführen (zumindest habe ich nur Ubuntu 14.04, 14.10 und 15.04 auf einigen Computern installiert), verwenden-p PORT_NUMBER_OR_NAME

Das würde also so aussehen

iptables -A OUTPUT -m geoip --dst-cc CN -p 443 -j ACCEPT

oder für eingehenden Verkehr,

iptables -A INPUT -m geoip --src-cc CN -p 443 -j ACCEPT
Austin Kregel
quelle

Antworten:

7

Sie müssen die iptables-Unterstützung für die Geolokalisierung hinzufügen. Dazu müssen Sie die folgenden Schritte ausführen:

# apt-get install xtables-addons-common
# mkdir /usr/share/xt_geoip
# apt-get install libtext-csv-xs-perl unzip
# /usr/lib/xtables-addons/xt_geoip_dl
# /usr/lib/xtables-addons/xt_geoip_build -D /usr/share/xt_geoip *.csv

Auf diese Weise können Sie Folgendes tun:

iptables -A OUTPUT -m geoip --dst-cc CN -j DROP

Dies würde jeglichen ausgehenden Verkehr nach China (CN) blockieren. Die Komplexität der Regeln liegt bei Ihnen. Im Grunde brauchen Sie kein Skript. Notieren Sie sich einfach die Regeln, die Sie anwenden möchten, und verwenden iptables-saveSie sie, damit sie bei jedem Neustart geladen werden.

nKn
quelle
Vielen Dank! Ich habe eine andere Frage. Ich habe meine Frage oben aktualisiert, um sie wiederzugeben. Würdest du zufällig die Antwort darauf wissen?
Austin Kregel
Die Regel würde funktionieren, aber Sie müssen die Richtung ändern, jetzt ist es OUTPUTund Sie müssten es auf setzen INPUTund nicht verwenden, --dst-ccsondern --src-ccstattdessen. Wenn die Frage lautet, ob sie in Kombination mit einer anderen vorhandenen iptablesRegel funktionieren soll , lautet die Antwort Ja.
nKn
der xt_geoip_dlBefehl nicht mehr funktioniert, bedarf es einer zip , das tut mehr existiert
Martijn