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 --dport
Attribut 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