• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Dynamische IPTables Regeln

tinsel

Newbie
Hi,

folgende Situation:
ich habe einen IPSec Gateway für mein Netzwerk auf Basis SuSE 9.1 und Openswan eingerichtet. Das IPSec Szenario ist RoadWarrior. Als RoadWarrior kommt ein Win2k Rechner zum Einsatz (X.509 Zertifikat). Um den IPSec Tunnel aufzubauen benutze ich das "Müller Tool" aus der C't. Verbindungsaufbau funktioniert wunderbar. Für eine höhere Sicherheit verbiete ich das Forwarding vom Tunnelende zu meinem Netzwerk per IPTables. Damit ich trotzdem die Netzwerkdienste nutzen kann logge ich mit auf dem IPSec Gateway per SSH ein und mit einem Startscript werden die entsprechenden Regeln für das Forwarding gesetzt (so zusagen eine zweite Authentifizierung).

So jetzt mein Problem
Wie kann ich für jeden einzelnen Nutzer eigene Forwarding Regeln setzen (Verbindung Quell IP zu Nutzer ID?).
Wie kann ich:
1. Feststellen, ob ein Nutzer die IPSec Verbindung geschlossen hat

und wenn dem so ist

2. seine persönlichen Forwarding Regeln löschen.

thx for help
 

gaw

Hacker
Mit iptables lässt sich keine Nutzer-Identifikation betreiben, vielleicht gibt es irgendwo in den Erweiterungen ein Modul, aber es ist eigentlich nicht Aufgabe eines Paketfilters Nutzeridentifikation zu betreiben. Das sollte anderen Schichten des OSI-Modells vorbehalten sein und zwar einfach deswegen, weil dort schon im Verbundungsaufbau, (ftp, ssh, http. smb usw.) eine hervorragande und gut funktionierende Nutzerauthentifizierung existiert.
Standardlösungen sind also Proxies. Über den Squid lässt sich einer Nutzer-ID über PAM und/oder openldap betreiben.

Per Skripte liesse sich so etwas natürlich auch realisieren, wenn man es denn wirklich benötigt. Ich arbeite zum Beispiel mit dynamischen Scripten wenn ich bestimmte Funktionen der Firewall aus- und wieder einschalten will, hier zum Beispiel dynamisch den Zugriff der Clients im LAN auf den Port 8080 ein- bzw. auszuschalten
Das sieht dann so aus:
Code:
#!/bin/bash
############  Firewallzusatzskript für einen Linux Router
# copyright (c) gaw

############  Variabeln aus /usr/sbin/firewallvariabeln auslesen

eval `cat /usr/sbin/firewallvariabeln`

############  Zugang über 8080 einschalten

case "$1" in

 "start")


        $IPTABLES -I FORWARD -i $INTERFACE_INT -o $INTERFACE_EXT \
                   -m state \
                  --state NEW,ESTABLISHED,RELATED -p TCP --sport $PORTS_HIGH \
                  --dport 8080 -j ACCEPT

        $IPTABLES -I FORWARD -i $INTERFACE_EXT -o $INTERFACE_INT \
                   -m state \
                  --state ESTABLISHED,RELATED  -p TCP --sport 8080 \
                  --dport $PORTS_HIGH -j ACCEPT

        echo "Zugriff auf Port 8080 eingeschaltet"
        ;;
 "stop")


        $IPTABLES -D FORWARD -i $INTERFACE_INT -o $INTERFACE_EXT \
                   -m state \
                  --state NEW,ESTABLISHED,RELATED -p TCP --sport $PORTS_HIGH \
                  --dport 8080 -j ACCEPT

        $IPTABLES -D FORWARD -i $INTERFACE_EXT -o $INTERFACE_INT \
                   -m state \
                  --state ESTABLISHED,RELATED  -p TCP --sport 8080 \
                 --dport $PORTS_HIGH -j ACCEPT

       echo "Zugriff auf Port 8080 ausgeschaltet"

esac

Die Variabeln stehen alle in einer anderen Datei. So könntest du es auch machen. Über die Analyse netstat, ps und Logdateien kann dein Skript dann ermitteln welcher User diesen Rechner besitzt. Über ldap oder ident kannst du dann ermitteln wer sich angemeldet hat und entprechend dynamische Regeln einschalten. Hoffe das Beispiel hilft. Useridentifizierung und Authentifizierung müssen aber implemtiert sein und die Linuxvbox mit einschließen.


mfG
gaw
 
Oben