dynamisches firewallscript


  • Staenker
  • 852 Aufrufe 3 Antworten

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • dynamisches firewallscript

    meine frage:
    ich habe ein funktionierendes firewallscript mit iptables.
    wenn ich es von der shell aus aufrufe, mit z.B /root/cool/rc.firewall <IP-Adresse> (die ich aus dem Einwahlprotokoll nehme, also anzeigen und manuell eintippen) funktioniert alles wunderbar. !!!
    Jetzt möchte ich, dass es nach jeder neueinwahl neu gestatet wird. Ich habe schon auf sehr vielen sites gelesen, dass man es in die /etc/ppp/ip-up oder ip-up.local eintragen soll. es wird auch tatsächlich ausgefürht, wenn man mit einem echo vergleicht. (in rc.firewall "echo 123 >> /root/log/test" reinkritzeln - es steht dann auch 123 in test.) das problem scheint zu sein, dass die aufrufende task, keine rechte zum ausführen von iptables befehlen hat.
    denn auch wenn dann 123 in test drin steht hat sich keine einzige regel aus dem script in meine filter chains bewegt.
    habe schon oft von dem problem gelesen, aba nie ne antwort gefunden. habe es mit ip-up und ip-up.local probiert. ohne erfolg. weis nun nich mehr weiter...... :(
    danke für deine aufgebrachte zeit
    mfg
    staenker
  • gib uns doch mal einen kurzen ausschnitt aus deiner firewall (eine typische iptables-regel wuerde genuegen). die tatsache, dass dein script abgearbeitet wird, heisst ja nicht, dass iptables korrekt angesprochen wird
    ip-up und/oder ip-up.local sind durchaus geeignete dateien fuer den aufruf bei der einwahl.
  • Also: die Manipulation von Firewall-Regeln ist an root gebunden. Die Einwahlskripte laufen aber nicht zwingend unter root. Das ist einstellbar.

    Als ersten Schritt würde ich dafür sorgen, dass dein Skript ein vernünftges Protokoll ausspuckt. Dazu kannst du in die erste Zeile die bash mit der Option -x starten. Also:

    #!/bin/bash -x
    #hier alle Firewalregeln

    Der Aufruf kann dann so aussehen:

    /root/cool/rc.firewall > /root/cool/firewall.log

    Danach sollte jede Zeile des Skripts in der Protokolldatei stehen und dahinter eine eventuelle Fehlermeldung.

    Wenn dann tatsächlich ein Rechteproblem vorliegt, so starte dein Skript mit root-Rechten. Dazu gibt es das setuid-Bit:

    chmod u+s /root/cool/rc.firewall

    Damit läuft das Skript immer mit den Rechten des Besitzers, egal wer es aufruft.

    In allen anderen Fällen gilt das von Jürge und Holger gesagte: poste dein Skript. Es enthält möglicherweise Fehler.

    Grüße
    Michael