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

(gelöst)SUSE 11.1 iptables mit script beim booten bearbeiten

Joy006

Newbie
Hallo zusammen,
ich möchte gerne mit einem script die iptables beim booten bearbeiten. Ich hab hierzu folgendes script zusammengebastelt:

#! /bin/bash
#
# /etc/init.d/nonet
#
### BEGIN INIT INFO
# Provides: no internet for user nonet
# Required-Start: SuSEfirewall2_init $network $remote_fs
# Should-Start: $ALL
# Required-Stop: $remote_fs
# Default-Start: 2 3 5
# Default-Stop: 0 1 2 6
# Short-Description: forbid internet for user nonet
# Description: forbid internet for user nonet
### END INIT INFO

iptables -L OUTPUT > /tmp/env_Iptable1
iptables -I OUTPUT 1 -m owner --uid-owner 1002 -j REJECT
iptables -L OUTPUT > /tmp/env_Iptable2

Die Datei env_Iptable1 liefert dann folgendes:
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere

Die Datei env_Iptable2 liefert dann folgendes:
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
REJECT all -- anywhere anywhere owner UID match nonet reject-with icmp-port-unreachable
ACCEPT all -- anywhere anywhere

Somit wird dass script gestartet und die Chain OUTPUT wie gewünscht verändert. Soweit so gut.

Wenn SUSE11.1 dann vollständig hochgefahren ist und ich über ein Terminal die Iptables aufrufe,
bekomme ich für die Chain OUTPUT folgendes:

Chain OUTPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere
ACCEPT all -- anywhere anywhere state NEW,RELATED,ESTABLISHED
LOG all -- anywhere anywhere limit: avg 3/min burst 5 LOG level warning tcp-options ip-options prefix `SFW2-OUT-ERROR '

Jetzt ist mein Befehl raus und somit alles umsonst gewesen.
Vermutlich hängt es mit der Reihenfolge der Init-Scripts beim Booten zusammen.
Mein script (S11nonet) hängt im Runlevel 5 schon ziemlich am Ende
Danach kommt nur noch S11stopblktrace und S11SuSEfirewall2_setup.
Kann es an den beiden hängen bzw. wer überschreibt mir wieder meinen Eintrag ?
Wie bekomme ich mein script ganz an den Schluß ?
Umbenennen in S99nonet hat nicht funktioniert.

Gruß und Danke
Joy006
 
A

Anonymous

Gast
Nur mal noch so zur Info, da ich nicht sauber herauslesen kann ob du es auch richtig gemacht hast?

Dein Script hast du "S11nonet" genannt und in /etc/init.d/rc5.d/ abgelegt ???

Das währe dann falsch und kann nicht funktionien und dein Script wird nicht ausgeführt. In diesem Fall noch mal hier etwas genauer nachlesen, insbesondere wie es aktiviert wird. Die Scripte werden übrigens nicht mehr hintereinander entsprechend der Reihenfolge gestartet mit dem sie mit S* gefunden werden, sondern parallel abhängig von dem was du in INFO-Header konfiguriert hast.


robi
 

HBtux

Member
Anhand der folgenden Zeile wird die Reihenfolge S** im rc?.d Verzeichnis festgelegt.
Code:
# Required-Start: SuSEfirewall2_init $network $remote_fs

Dies sind die Runlevel, in denen das Start-Script verlinkt wird. (in diesem Fall rc2.d, rc3.d und rc5.d)
Code:
# Default-Start: 2 3 5

Vielleicht stimmt der Eintrag SuSEfirewall2_init nicht. (schaue mal im entsprechend Start-Script in der Zeile Provides:)
Sinngemäß müsste in Deinem Fall das Script "nonet" nach den drei Diensten "SuSEfirewall2_init, $network und $remote_fs" eingereiht sein.

Du könntes also einfach eines der letzen Scripte aus dem rc?.d Verzeichnis nehmen und als "Required-Start" in Dein Header eintragen.
Einige Dienste sind in /etc/insserv.conf definiert, die anderen musst Du direkt mit den Namen eintragen.

Tipp:
Du solltest die Zeile Provides: wie folgt ändern.
Code:
# Provides: nonet
Mit diesem Parameter wird nämlich der Dienstname definiert, den Du als Abhängigkeit wieder in anderen Scripts verwenden kannst. (Stichwort insserv)

Default-Start: und Default-Stop: sollten sich normalerweise ergänzen.
Wenn der Dienst in den Runlevel 2 3 und 5 gestartet wird, sollte er logischerweise in den Runlevel 0 1 und 6 gestoppt werden.
(in Deinem Script wird er in Runlevel 2 gestartet und gestoppt)

So könnte der Header Deines Start-Script aussehen....
Mit dem Befehl /usr/lib/lsb/install_initd nonet kannst Du das Start-Script automatisch verlinken lassen....
### BEGIN INIT INFO
# Provides: nonet
# Required-Start: SuSEfirewall2_init $network $remote_fs
# Should-Start: $ALL
# Required-Stop: SuSEfirewall2_init $network $remote_fs
# Default-Start: 2 3 5
# Default-Stop: 0 1 6
# Short-Description: forbid internet for user nonet
# Description: forbid internet for user nonet
### END INIT INFO
 
OP
J

Joy006

Newbie
Danke für die Tipps.
Hab in der Zwischenzeit hier noch einen Hinweis gefunden der geholfen hat.

Hab die Datei /etc/sysconfig/SuSEFirewall2 so editiert, dass die Zeile

FW_CUSTOMRULES="/etc/sysconfig/scripts/SuSEfirewall2-custom" aktiviert habe und die Zeile

# FW_CUSTOMRULES="" deaktivert habe.
Seit dem läuft es wie gewünscht.
 
Oben