Neue Version V963

git-svn-id: svn://svn.compuextreme.de/Viitor/V963/Viitor_iptables@5933 504e572c-2e33-0410-9681-be2bf7408885
This commit is contained in:
kueller 2011-01-03 10:48:06 +00:00
commit 7345882d8a
5 changed files with 2013 additions and 0 deletions

1226
etc/init.d/.firewallfunc Executable file

File diff suppressed because it is too large Load Diff

461
etc/init.d/firewall Normal file
View File

@ -0,0 +1,461 @@
#!/bin/bash
#Framework, welches ein komplettes Linux System aus den Sourcen erstellt
#dieses Framework wird im CVS Repository
#:pserver:cvs.rainmaker-mm.de/RMM/cvs zur Verfügung gestellt
#
#Lage dieser Datei im Archiv: $Source$
#
#(c) Rainmaker MultiMedia OHG
#This program is free software; you can redistribute it and/or
#modify ist under the terms of the GNU General Public License
#as published by the Free Software Foundation; either version
#2 of the License, or (at your option) any later version.
#
#This program is distributed in the hope that it will be useful,
#but WITHOUT ANY WARRANTY; without even the implied warranty of
#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
#See the GNU General Public License for more details.
#
#You should have received a copy of the GNU General Public License
#along with this program; if not write to the Free Software Foundation,
#Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#
#Beschreibung:
#Neues Firewall Script für MonsumLinux. Dieses Script arbeitet
#in Verbindung mit /etc/init.d/functions und /etc/init.d/.firewallfunc
#Durch einfache Konfiguration über die Datei /etc/sysconfig/firewall
#kann die Firewall eingestellt werden. Es wird dediziert angegeben
#welche Systeme durch die Firewall das Angeschlossene Internet mit
#Dynamischer IP Nutzen können. Zugriff auf den Router selber, sowie
#das Routing durch den Router für die Local angeschlossenen Netze
#kann getrennt gesteuert werden.
#Die Firewall arbeitet nach der Regel: Alles was nicht explizit erlaubt
#ist, ist verboten.
#
#Aufrufparameter:
#Es handelt sich um ein System V Init script. Entsprechend die Optionen
#start und stop
#
#Letzte Änderung von: $Author$
#Datum der letzten Änderung: $Date$
#Version der Datei: $Revision$
#
#$Log$
#Revision 1.20 2007/05/09 12:03:06 segler
#firewall.template has moved to etc/sysconfig/net
#
#Revision 1.19 2007/05/02 12:07:35 segler
#iptables resides in /usr/sbin, not /sbin
#
#Revision 1.18 2007/03/23 11:25:32 kueller
#Neue Funktionen und bugfixes eingepflegt. (Diese laufen auf skylla und sphinx stabil)
#
#Revision 1.17 2006/08/24 21:19:41 kueller
#Viele Funktionen ueberarbeitet. Erkennung der incomming devices optimiert.
#Wird nicht mehr ueber das DEVICES Array mit verschachtelten schleifen gemacht,
#sondern ueber ausgaben von netstat -rn mit zugehoerigen netzadressen ->
#das ist deutlich schneller.
#Ausserdem ausbau und verbesserung diverser Firewall einstellungen. Weiter
#entwicklung des port forwardings auf interne Server -> dem scheint jetzt
#auch mit MASQUERADE zu funktionieren.
#Weiterhin die entschluesselung von "Portnummer;tcp" aufgehoben. dafuer
#werden jetzt jeweils 2 Variablen (1x udp, 1x tcp) definiert, und deren
#inhalte mit -m multiport auf einen schlag uebergeben. Das spart einiges
#an Schleifen und beschleunigt das script emminent.
#
#Revision 1.16 2006/06/30 09:33:02 kueller
#Sonderbehandlung fuer localen zugriff auf syslog eingebaut
#
#Revision 1.15 2006/02/21 14:42:35 kueller
#Korrektur im Aufruf der LocalServices Function - sollte jetzt fuer alle richtig functionieren.
#Weiterhin beschleunigung beim startup wenn /etc/sysconfig/firewall nicht veraendert wurde.
#Nach dem Aufbau der Firewall tables wird ein iptables-save in /var/state/iptables.state gemacht.
#Diese kann, sofern /etc/sysconfig/firewall unveraendert ist, mit iptables-restore wieder
#geladen werden - was wesentlich schneller als das parsen der configfiles geht.
#
#Revision 1.14 2004/11/23 19:46:07 kueller
#Debuging und neue Funktionalität der Firewall. Mit der Zeit weiter gewachsen
#im CompuExtreme Netzwerk.
#
#Revision 1.9 2002/11/04 12:03:01 kueller
#Fehlende Funktionssammlung .firewallfunc hinzugefügt. Erweiterung der Firewall
#um MARK Funktionalitaet, sowie Freischaltung von Getunnelten Netzen (letzteres
#ist in der DEBUG Phase und funktioniert noch nicht komplett!)
#
#Revision 1.8 2002/10/14 12:36:45 kueller
#Firewall Script komplett neu erstellt. Es wird nun mit den Unterschiedlichen
#Chains (INPUT, FORWARD, OUTPUT) gearbeitet. Die Firewall lässt sich so
#wesentlich feiner abstimmen, und arbeitet sicherer.
#
#
CFGFILE=/etc/sysconfig/net/firewall
SYSFUNCTIONS=/etc/init.d/functions
FIREWALLFUNC=/etc/init.d/.firewallfunc
TMPSCRIPT=/var/tmp/firewall_reconfig$$
source $SYSFUNCTIONS
source $FIREWALLFUNC
IPTABLES="/usr/sbin/iptables"
IPCFG=/sbin/ip
IFCONFIG=/sbin/ifconfig
#DEBUG=echo
if [ -f "$CFGFILE" ]; then
source $CFGFILE
case $1 in
start)
if [ -f /var/state/iptables.state ]; then
echo -n "Disabling Kernel Console Output"
echo "0" >/proc/sys/kernel/printk
evaluate_retval
echo -n "Restoring Firewall Table"
cat /var/state/iptables.state|iptables-restore
evaluate_retval
else
echo "No saved configuration. please generate new config"
echo "Use $0 configure to generate new config"
fi
;;
configure)
if [ -f "$TMPSCRIPT" ]; then
rm $TMPSCRIPT
fi
touch $TMPSCRIPT
chmod 755 $TMPSCRIPT
echo -n "Firewall: loads network informations"
LoadDevArray
evaluate_retval
echo -n "Firewall: Setting default rule DROP "
DefaultRule
evaluate_retval
echo -n "Firewall: Opening loopback Communication"
AllowLoopBack
evaluate_retval
ACCEPTRULE=ACCEPT
REJECTRULE=REJECT
if [ "$ACCOUNTING" == "yes" ]; then
echo -n "Activate ACCOUNTING LOG"
echo "#ACCOUNTING Table erstellen" >>$TMPSCRIPT
CreateAccountingTable
ACCEPTRULE=account-log
evaluate_retval
fi
if [ "$LOG_REJECTED" == "yes" ]; then
echo -n "Activate REJECT LOG"
echo "#LOG_REJECT einrichten" >>$TMPSCRIPT
CreateLogTable
REJECTRULE=reject-log
evaluate_retval
fi
if [ "$ICMP" == "yes" ]; then
echo -n "Activate ICMP Rules"
echo "#ICM Rules" >>$TMPSCRIPT
CreateICMPTable
ActivateICMPRules
evaluate_retval
else
echo -n "Opening ICMP"
echo "#ICM Ohne einschraenkung zulassen" >>$TMPSCRIPT
for i in FORWARD \
INPUT \
OUTPUT; do
echo "$DEBUG $IPTABLES -A $i \
-p icmp \
-j ACCEPT" >>$TMPSCRIPT
done
evaluate_retval
fi
if [ "$INTERNROUTING" ]; then
echo -n "Activate Local Routing for $INTERNROUTING"
echo "#Firewalling fuer interne Ports deaktivieren" >>$TMPSCRIPT
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
AllowAllDefault $ALLOWNET $TUNDEV ACCEPT
evaluate_retval
fi
for i in $MASQNET; do
echo -n "Activate Masquerading for $i"
echo "#Masquerade einrichten" >>$TMPSCRIPT
ActivateMasq $OUTDEVICE $MASQNET
evaluate_retval
done
y=0
while [ ${DMZSERVER[$y]} ]; do
echo "Allow Access to ${DMZSERVER[$y]}"
echo "for UDP Ports: ${UDPDMZPORTS[$y]}"
echo -n "for TCP Ports: ${TCPDMZPORTS[$y]}"
echo "#DMZServer ${DMZSERVER[$y]} freigeben" >>$TMPSCRIPT
AllowDMZServiceAccess ${DMZSERVER[$y]} \
"${UDPDMZPORTS[$y]}" \
"${TCPDMZPORTS[$y]}"
evaluate_retval
(( y++ ))
done
y=0
while [ ${INSERVER[$y]} ]; do
echo "Allow Access to Intranet Service ${INSERVER[$y]}"
IP=`echo ${INSERVER[$y]}|awk -F":" '{print $1}'`
PORT=`echo ${INSERVER[$y]}|awk -F":" '{print $2}'`
PROT=`echo ${INSERVER[$y]}|awk -F":" '{print $3}'`
AllowIntranetService ${IP} \
${PORT} \
${PROT}
evaluate_retval
(( y++ ))
done
for i in $GLOBALSERVER; do
echo -n "Allow Access to Server $i"
echo "#Zugriff auf server $i freigeben" >>$TMPSCRIPT
LocalAllowWSAll $i
evaluate_retval
done
if [ "$LOCALDEVICES" ]; then
if [ "$LOCALUDP" ] || [ "$LOCALTCP" ]; then
echo "#Zugriff auf Firewall fuer locale Netze freigeben" >>$TMPSCRIPT
LocalAllowPortIN "$LOCALUDP" "$LOCALTCP" "$LOCALDEVICES"
evaluate_retval
fi
fi
wszahler=0
while [ "${ALLOWEDNETWORK[$wszahler]}" ]; do
echo "Allow Local Access for Network ${ALLOWEDNETWORK[$wszahler]}"
echo "#Eingeschr. Zugriff fuer Netz ${ALLOWEDNETWORK[$wszahler]} einrichten" >>$TMPSCRIPT
AllowNetPortIN "${NETUDPSERVICES[$wszahler]}" \
"${NETTCPSERVICES[$wszahler]}" \
${ALLOWEDNETWORK[$wszahler]}
(( wszahler = $wszahler + 1 ))
done
wszahler=0
while [ "${LOCALWS[$wszahler]}" ]; do
echo "Internet Access for ${LOCALWS[$wszahler]}"
echo "UDP: ${ROUTEUDP[$wszahler]}"
echo -n "TCP:${ROUTETCP[$wszahler]}"
echo "#Freischaltung fuer ${LOCALWS[$wszahler]}" >>$TMPSCRIPT
AllowWSPortOUT $OUTDEVICE \
${LOCALWS[$wszahler]} \
"${ROUTEUDP[$wszahler]}" \
"${ROUTETCP[$wszahler]}" \
$ACCEPTRULE
if [ "${ALLOWSWPORTS[$wszahler]}" = "yes" ]; then
echo "#ftp portswitch fuer ${LOCALWS[$wszahler]}" >>$TMPSCRIPT
AllowWSSwitchPort ${LOCALWS[$wszahler]} tcp $OUTDEV $ACCEPTRULE
AllowWSSwitchPort ${LOCALWS[$wszahler]} udp $OUTDEV $ACCEPTRULE
fi
if [ "${ALLOWNTP[$wszahler]}" = "yes" ]; 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
netzahler=0
while [ "${ROUTEDBGNETWORK[$netzahler]}" ]; do
echo "Internet Access for ${ROUTEDBGNETWORK[$netzahler]}"
echo "UDPPORTS: ${BGNETUDP[$netzahler]}"
echo -n "RCPPORTS: ${BGNETTCP[$netzahler]}"
echo "#Internet Access for ${ROUTEDBGNETWORK[$netzahler]}" >>$TMPSCRIPT
AllowRouteNetOut ${ROUTEDBGNETWORK[$netzahler]} \
$OUTDEV \
"${BGNETUDP[$netzahler]}" \
"${BGNETTCP[$netzahler]}" \
$ACCEPTRULE
evaluate_retval
if [ ${ROUTEDBGNETSW[$netzahler]} == "yes" ]; then
echo "Allowing Port Switch for ${ROUTEDBGNETWORK[$netzahler]}"
echo "#Allowing Port Switch for ${ROUTEDBGNETWORK[$netzahler]}" >>$TMPSCRIPT
AllowRouteNetSwitch ${ROUTEDBGNETWORK[$netzahler]} $OUTDEV tcp $ACCEPTRULE
AllowRouteNetSwitch ${ROUTEDBGNETWORK[$netzahler]} $OUTDEV udp $ACCEPTRULE
fi
if [ ${ROUTEDBGNETNTP[$netzahler]} == "yes" ]; then
echo "Allowing NTP for ${ROUTEDBGNETWORK[$netzahler]}"
echo "#Allowing NTP for ${ROUTEDBGNETWORK[$netzahler]}" >>$TMPSCRIPT
AllowRouteNetNTP ${ROUTEDBGNETWORK[$netzahler]} $OUTDEV $ACCEPTRULE
fi
(( netzahler = $netzahler + 1 ))
done
if [ "$EXTUDPOPEN" ] || [ "$EXTTCPOPTEN"]; then
echo "Allow External Access"
echo "for UDP: $EXTUDPOPEN"
echo -n "for TCP: $EXTTCPOPEN"
echo "#Allow External Access" >>$TMPSCRIPT
ExternAllowPortIn "$EXTUDPOPEN" "$EXTTCPOPEN" $OUTDEVICE $ACCEPTRULE
evaluate_retval
fi
for i in $ALLOWDEVICESWPORT; do
echo -n "Allowing Portswitch on device $i"
echo "#Allowing Portswitch on device $i" >>$TMPSCRIPT
AllowLocalSwitchPort tcp $i $ACCEPTRULE
AllowLocalSwitchPort udp $i $ACCEPTRULE
evaluate_retval
done
if [ "$LOCALUSEUDP" ] || [ "$LOCALUSETCP" ]; then
echo "Allow Local Internet Access"
echo "for UDP: $LOCALUSEUDP"
echo -n "for TCP: $LOCALUSETCP"
echo "#Allow Local Internet Access" >>$TMPSCRIPT
ExternAllowPortOut "$LOCALUSEUDP" "$LOCALUSETCP" $OUTDEVICE $ACCEPTRULE
evaluate_retval
fi
if [ "$NTPSYNC" = "yes" ]; then
echo -n "Allow NTP Time Sync"
echo "#Allow NTP Time Sync" >>$TMPSCRIPT
LocalAllowntpSync $OUTDEV $ACCEPTRULE
evaluate_retval
fi
for i in $LOCSYSLOG; do
echo -n "Allowing remote syslog for $i"
echo "#Allowing remote syslog for $i" >>$TMPSCRIPT
ExternAllowSyslog $i $ACCEPTRULE
evaluate_retval
done
if [ "$USESYSLOG" ]; then
echo -n "Allowing use of $USESYSLOG for syslog"
echo "#Allowing use of $USESYSLOG for syslog" >>$TMPSCRIPT
LocalAllowSyslog $USESYSLOG $ACCEPTRULE
evaluate_retval
fi
if [ "$MARK" = "yes" ]; then
echo -n "Setting mark $MARKVALUE for Net $MARKNET"
echo "#Setting mark $MARKVALUE for Net $MARKNET" >>$TMPSCRIPT
InternMarkNet $MARKNET $MARKVALUE
evaluate_retval
fi
y=0
while [ "${FORWARDSRV[$y]}" ]; do
echo "Forwarding to ${FORWARDSRV[$y]}"
echo "UDP Ports: ${FORWDUDP[$y]}"
echo "TCP Ports: ${FORWDTCP[$y]}"
echo "#Forwarding to ${FORWARDSRV[$y]}" >>$TMPSCRIPT
ExtForwardPorts ${FORWARDSRV[$y]} \
"${FORWDUDP[$y]}" \
"${FORWDTCP[$y]}" \
$OUTDEVICE
evaluate_retval
(( y++ ))
done
y=0
while [ "${DSTSERVER[$y]}" ]; do
for x in ${FWDSERVICE[$y]}; do
SPORT=`echo $x|cut -d";" -f 1`
PROT=`echo $x|cut -d";" -f 2`
DPORT=`echo $x|cut -d";" -f 3`
ExtForwardPort ${DSTSERVER[$y]} \
$PROT \
$SPORT \
$DPORT \
$OUTDEVICE
done
(( y++ ))
done
if [ "$DHCPSERVER" ]; then
AllowDHCPRelay $DHCPSERVER
fi
echo -n "Closing all returned open ports"
echo "#Closing all returned open ports" >>$TMPSCRIPT
CloseLast $REJECTRULE
evaluate_retval
echo -n "Stopping Firewall"
$0 stop
evaluate_retval
echo -n "Applying new config to firewall"
$DEBUG $TMPSCRIPT
evaluate_retval
rm $TMPSCRIPT
echo -n "Saving Firewall rules table"
$DEBUG iptables-save >/var/state/iptables.state
evaluate_retval
;;
stop)
for i in INPUT FORWARD OUTPUT; do
$DEBUG $IPTABLES -F $i
$DEBUG $IPTABLES -P $i ACCEPT
done
if [ "$ACCOUNTING" == "yes" ]; then
$DEBUG $IPTABLES -F account-log
$DEBUG $IPTABLES -X account-log
fi
if [ "$LOG_REJECTED" = "yes" ]; then
$DEBUG $IPTABLES -F reject-log
$DEBUG $IPTABLES -X reject-log
fi
if [ "$ICMP" == "yes" ]; then
$DEBUG $IPTABLES -F icmp-rules
$DEBUG $IPTABLES -X icmp-rules
fi
if [ "$MASQ" == "yes" ] || [ "$FORWARDSRV[0]" ]; then
$DEBUG $IPTABLES -t nat -F
fi
if [ "$MARK" = "yes" ]; then
$DEBUG $IPTABLES -t mangle -F
fi
;;
deny)
if [ ! "$2" ]; then
echo "Need a Workstation to lock"
exit 1
fi
wszahler=0
WSIP=`nslookup $2|tail -n 2|head -n 1|awk '{print $2}'`
while [ "${LOCALWS[$wszahler]}" ]; do
if [ "${LOCALWS[$wszahler]}" == "$WSIP" ]; then
for k in ${ROUTEPORTS[$wszahler]}; do
echo -n " $k"
FW_PORT=`echo $k|cut -f 1 -d ";"`
FW_PROT=`echo $k|cut -f 2 -d ";"`
ChangeWSOutRule ${LOCALWS[$wszahler]}\
$FW_PORT $FW_PROT DROP
done
evaluate_retval
fi
(( wszahler = $wszahler + 1 ))
done
;;
allow)
if [ ! "$2" ]; then
echo "Need a Workstation to lock"
exit 1
fi
wszahler=0
WSIP=`nslookup $2|tail -n 2|head -n 1|awk '{print $2}'`
while [ "${LOCALWS[$wszahler]}" ]; do
if [ "${LOCALWS[$wszahler]}" == "$WSIP" ]; then
for k in ${ROUTEPORTS[$wszahler]}; do
echo -n " $k"
FW_PORT=`echo $k|cut -f 1 -d ";"`
FW_PROT=`echo $k|cut -f 2 -d ";"`
ChangeWSOutRule ${LOCALWS[$wszahler]}\
$FW_PORT $FW_PROT ACCEPT
done
evaluate_retval
fi
(( wszahler = $wszahler + 1 ))
done
;;
*)
echo "Usage: $0 {start|stop}"
;;
esac
fi

20
etc/init/iptables.conf Normal file
View File

@ -0,0 +1,20 @@
description "Setup and Start iptables firewall"
author "Harald Kueller <harald.kueller@compuextreme.de>"
version 1.0
emits none special
start on ( runlevel [2345] and (stopped routing))
console output
pre-start script
if [ [ ! -f /var/state/iptables.state ] && [ -f /etc/sysconfig/net/firewall ] ]; then
/etc/init.d/firewall configure
fi
end script
script
if [ -f /var/state/iptables.state ]; then
/etc/init.d/firewall start
fi
end script

View File

@ -0,0 +1,266 @@
#Framework, welches ein komplettes Linux System aus den Sourcen erstellt
#dieses Framework wird im CVS Repository
#:pserver:cvs.rainmaker-mm.de/RMM/cvs zur Verfügung gestellt
#
#Lage dieser Datei im Archiv: $Source: /Data/cvs/Viitor_iptables/etc/sysconfig/firewall.template,v $
#
#(c) Rainmaker MultiMedia OHG
#This program is free software; you can redistribute it and/or
#modify ist under the terms of the GNU General Public License
#as published by the Free Software Foundation; either version
#2 of the License, or (at your option) any later version.
#
#This program is distributed in the hope that it will be useful,
#but WITHOUT ANY WARRANTY; without even the implied warranty of
#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
#See the GNU General Public License for more details.
#
#You should have received a copy of the GNU General Public License
#along with this program; if not write to the Free Software Foundation,
#Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#
#Beschreibung:
#Konfigurations Datei für das firewall Init Script
#
#Aufrufparameter:
#wird vom Init Script verwendet - und hat keine eigenen
#funktionen oder parameter
#
#Letzte Änderung von: $Author: kueller $
#Datum der letzten Änderung: $Date: 2006/06/30 09:33:02 $
#Version der Datei: $Revision: 1.11 $
#
#$Log: firewall.template,v $
#Revision 1.11 2006/06/30 09:33:02 kueller
#Sonderbehandlung fuer localen zugriff auf syslog eingebaut
#
#Revision 1.10 2004/11/23 19:46:07 kueller
#Debuging und neue Funktionalität der Firewall. Mit der Zeit weiter gewachsen
#im CompuExtreme Netzwerk.
#
#
# Zu Allererst erfolgen einige Grundsätzliche Definitionen zum localen
# Netzwerk.
# OUTDEVICE enthält den Namen des Outgoing Devices - für ADSL typischerweise
# "ppp0", für isdn "ippp0"
OUTDEVICE=ppp0
# Konfiguration von Accounting Möglichkeiten. Wird diese Variable auf "yes"
# gesetzt, wird jeder erlaubte Zugriff in des Externe Netz mirprotokolliert
# Dies ermöglicht eine spätere Auswertung, und damit die sammlung von
# Traffic informationen wie sie zu Abrechnungszwecken notwendig sind.
ACCOUNITNG="no"
# Konfiguration von LOG Aktivitäten zu Unerlaubten/wünschen Zugriffen.
# wird diese Variable auf "yes" gesetzt, wird jeder von der Firewall
# abgewiesene Zugriff mitprotokolliert
LOG_REJECTED="no"
#ICMP Freischaltung. Wird die folgende Variable auf YES gesetzt, so
#wird die Durchleitung von ICMP Meldungen eingeschränkt. Dies verhindert
#Verschiedene DoS Attacken. Ohne Setzen dieser Variable schaltet die Firewall
#sämtliche icmp Zugriffe durch.
ICMP=yes
#Werden in der folgenden Variablen Devices angegeben, so fungiert dieser
#Rechner für alle an diese Devices angeschlossenen Systeme als Router.
#Der Traffic zwischen diesesn Systemen wird ohne einschränkungen erlaubt.
INTERNROUTING="eth1 lo"
#Die Folgenden Variablen aktivieren das Masquerading. Hier werden die
#Packete eines Netzes mit der Internet Adresse des Routers Maskiert.
#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
#Mit den folgenden Variablen lässt sich ein Komplettes Netz freischalten, das
#z.B. hinter einem weiteren Router im Netzwerk angeschlossen ist.
#compuextreme.lan
ROUTEDBGNETWORK[0]=192.168.66.0/27
BGNETUDP[0]="13,20,21,70,109 110,143 220,765,1024:65535"
BGNETTCP[0]="13,15,20,21,25,43,70,80 109:115,143,143 220,443,554,765,1024:65535"
ROUTEDBGNETSW[0]="yes"
ROUTEDBGNETNTP[0]="yes"
ROUTEDBGNETWORK[1]=192.168.66.32/28
BGNETUDP[1]="13,20,21,70,109 110,143 220,765,1024:65535"
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
#durch die kurze Schreibform eines Netzwerkes (IP/MASK, z.B. 192.168.0.0/16) erreicht.
#ROUTEPORTS die für den Durchgriff der Maschienen freizuschaltenden Portnummern
#und Protokolle. Einige Protokolle Bauen mehrere Verbindungen auf
#unterschiedlichen Ports auf - d.H. sie Switchen den Port nach dem
#Verbindungsaufbau (speziell FTP). Hierzu ist eine besondere Einstellung in
#der Firewall notwendig. Diese Einstellung kann mit ALLOWSWPORTS="yes" erreicht
#werden. NTP (Network Time Protokoll) wiederum verhält sich ebenfalls nicht
#ganz wie üblich. Hier wird die Verbindung nicht über einen port >1024
#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.
#Protokoll getrennt durch ";" zusammengefasst
#Special Ports:
#2401;tcp cvs Access
#5190;tcp 5190;udp AOL Instand Messanger
#6346;tcp gnutella
#6699;tcp 7950/1/2;tcp WinMX
#1214;tcp 2832;tcp KaZaA
#Freischaltung fuer odin.dmz.lan
LOCALWS[0]="192.168.66.49"
ROUTEUDP[0]="13,20,21,43,53,70,109,110,143,162,177,220,765,1024:65535"
ROUTETCP[0]="13,15,20:25,43,53,70,80,109:115,143 161,177,220,443,554,765,1024:65535"
#ROUTEUDP[0]="0:65535"
#ROUTETCP[0]="0:65535"
ALLOWSWPORTS[0]="yes"
ALLOWNTP[0]="yes"
#Freischaltung fuer hades.dmz.lan
LOCALWS[1]="192.168.66.50"
ROUTEUDP[1]="13,20,21,70,109,110,143,162,177,220,765,1024:65535"
ROUTETCP[1]="13,15,20:25,43,70,80,109:115 143,161,177,220,443,554,765,1024:65535"
ALLOWSWPORTS[1]="yes"
ALLOWNTP[1]="no"
#Wenn der Router Server aus dem internen Netz Benutzt, so muss der Zugriff
#auf diese Server freigeschaltet werden. Dies kann entweder Global für
#Alle Dienste geschehen, oder auch dediziert für bestimmte Dienste.
#Die Globale Freischaltung empfiehlt sich vor allem wenn RPC Basierte
#Dienste des Servers verwendet werden. Die dedizierte Variante ist die
#Sicherere, bedeutet jedoch mehr Aufwand für den Firewallrechner.
#Diese Firewall verwendet derzeit nur die Globale Freischaltung von
#Bestimmten servern.
#Über die Variable GLOBALSERVER koennen ein oder mehrere interne Netze
#angegeben werden. Bei der Angabe mehrerer Netze müssen diese durch ein
#space zeichen voneinander getrennt werden.
GLOBALSERVER="192.168.66.49 192.168.66.53"
#Liegen die genutzen Dienste hinter einem grouteten Netz, so muss die
#Freischaltung anders erfolgen. Hierzu die Variable unten
#definieren. Angegeben wird hier die Server IP, der Dienst Port, sowie das
#Protokoll. Hier wird NUR dem Firewall Rechner der Zugriff auf diese
#Dienste erlaubt.
INSERVER[0]="192.168.75.67:53:tcp"
INSERVER[1]="192.168.75.67:53:udp"
#Serverdienste Auf Router. Hiermit können Bestimmte Zugriffe auf den Router
#aus dem gesammten Localen Netz (definiert über die angegebenen Devices)
#erlaubt werden. Die Angabe der Freigeschalteten Dienste erfolgt auf
#die gleiche Weise, wie in "$ROUTERPORTS"
LOCALUDP="22"
LOCALTCP="22,25,80"
LOCALDEVICES="eth1"
#Alternativ zu LOCALSERVICES koennen die Dienste auch pro Netzwerk freigeschaltet werden.
#Hierzu muss pro freizuschaltendes Netzwerk die Variablen ALLOWEDNETWORK[#] und
#NETSERVICES[#] definiert werden. ALLOWEDNETWORK enthält die Netzwerkdefinition,
#NETSERVICES die erlaubten Port/Protokoll Kombinationen.
#ALLOWEDNETWORK[0]="192.168.26.0/27"
#NETUDPSERVICES[0]="13,53,67,68,88,110,111,137:139,143,161,177,220,464"
#NETTCPSERVICES[0]="13,15,20:23,25,42,53,67,80,88,110,111,143,161"
#ALLOWENETWORK[1]="192.168.26.128/27"
#NETUDPSERVICES[1]="517,518,520,765,856,863,873,1024:65535"
#NETTCPSERVICES[1]="177,220,443,513,514,543,544,749,765,856,863,1024:65535"
#Die folgende Variable Entspricht der Funktionalität von LOCALSERVICES,
#bezieht sich jedoch auf Services, die aus dem Internet herraus ansprechbar
#sein sollen. Hier ist nur der Zugriff vom Internet auf den Router gemeint
#Freigeschaltene Dienste werden nicht durch den Router durchgereicht!
EXTUDPOPEN="22"
EXTTCPOPEN="22,25"
#Sollen aus dem Geschuetzten Netz Server in der DMZ ansprechbar sein (Ohne
#Restriktionen!) dann hier eintragen.
#DMZSERVER[0]="192.168.66.49"
#UDPDMZPORTS[0]="20,49,53,80,110,111,1024:65535"
#TCPDMZPORTS[0]="20,21,22,25,49,53,69,80,110,111,443,1024:65535"
#Einzelne Dienste können durch die Firewall auf ein system im Privaten Internen
#Netz weitergeleitet werden. So kann zum Beispiel Aller Traffic von port 80
#auf eine andere Maschine weitergeleitet werden, welche diesen Request
#beantwortet
#Diese Funktion der Viitor Firewall befindet sich noch in der Entwicklung!
FORWARDSRV[0]="192.168.66.49"
FORWDUDP[0]="20,21,443,3690,5000,8767,8888,8889"
FORWDTCP[0]="20,21,22,80,443,873,2401,3690,5000"
FORWDSWITCH[0]=yes
FORWARDSRV[1]="192.168.66.27"
FORWDUDP[1]="902"
FORWDTCP[1]="902"
#u.U sollen beim forwarden auf einen anderen server auch die Port Nummern
#geaendert werden. Dann ist pro Server/Port paar ein Eintrag notwendig.
DSTSERVER[0]="192.168.66.54"
FWDSERVICE[0]="8080;tcp;22 8080;udp;22"
#Wird auf dem localen System ein FTP-Server betrieben, so muss ein Switchen
#der Verbindung möglich sein. Dieses Switchen wird auf Device Basis
#freigeschalten - jedes in ALLOWEXTSWIN enthaltene Interface erlaubt
#den für den ftp betrieb notwendigen Switch der Portnummern.
#ALLOWDEVICESWPORT="eth1 ppp0"
#Mit der Variable LOCALUSESERVICE wird eingestellt welche Dienste der
#router selber aus dem Internet benutzen darf.
LOCALUSEUDP="22,110"
LOCALUSETCP="22,25,80,110"
#Die Verwendung des NTP Dienstes braucht eine besondere Behandlung, da hier
#Client und Server den NTP Port (123) verwenden. (Normal Client >1024)
#Soll eine Zeitsynchronisation mit einem NTP Server vom Firewallrechner
#aus stattfinden, so muss NTPSYNC auf "yes" gesetzt werden.
#NTPSYNC="192.168.66.48"
#Gleiches wie fuer NTP gild auch fuer die syslog dienste. soll der Firewall
#rechner auch loghost sein, muss LOCSYSLOG auf "yes" gesetzt werden.
#LOCSYSLOG="192.168.66.49"
#Und wenn der Router einen Syslog server verwenden soll, muss das natuerlich
#genauso spezial behandelt werden
USESYSLOG="192.168.66.49"
#dhcp sendet auch von untypischen ports. wenn der router auch
#dhcprelay spielt ist daher eine sonderbehandlung fuer die kommunikation
#mit dem dhcpserver noetig.
#DHCPSERVER="192.168.66.49"
#Das Advanced Routing des Linux Kernels (>2.2.x) kann mehrere Routingtabellen
#verwalten. Normalerweise wird die Default Tabel für das Routing Verwendet.
#Basierend auf Verschiedenen Regeln können jedoch auch anderen Routingtabellen
#verwendet werden. Eine dieser Regeln wertet Firewall Markierungen aus,
#und kann entsprechend dem Markierungswert routingtabellen verwenden.
#die MonsumFirewall erlaubt es EIN Netz derartig für das advanced routing
#zu markieren. Dieses Feature aktiviert, wenn MARK auf "yes" gesetzt wird.
#MARKNET muss dann die Netzwerk informationen (Netzadresse/Shortmask)
#beinhalten. MARKVALUE den Wert, mit dem Markiert werden soll (Integer Zahl)
#MARK="no"
#MARKNET="62.112.132.240/28"
#MARKVALUE="3"
#Wird die Mark Option Verwendet (z.B. für Statische Adressen in Verbindung mit
#einem Tunnel - wobei für den Tunnel traffic gebühren entstehen) so sollen
#die Statischen Adressen in der Regel per Defaultroute "TUNNELENDE" weiter
#geleitet werden. Hier ist u.U. eine Firewall unerwünscht (es muss sich der
#Rechner am anderen Ende um die Sicherheit kümmern!)
#ALLOWNET bestimmt das Netzwerk, welches ohne weitere Kontrolle über $TUNDEV
#geleitet wird.
#ALLOWNET="62.112.132.240/28"
#TUNDEV="tun1"

40
init/genpkg Normal file
View File

@ -0,0 +1,40 @@
#!/bin/bash
#genpkg script für iptables
#(c) Rainmaker MultiMedia OHG
#
#$Author$
#$Date$
#$Revision$
#
#$Log$
#Revision 1.4 2002/10/14 12:38:25 kueller
#Outwall Script ist mit dem neuen Firewall script überflüssig geworden
#
#Revision 1.3 2002/02/13 13:39:11 hkueller
#Erzeugen er links fuer outwall script
#
#Revision 1.2 2001/10/17 08:24:16 kueller
#Rechtekorrektur für init script
#
#Revision 1.1.1.1 2001/09/23 17:40:02 kueller
#AddOns für iptables
#
#
if [ -d /var/install/sysvinit* ]; then
WDIR=`pwd`
cd etc/init.d
chmod 755 firewall
mkdir rc{0,1,2,3,4,5,6}.d
for i in 0 6; do
cd rc$i.d
ln -s ../firewall K75firewall
cd ..
done
for i in 1 2 3 4 5; do
cd rc$i.d
ln -s ../firewall S12firewall
cd ..
done
cd $WDIR
fi