diff --git a/etc/init.d/.firewallfunc b/etc/init.d/.firewallfunc index 05fc56e..2214585 100755 --- a/etc/init.d/.firewallfunc +++ b/etc/init.d/.firewallfunc @@ -208,6 +208,21 @@ ActivateMasq() { -j MASQUERADE >>$TMPSCRIPT } +AllowLocalServer() { + SERVER=$1 + CLIENT=$2 + PORT=$3 + PROT=$4 + RULE=ACCEPT + + echo $DEBUG $IPTABLES -A FORWARD \ + -s $CLIENT \ + -d $SERVER \ + -p $PROT \ + --dport $PORT \ + -j $RULE >>$TMPSCRIPT +} + AllowDMZServiceAccess() { SRVIP=$1 UDPPORTS=$2 @@ -675,6 +690,57 @@ AllowWSntpSync() { -j $RULE >>$TMPSCRIPT } +AllowNetBios() { + OUTDEV=$1 + WSIP=$2 + RULE=$3 + echo >&2 "Executing AllowNetBios with \"$1\" \"$2\" \"$3\"" + WSIPADDR=`echo $WSIP|sed -e "s/\/.*$//"` + INDEV=`FindInDevice $WSIPADDR` + for i in 137 138 139; do + echo $DEBUG $IPTABLES -A FORWARD \ + -p tcp \ + -s $WSIP \ + --sport $i \ + --dport $i \ + -o $OUTDEV \ + -i $INDEV \ + -m state \ + --state NEW,ESTABLISHED \ + -j $RULE >>$TMPSCRIPT + echo $DEBUG $IPTABLES -A FORWARD \ + -p tcp \ + -d $WSIP \ + --sport $i \ + --dport $i \ + -o $INDEV \ + -i $OUTDEV \ + -m state \ + --state ESTABLISHED \ + -j $RULE >>$TMPSCRIPT + echo $DEBUG $IPTABLES -A FORWARD \ + -p udp \ + -s $WSIP\ + --sport $i \ + --dport $i \ + -o $OUTDEV \ + -i $INDEV \ + -m state \ + --state NEW,ESTABLISHED \ + -j $RULE >>$TMPSCRIPT + echo $DEBUG $IPTABLES -A FORWARD \ + -p udp \ + -d $WSIP \ + --sport $i \ + --dport $i \ + -o $INDEV \ + -i $OUTDEV \ + -m state \ + --state ESTABLISHED \ + -j $RULE >>$TMPSCRIPT + done +} + AllowDHCPRelay() { SERVERIP=$1 diff --git a/etc/init.d/firewall b/etc/init.d/firewall index 1a92186..6e94880 100644 --- a/etc/init.d/firewall +++ b/etc/init.d/firewall @@ -106,7 +106,7 @@ if [ -f "$CFGFILE" ]; then case $1 in start) if [ -f /var/state/iptables.state ]; then - echo -n "Disable kernel console output" + echo -n "Disabling Kernel Console Output" echo "0" >/proc/sys/kernel/printk evaluate_retval echo -n "Restoring Firewall Table" @@ -172,6 +172,20 @@ if [ -f "$CFGFILE" ]; then AllowInternRouting ACCEPT $INTERNROUTING evaluate_retval fi + y=0 + while [ "${LOCALSERVER[$y]}" ]; do + echo -n "Activating allow for localserver ${LOCALSERVER[$y]}" + LOCSERVER=`echo ${LOCALSERVER[$y]}|cut -d":" -f 2` + DMZCLIENT=`echo ${LOCALSERVER[$y]}|cut -d":" -f 1` + LOCPORT=`echo ${LOCALSERVER[$y]}|cut -d":" -f 3` + LOCPROT=`echo ${LOCALSERVER[$y]}|cut -d":" -f 4` + AllowLocalServer $LOCSERVER \ + $DMZCLIENT \ + $LOCPORT \ + $LOCPROT + evaluate_retval + (( y++ )) + done if [ "$ALLOWNET" ]; then echo -n "Allowing routing for NET=$ALLOWNET over $TUNDEV" echo "#Netz $ALLOWNET komplett freischalten" >>$TMPSCRIPT @@ -238,6 +252,10 @@ if [ -f "$CFGFILE" ]; then echo "#ntp fuer ${LOCALWS[$wszahler]}" >>$TMPSCRIPT AllowWSntpSync $OUTDEV ${LOCALWS[$wszahler]} $ACCEPTRULE fi + if [ "${ALLOWNETBIOS[$wszahler]}" = "yes" ]; then + echo "#netbios fuer ${LOCALWS[$wszahler]}" >>$TMPSCRIPT + AllowNetBios $OUTDEV ${LOCALWS[$wszahler]} $ACCEPTRULE + fi evaluate_retval (( wszahler = $wszahler + 1 )) done diff --git a/etc/sysconfig/templates/firewall b/etc/sysconfig/templates/firewall index b4c5730..5fd8f16 100644 --- a/etc/sysconfig/templates/firewall +++ b/etc/sysconfig/templates/firewall @@ -73,7 +73,7 @@ INTERNROUTING="eth1 lo" #Leider kann hier nur EIN Locales Netz angegeben werden. Jedoch kann #durch gute Definition des Localen Netzes ein sehr grosser Bereich #Maskiert werden. Das Locale Netz muss mit "NetzIP/ShortMask" angegeben werden. -MASQNET=192.168.66.0/24 +#MASQNET=192.168.66.0/24 #Mit den folgenden Variablen lässt sich ein Komplettes Netz freischalten, das #z.B. hinter einem weiteren Router im Netzwerk angeschlossen ist. @@ -91,6 +91,12 @@ BGNETTCP[1]="13,15,20,21,25,43,70,80 109:115,143,143 220,443,554,765,1024:65535" ROUTEDBGNETSW[1]="yes" ROUTEDBGNETNTP[1]="yes" +#Bei DMZ Systemen solle u.U. bestimmte Services im geschuetzen Netzbereich +#aus der DMZ heraus ansprechbar sein. +#Die Server werden mit Portnummer und Protokoll jeweils in $LOCALSERVER[#] +#eingetragen +#LOCALSERVER[0]="hugin.compuextreme.de:pgsql.compuextreme.lan:5432:tcp" + #Mit den folgenden Zeilen wird die Internet Berechtigung für einzelne IP #Adressen festgelegt. LOCALWS Enthält die IP jeweils einer localen Workstation #Alternativ kann in LOCALWS auch ein komplettes SubNet angegeben werden. Dies wird @@ -105,6 +111,8 @@ ROUTEDBGNETNTP[1]="yes" #Aufgebaut, sondern Server und Client verwenden den gleichen Port 123. #Daher kann eine spezielle Regel für NTP eingefügt werden. Hierzu muss der #Wert von ALLOWNTP auf "yes" gesetzt werden. +#Gleiches gild fuer netbios von Microsoft. Hier kann die Variable ALLOWNETBIOS +#auf "yes" gesetzt werden, um die entsprechende Sonderbehandlung zu aktivieren. #In den Eckigen Klammern wird fuer jede freizuschaltende Workstation #eine andere Nummer eingesetzt. Es muessen alle vier Variablen jeweils einmal #pro Workstation gesetzt werden.