Kann iptables seine Regeln basierend auf dem Netzwerk ändern, in dem Sie sich gerade befinden?

698
codykochmann

Hat iptables eine Möglichkeit, einige seiner Regeln automatisch anzupassen, oder einfach nur umzuschalten, welche Regelsätze verwendet werden, je nachdem, was Ihr aktuelles Netzwerk ist?

Ich habe viel Verwendung für so etwas, aber die zwei saubersten Beispiele wären:

  1. Wenn ich in meinem Heimnetzwerk bin, machen Sie bestimmte Ports für das LAN verfügbar. Wenn ich nicht bin, lass den Verkehr zu ihnen fallen.
  2. Wenn ich einen Arbeitscomputer habe, der syslogs an eine UDP-Protokollweiterleitung senden soll, das Ziel jedoch IPs auf der Grundlage des Netzwerks ändert, in dem ich mich befinde (da Protokollweiterleitungen keine standardisierten IPs sind), dürfen UDP-Datenverkehr nur bei angegebenen IPs zugelassen werden bestimmte Netzwerkbedingungen sind erfüllt.

Ich weiß, ich könnte einfach ein kleines Python-Skript schreiben, das mir dieses Verhalten geben würde. In letzter Zeit habe ich versucht, die Werkzeuge zu nutzen, die das System mir bereits zur Verfügung stellt, anstatt jedes Rad neu zu erfinden, dem ich begegne.

Das Betriebssystem ist Kali (Debian-basiert), manchmal auch CentOS. Daher ist fast jede linux-y-Option auf dem Tisch, wenn iptables nicht das richtige Level ist, um dieses Problem zu lösen.

2
Iptables kann nicht wissen, in welchem ​​Netzwerk Sie sich befinden. Am nächsten wäre es, Verkehr von / zu Adressen in den Bereichen der bekannten Netzwerke zuzulassen, aber dies ist offensichtlich keineswegs annähernd sicher. Möglicherweise können Sie ein Post-Up-Skript in das von Ihnen verwendete Netzwerkkonfigurationstool einhacken, um die richtigen Regeln anzuwenden. multithr3at3d vor 6 Jahren 1
Wenn Ihre Heim- und Arbeitsnetzwerke unterschiedliche IP-Bereiche verwenden. schroeder vor 6 Jahren 0
Gibt es bereits Werkzeuge, die in dieser Hinsicht gut sind? codykochmann vor 6 Jahren 0

1 Antwort auf die Frage

1
grawity

iptables selbst ist völlig statisch. Sie benötigen ein Frontend, das Netzwerk unterstützt.

Gibt es Werkzeuge, die bereits existieren?

Fedora / CentOS verwenden firewalld, das ein Konzept von "Zonen" hat (ähnlich wie in der Windows-Firewall). Wenn Ihr System NetworkManager verwendet, können Sie jedem Netzwerkprofil eine Zone zuweisen. Firewall-Regeln werden entsprechend geladen.

Ihre andere Option besteht darin, Post-Up-Hooks in Ihrem Netzwerkkonfigurationstool zu verwenden, damit ein Skript ausgeführt wird, das den gewünschten Regelsatz jedes Mal lädt, wenn Sie eine Verbindung zu einem anderen Netzwerk herstellen. Es kann so einfach wie ein Shellscript sein, das iptables-restore < /etc/iptables/rules.$ZONEabhängig von der aktiven Wi-Fi-SSID aufruft .