PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Iptables Regeln bei Systemstart ausführen



Duke
18.04.12, 09:58
Ich habe ein älteres Suse 11.1 System zu betreuen, welches auf Grund von möglichen Inkompabilitäten der "installierten" Webanwendungen nicht geupdated werden soll.

Um eine Sicherheitslücke in Plesk zu schließen möchte ich den 8443 port schließen.

Bei manueller Ausführung ist dies Problemlos über folgende Kommandos möglich


#! /bin/sh
#
iptables -N block-plesk
iptables -A block-plesk -j DROP
iptables -I INPUT 1 -p tcp --dport 8443 -j block-plesk

Nun will ich aber dass im Falle eines Neustarts diese Regel entsprechend auch angewandt werden.

Dazu habe ich in /etc/rc.d/rc3.d ein Skript erstellt und es S09blockplesk genannt. Leider wird dieses nicht wie gewünscht ausgeführt bzw. führt nicht zum gewünschten Sperrerfolg.

Hat jemand eine Idee ?

marce
18.04.12, 10:16
Init-Scripte für OpenSuse benötigen ein bestimmtes Format - schau Dir also das skeleton-Script an (bzw. bau darauf auf) oder vergleiche mit einem bereits existenten.

Zusätzlich sollte das Script vermutlich in /etc/init.d liegen und über die off. Tools entsprechend verlinkt werden.

Duke
18.04.12, 10:18
Ja sowas hatte ich schon befürchtet... es könnte ja auch so einfach sein ;)

Eigentlich müsste laut iptables Beschreibung über die FW Config sowieso einfach nen Custom Skript hinterlegt werden können. Aber da sich die "normale" Config schon nicht da befinet wo sie laut Manual sein sollte geht das auch schon wieder gut los.

In wie weit muss ich den das Skeleton anpassen hatte das gestern schonmal inner Hand und es sah etwas gewaltig aus.

marce
18.04.12, 10:24
was zwingend drin sein muss steht im Script drin, wenn ich mich recht entsinne.

... alternativ frech: es gibt sicherlich ein firewall-Script unter /etc/init.d - ergänze doch das.

muell200
18.04.12, 10:25
Ja sowas hatte ich schon befürchtet... es könnte ja auch so einfach sein ;)


ist es doch auch... warum kompliziert, wenn es auch einfach geht.

erstelle ein script z.b.: firewall.sh mit deinen regelen

wann soll iptables ausgefuehrt werden?
- nachdem start vom netzwerk:
dann fuege das script in die init.d datei vom netzwerk ein

- nachdem die internet verbindung aufgebaut ist
fuege das script in ip-up ein ( unter /etc/ppp )

ist das nicht einfach :)

Duke
18.04.12, 10:51
Ich war gestern schon "dreisst" und habs in die boot.local eingefügt , da steht ja explizit, dass dies nachdem booten ausgeführt wird. Aber scheinbar zu früh.

Mit in einer anderen einfügen, könnte iches nochmal probieren.

Wobei ich das inner FW und nicht inner netzwerk machen würde, nachher is nen Fehler drin und das Netzwerk kommt nicht mehr hoch ;)

Wenn ich die Zeilen hinter das fi vom start Block hänge sollte es laufen oder ?




SERVICE_NAME="psa-firewall"
MODULE="firewall"
PRODUCT_ROOT_D="/usr/local/psa"

action="$1"
conf="$PRODUCT_ROOT_D/var/modules/$MODULE/${MODULE}-active.sh"
active_flag="$PRODUCT_ROOT_D/var/modules/$MODULE/active.flag"
emergency="$PRODUCT_ROOT_D/var/modules/$MODULE/${MODULE}-emergency.sh"

case "$action" in

start)
if [ ! -f "$active_flag" ]; then
echo "$SERVICE_NAME: service is disabled"
exit 1
fi
if [ -f "$conf" ]; then
if "$conf"; then
echo "$SERVICE_NAME: firewall configuration successfully applied"
exit 0
else
echo "$SERVICE_NAME: failed to apply firewall configuration"
exit 1
fi
else
echo "$SERVICE_NAME: firewall configuration not found"
exit 1
fi
;;

.....................................

muell200
18.04.12, 12:08
Ich war gestern schon "dreisst" und habs in die boot.local eingefügt , da steht ja explizit, dass dies nachdem booten ausgeführt wird. Aber scheinbar zu früh.


ja - wird vor dem netzwerk ausgefuehrt.




Wenn ich die Zeilen hinter das fi vom start Block hänge sollte es laufen oder ?


ja das funktioniert...
hast ne pm...

pibi
18.04.12, 13:39
dann fuege das script in die init.d datei vom netzwerk ein ... fuege das script in ip-up ein ( unter /etc/ppp )Das ist keine so gute Idee, denn diese Files werden vom System verwaltet und ggf. bei einem Update uerberschrieben. Im besten Fall sind sie vorher als .rpmsave gesichert worden, im Schlechtesten werden sie ersatzlos geloescht.

@Duke: Dein Weg war in Ansaetzen schon nicht schlecht. Ich starte meine Firewall auch so. Funktioniert tip-top;-) marce hat Dir in #2 schon den richtigen Tip gegeben.

Gruss Pit.

marce
18.04.12, 13:48
... wobei das mit den Updates bei der Version kein Problem darstellen würde - es gibt keine mehr dafür.. :-)

Duke
18.04.12, 14:53
So ganz richtig war es noch nicht wie es vorgeschlagen war ;)

die Stelle nach dem fi ... war schnell offensichtlich nicht geeignet.

Am Anfang des Startblocks geht es auch nicht weil durch das spätere config laden wohl wirklich nochmal was überschrieben wird.

Mitten rein funktioniert, insofern dass das natürlich die Firewall Config auch richtig geladen wurde.



start)
if [ ! -f "$active_flag" ]; then
echo "$SERVICE_NAME: service is disabled"
exit 1
fi
if [ -f "$conf" ]; then
if "$conf"; then
echo "$SERVICE_NAME: firewall configuration successfully applied"
echo "BLOCK PLESK"
iptables -N block-plesk | echo "-"
iptables -A block-plesk -j DROP | echo "--"
iptables -I INPUT 1 -p tcp --dport 8443 -j block-plesk | echo "XXX"
exit 0
else
echo "$SERVICE_NAME: failed to apply firewall configuration"
exit 1
fi
else
echo "$SERVICE_NAME: firewall configuration not found"
exit 1
fi
;; start)
if [ ! -f "$active_flag" ]; then
echo "$SERVICE_NAME: service is disabled"
exit 1
fi
if [ -f "$conf" ]; then
if "$conf"; then
echo "$SERVICE_NAME: firewall configuration successfully applied"
echo "BLOCK PLESK"
iptables -N block-plesk | echo "-"
iptables -A block-plesk -j DROP | echo "--"
iptables -I INPUT 1 -p tcp --dport 8443 -j block-plesk | echo "XXX"
exit 0
else
echo "$SERVICE_NAME: failed to apply firewall configuration"
exit 1
fi
else
echo "$SERVICE_NAME: firewall configuration not found"
exit 1
fi
;;




Mit
iptables --flush strato-block-plesk kann man bei bedarf dann zwischenzeitlich aufheben