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:
commit
7345882d8a
1226
etc/init.d/.firewallfunc
Executable file
1226
etc/init.d/.firewallfunc
Executable file
File diff suppressed because it is too large
Load Diff
461
etc/init.d/firewall
Normal file
461
etc/init.d/firewall
Normal 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
20
etc/init/iptables.conf
Normal 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
|
266
etc/sysconfig/templates/firewall
Normal file
266
etc/sysconfig/templates/firewall
Normal 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
40
init/genpkg
Normal 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
|
Loading…
Reference in New Issue
Block a user