Die Beispiel-Scripts
Keywords: Buch

> Nächste Seite: Protokollbeschreibungen Aufwärts: Crashkurs Firewallaufbau unter Linux Vorherige Seite: Wichtige Portnummern Inhalt
> Unterabschnitte
> - Das erste Firewallscript
> - Das Bastion Firewallscript
> - Das Choke Firewallscript

> #
> Die Beispiel-Scripts

> # Das erste Firewallscript

>       # Konstantendefinition
>       EXTERNAL_INTERFACE=eth0        # Das fremde Netz
>       LOOPBACK_INTERFACE=lo          # Local Loopback
>       IPADDR=192.168.100.1           # Eigene Adresse
>       ANYWHERE=any/0                 # Jede IP-Adresse
>       MY_ISP=123.45.67.89/16         # Der Bereich meines Providers
>       LOOPBACK=127.0.0.0/8           # Loopback-Adressbereich
>       CLASS_A=10.0.0.0/8             # Reservierter Bereich Klasse A
>       CLASS_B=172.16.0.0/12          # Reservierter Bereich Klasse B
>       CLASS_C=192.168.0.0/16         # Reservierter Bereich Klasse C
>       CLASS_D=224.0.0.0/4            # Komplette Klasse D
>       CLASS_E=240.0.0.0/5            # Komplette Klasse E
>       BROADCAST_SRC=0.0.0.0          # Broadcast Absender
>       BROADCAST_DEST=255.255.255.255 # Broadcast Empfänger
>       PRIVPORTS=0:1023               # Privilegierte Portnummern
>       UNPRIVPORTS=1024:65535         # Unprivilegierte Portnummern

>       # Alle bestehenden Regeln löschen
>       ipchains -F

>       # Voreingestellte Policies setzen
>       ipchains -P input    DENY
>       ipchains -P output   REJECT
>       ipchains -P forward  REJECT

>       # Loopback ohne Einschränkungen
>       ipchains -A input  -i $LOOPBACK_INTERFACE -j ACCEPT
>       ipchains -A output -i $LOOPBACK_INTERFACE -j ACCEPT

>       # SYN_COOKIES aktivieren
>       echo 1 > /proc/sys/net/ipv4/tcp_syncookies

>       # SOURCE ADDRESS VERIFICATION aktivieren
>       for i in /proc/sys/net/ipv4/conf/*/rp_filter
>       do
>         echo 1 > $i
>       done

>       # Pakete ablehnen, die vorgeben von der eigenen Adresse zu stammen
>       ipchains -A input -i $EXTERNAL_INTERFACE -s $IPADDR -j DENY -l

>       # Reservierte A-Klasse Adressen ablehnen
>       ipchains -A input -i $EXTERNAL_INTERFACE -s $CLASS_A -j DENY
>       ipchains -A input -i $EXTERNAL_INTERFACE -d $CLASS_A -j DENY
>       ipchains -A output -i $EXTERNAL_INTERFACE -s $CLASS_A -j DENY
>       ipchains -A output -i $EXTERNAL_INTERFACE -d $CLASS_A -j DENY

>       # Reservierte B-Klasse Adressen ablehnen
>       ipchains -A input -i $EXTERNAL_INTERFACE -s $CLASS_B -j DENY
>       ipchains -A input -i $EXTERNAL_INTERFACE -d $CLASS_B -j DENY
>       ipchains -A output -i $EXTERNAL_INTERFACE -s $CLASS_B -j DENY
>       ipchains -A output -i $EXTERNAL_INTERFACE -d $CLASS_B -j DENY

>       # Reservierte C-Klasse Adressen ablehnen
>       ipchains -A input -i $EXTERNAL_INTERFACE -s $CLASS_C -j DENY
>       ipchains -A input -i $EXTERNAL_INTERFACE -d $CLASS_C -j DENY
>       ipchains -A output -i $EXTERNAL_INTERFACE -s $CLASS_C -j DENY
>       ipchains -A output -i $EXTERNAL_INTERFACE -d $CLASS_C -j DENY

>       # Pakete mit Loopback als Absender verwerfen
>       ipchains -A input -i $EXTERNAL_INTERFACE -s $LOOPBACK -j DENY
>       ipchains -A output -i $EXTERNAL_INTERFACE -s $LOOPBACK -j DENY

>       # Pakete mit illegalen Broadcast Adressen verwerfen
>       ipchains -A input -i $EXTERNAL_INTERFACE -s $BROADCAST_DEST -j DENY
>       ipchains -A input -i $EXTERNAL_INTERFACE -d $BROADCAST_SRC -j DENY

>       # Pakete mit Klasse-D Adresse als Absender verwerfen
>       ipchains -A input -i $EXTERNAL_INTERFACE -s $CLASS_D -j DENY
>       ipchains -A output -i $EXTERNAL_INTERFACE -s $CLASS_D -j

>       # Klasse-E Adressen ablehnen
>       ipchains -A input -i $EXTERNAL_INTERFACE -s $CLASS_E -j DENY

>       # Von der IANA reservierte Adressen verwerfen
>       ipchains -A input -i $EXTERNAL_INTERFACE -s 1.0.0.0/8 -j DENY
>       ipchains -A input -i $EXTERNAL_INTERFACE -s 2.0.0.0/8 -j DENY
>       ipchains -A input -i $EXTERNAL_INTERFACE -s 5.0.0.0/8 -j DENY
>       ipchains -A input -i $EXTERNAL_INTERFACE -s 7.0.0.0/8 -j DENY
>       ipchains -A input -i $EXTERNAL_INTERFACE -s 23.0.0.0/8 -j DENY
>       ipchains -A input -i $EXTERNAL_INTERFACE -s 27.0.0.0/8 -j DENY
>       ipchains -A input -i $EXTERNAL_INTERFACE -s 31.0.0.0/8 -j DENY
>       ipchains -A input -i $EXTERNAL_INTERFACE -s 37.0.0.0/8 -j DENY
>       ipchains -A input -i $EXTERNAL_INTERFACE -s 39.0.0.0/8 -j DENY
>       ipchains -A input -i $EXTERNAL_INTERFACE -s 41.0.0.0/8 -j DENY
>       ipchains -A input -i $EXTERNAL_INTERFACE -s 42.0.0.0/8 -j DENY
>       ipchains -A input -i $EXTERNAL_INTERFACE -s 58.0.0.0/7 -j DENY
>       ipchains -A input -i $EXTERNAL_INTERFACE -s 60.0.0.0/8 -j DENY
>       # 65 entspricht 01000001 - also würde die Maske /3 leider die 64
>       # mit ansprechen. Wir müssen daher 65-79 einzeln angeben
>       ipchains -A input -i $EXTERNAL_INTERFACE -s 65.0.0.0/8 -j DENY
>       ipchains -A input -i $EXTERNAL_INTERFACE -s 66.0.0.0/8 -j DENY
>       ipchains -A input -i $EXTERNAL_INTERFACE -s 67.0.0.0/8 -j DENY
>       ipchains -A input -i $EXTERNAL_INTERFACE -s 68.0.0.0/8 -j DENY
>       ipchains -A input -i $EXTERNAL_INTERFACE -s 69.0.0.0/8 -j DENY
>       ipchains -A input -i $EXTERNAL_INTERFACE -s 70.0.0.0/8 -j DENY
>       ipchains -A input -i $EXTERNAL_INTERFACE -s 71.0.0.0/8 -j DENY
>       ipchains -A input -i $EXTERNAL_INTERFACE -s 72.0.0.0/8 -j DENY
>       ipchains -A input -i $EXTERNAL_INTERFACE -s 73.0.0.0/8 -j DENY
>       ipchains -A input -i $EXTERNAL_INTERFACE -s 74.0.0.0/8 -j DENY
>       ipchains -A input -i $EXTERNAL_INTERFACE -s 75.0.0.0/8 -j DENY
>       ipchains -A input -i $EXTERNAL_INTERFACE -s 76.0.0.0/8 -j DENY
>       ipchains -A input -i $EXTERNAL_INTERFACE -s 77.0.0.0/8 -j DENY
>       ipchains -A input -i $EXTERNAL_INTERFACE -s 78.0.0.0/8 -j DENY
>       ipchains -A input -i $EXTERNAL_INTERFACE -s 79.0.0.0/8 -j DENY
>       # 80-95 lässt sich mit der Maske /4 ansprechen
>       ipchains -A input -i $EXTERNAL_INTERFACE -s 80.0.0.0/4 -j DENY
>       # 96-111 lässt sich mit der Maske /4 ansprechen
>       ipchains -A input -i $EXTERNAL_INTERFACE -s 96.0.0.0/4 -j DENY
>       # 126 entspricht 01111110 - die Maske /3 würde 127 beinhalten
>       # daher müssen wir 112 - 126 einzeln angeben
>       ipchains -A input -i $EXTERNAL_INTERFACE -s 112.0.0.0/8 -j DENY
>       ipchains -A input -i $EXTERNAL_INTERFACE -s 113.0.0.0/8 -j DENY
>       ipchains -A input -i $EXTERNAL_INTERFACE -s 114.0.0.0/8 -j DENY
>       ipchains -A input -i $EXTERNAL_INTERFACE -s 115.0.0.0/8 -j DENY
>       ipchains -A input -i $EXTERNAL_INTERFACE -s 116.0.0.0/8 -j DENY
>       ipchains -A input -i $EXTERNAL_INTERFACE -s 117.0.0.0/8 -j DENY
>       ipchains -A input -i $EXTERNAL_INTERFACE -s 118.0.0.0/8 -j DENY
>       ipchains -A input -i $EXTERNAL_INTERFACE -s 119.0.0.0/8 -j DENY
>       ipchains -A input -i $EXTERNAL_INTERFACE -s 120.0.0.0/8 -j DENY
>       ipchains -A input -i $EXTERNAL_INTERFACE -s 121.0.0.0/8 -j DENY
>       ipchains -A input -i $EXTERNAL_INTERFACE -s 122.0.0.0/8 -j DENY
>       ipchains -A input -i $EXTERNAL_INTERFACE -s 123.0.0.0/8 -j DENY
>       ipchains -A input -i $EXTERNAL_INTERFACE -s 124.0.0.0/8 -j DENY
>       ipchains -A input -i $EXTERNAL_INTERFACE -s 125.0.0.0/8 -j DENY
>       ipchains -A input -i $EXTERNAL_INTERFACE -s 126.0.0.0/8 -j DENY
>       # 217-219 einzeln
>       ipchains -A input -i $EXTERNAL_INTERFACE -s 217.0.0.0/8 -j DENY
>       ipchains -A input -i $EXTERNAL_INTERFACE -s 218.0.0.0/8 -j DENY
>       ipchains -A input -i $EXTERNAL_INTERFACE -s 219.0.0.0/8 -j DENY
>       # 220-223 -> /6
>       ipchains -A input -i $EXTERNAL_INTERFACE -s 220.0.0.0/6 -j DENY

>       # ICMP Typ 4 erlauben
>       ipchains -A input -i $EXTERNAL_INTERFACE -p icmp\
>                -s $ANYWHERE 4 -d $IPADDR -j ACCEPT

>       ipchains -A output -i $EXTERNAL_INTERFACE -p icmp\
>                -s $IPADDR 4 -d $ANYWHERE -j ACCEPT

>       # ICMP Typ 12 erlauben
>       ipchains -A input -i $EXTERNAL_INTERFACE -p icmp\
>                -s $ANYWHERE 12 -d $IPADDR -j ACCEPT

>       ipchains -A output -i $EXTERNAL_INTERFACE -p icmp\
>                -s $IPADDR 12 -d $ANYWHERE -j ACCEPT

>       # ICMP-Typ 3 für Providerrechner erlauben
>       ipchains -A input -i $EXTERNAL_INTERFACE -p icmp\
>                -s $ANYWHERE 3 -d $IPADDR -j ACCEPT

>       ipchains -A output -i $EXTERNAL_INTERFACE -p icmp\
>                -s $IPADDR 3 -d $MY_ISP -j ACCEPT

>       # ICMP-Typ 3 Subtyp fragmentation-needed für alle freigeben
>       ipchains -A output -i $EXTERNAL_INTERFACE -p icmp\
>                -s $IPADDR fragmentation-needed -d $ANYWHERE -j ACCEPT

>       # ICMP-Typ 11 erlauben (ausgehend nur an unseren Provider)
>       ipchains -A input -i $EXTERNAL_INTERFACE -p icmp\
>                -s $ANYWHERE 11 -d $IPADDR -j ACCEPT

>       ipchains -A output -i $EXTERNAL_INTERFACE -p icmp\
>                -s $IPADDR 11 -d $MY_ISP -j ACCEPT

>       # Ausgehendes Ping erlauben
>       ipchain -A output -i $EXTERNAL_INTERFACE -p icmp\
>               -s $IPADDR 8 -d $ANYWHERE -j ACCEPT

>       ipchain -A input -i $EXTERNAL_INTERFACE -p icmp\
>               -s $ANYWHERE 0 -d $IPADDR -j ACCEPT

>       # Ankommendes Ping nur für Provider erlauben
>       ipchain -A input -i $EXTERNAL_INTERFACE -p icmp\
>               -s $MYISP 8 -d $IPADDR -j ACCEPT

>       ipchain -A output -i $EXTERNAL_INTERFACE -p icmp\
>               -s $IPADDR 0 -d $MYISP -j ACCEPT

>       # Open Window Verbindungsaufbau sperren
>       ipchains -A output -i $EXTERNAL_INTERFACE -p tcp -y\
>                -s $IPADDR -d $ANYWHERE 2000 -j REJECT

>       # X11 Aufbau zu einem fremden Server verbieten
>       ipchains -A output -i $EXTERNAL_INTERFACE -p tcp -y\
>                -s $IPADDR -d $ANYWHERE 6000:6063 -j REJECT

>       # X11 Aufbau von außen zu einem unserer Server verbieten
>       ipchains -A input -i $EXTERNAL_INTERFACE -p tcp -y\
>                -d $IPADDR 6000:6063 -j DENY -l

>       # NFS (2049) über UDP sperren
>       ipchains -A input -i $EXTERNAL_INTERFACE -p udp\
>                -d $IPADDR 2049 -j DENY -l

>       # NFS (2049) über TCP sperren
>       ipchains -A input -i $EXTERNAL_INTERFACE -p tcp -y\
>                -d $IPADDR 2049 -j DENY -l

>       ipchains -A output -i $EXTERNAL_INTERFACE -p tcp -y\
>                -d $ANYWHERE 2049 -j DENY -l

>       # DNS IP Adresse:
>       NAMESERVER=xx.xx.xx.xx

>       # UDP-Nameserverzugriff
>       ipchains -A output -i $EXTERNAL_INTERFACE -p udp\
>                -s $IPADDR $UNPRIVPORTS \
>                -d $NAMESERVER 53 -j ACCEPT

>       ipchains -A input -i $EXTERNAL_INTERFACE -p udp\
>                -s $NAMESERVER 53 \
>                -d $IPADDR $UNPRIVPORTS -j ACCEPT

>       # TCP-Nameserverzugriff
>       ipchains -A output -i $EXTERNAL_INTERFACE -p tcp\
>                -s $IPADDR $UNPRIVPORTS \
>                -d $NAMESERVER 53 -j ACCEPT

>       ipchains -A input -i $EXTERNAL_INTERFACE -p tcp ! -y\
>                -s $NAMESERVER 53 \
>                -d $IPADDR $UNPRIVPORTS -j ACCEPT

>       #DNS Forwarding (Server zu Server)
>       ipchains -A output -i $EXTERNAL_INTERFACE -p udp\
>                -s $IPADDR 53 \
>                -d $NAMESERVER 53 -j ACCEPT

>       ipchains -A input -i $EXTERNAL_INTERFACE -p udp\
>                -s $NAMESERVER 53 \
>                -d $IPADDR 53 -j ACCEPT

>       # DNS Zugriff fremder Clients
>       MYDNSCLIENTS=ww.xx.yy.zz/mm

>       ipchains -A input -i $EXTERNAL_INTERFACE -p udp\
>                -s $MYDNSCLIENTS $UNPRIVPORTS\
>                -d $IPADDR 53 -j ACCEPT

>       ipchains -A output -i $EXTERNAL_INTERFACE -p udp\
>                -s $IPADDR 53\
>                -d $MYDNSCLIENTS $UNPRIVPORTS -j ACCEPT

>       # DNS Forwarding für fremde Clients
>       ipchains -A output -i $EXTERNAL_INTERFACE -p udp\
>                -s $IPADDR 53 \
>                -d $MYDNSCLIENTS 53 -j ACCEPT

>       ipchains -A input -i $EXTERNAL_INTERFACE -p udp\
>                -s $MYDNSCLIENTS 53 \
>                -d $IPADDR 53 -j ACCEPT

>       # DNS Zone-Transfer fremder Clients
>       MYDNSZONECLIENTS=ww.xx.yy.zz/mm

>       ipchains -A input -i $EXTERNAL_INTERFACE -p tcp\
>                -s $MYDNSZONECLIENTS $UNPRIVPORTS\
>                -d $IPADDR 53 -j ACCEPT

>       ipchains -A output -i $EXTERNAL_INTERFACE -p tcp ! -y\
>                -s $IPADDR 53\
>                -d $MYDNSZONECLIENTS $UNPRIVPORTS -j ACCEPT

>       # abgehende auth-Anfragen
>       ipchains -A output -i $EXTERNAL_INTERFACE -p tcp\
>                -s $IPADDR $UNPRIVPORTS\
>                -d $ANYWHERE 113 -j ACCEPT

>       ipchains -A input -i $EXTERNAL_INTERFACE -p tcp ! -y\
>                -s $ANYWHERE 113 \
>                -d $IPADDR $UNPRIVPORTS -j ACCEPT

>       # ankommende auth-Anfragen
>       ipchains -A input -i $EXTERNAL_INTERFACE -p tcp\
>                -s $ANYWHERE $UNPRIVPORTS\
>                -d $IPADDR 113 -j ACCEPT

>       ipchains -A output -i $EXTERNAL_INTERFACE -p tcp ! -y\
>                -s $IPADDR 113 \
>                -d $ANYWHERE $UNPRIVPORTS -j ACCEPT

>       # oder statt der letzten zwei Befehle
>       # ankommende auth-Anfragen ablehnen
>       # ipchains -A input -i $EXTERNAL_INTERFACE -p tcp\
>       #          -s $ANYWHERE\
>       #          -d $IPADDR 113 -j REJECT

> # Das Bastion Firewallscript

>       # Konstantendefinition
>       EXTERNAL_INTERFACE=eth0        # Das Interface ins Internet
>       IPADDR=123.45.67.89            # Adresse des Internetzugangs
>       MY_ISP=123.45.67.90/16         # Der Bereich meines Providers

>       BASTION_DMZ_INTERFACE=eth1     # internes Interface
>       BASTION_DMZ_IPADDR=192.168.1.1 # Adresse dazu

>       LOOPBACK_INTERFACE=lo          # Local Loopback
>       LOOPBACK=127.0.0.0/8           # Loopback-Adressbereich

>       CHOKE_DMZ_IPADDR=192.168.1.2   # ext. Interface der Choke
>       DMZ_ADDRESSES=192.168.1.0/24   # IP-Bereich der DMZ
>       DMZ_BROADCAST=192.168.1.255    # Broadcastadresse DMZ
>       ANYWHERE=any/0                 # Jede IP-Adresse

>       CLASS_A=10.0.0.0/8             # Reservierter Bereich Klasse A
>       CLASS_B=172.16.0.0/12          # Reservierter Bereich Klasse B
>       CLASS_C=192.168.0.0/16         # Reservierter Bereich Klasse C
>       CLASS_D=224.0.0.0/4            # Komplette Klasse D
>       CLASS_E=240.0.0.0/5            # Komplette Klasse E
>       BROADCAST_SRC=0.0.0.0          # Broadcast Absender
>       BROADCAST_DEST=255.255.255.255 # Broadcast Empfänger
>       PRIVPORTS=0:1023               # Privilegierte Portnummern
>       UNPRIVPORTS=1024:65535         # Unprivilegierte Portnummern

>       # Alle bestehenden Regeln löschen
>       ipchains -F

>       # Voreingestellte Policies setzen
>       ipchains -P input    DENY
>       ipchains -P output   REJECT
>       ipchains -P forward  REJECT

>       # Loopback ohne Einschränkungen
>       ipchains -A input  -i $LOOPBACK_INTERFACE -j ACCEPT
>       ipchains -A output -i $LOOPBACK_INTERFACE -j ACCEPT

>       # SYN_COOKIES aktivieren
>       echo 1 > /proc/sys/net/ipv4/tcp_syncookies

>       # SOURCE ADDRESS VERIFICATION aktivieren
>       for i in /proc/sys/net/ipv4/conf/*/rp_filter
>       do
>         echo 1 > $i
>       done

>       # Pakete ablehnen, die vorgeben von der eigenen Adresse zu stammen
>       ipchains -A input -i $EXTERNAL_INTERFACE \
>                -s $IPADDR -j DENY -l
>       ipchains -A input -i $BASTION_DMZ_INTERFACE \
>                -s $BASTION_DMZ_IPADDR -j DENY -l

>       # Reservierte A-Klasse Adressen ablehnen
>       ipchains -A input -i $EXTERNAL_INTERFACE -s $CLASS_A -j DENY
>       ipchains -A input -i $EXTERNAL_INTERFACE -d $CLASS_A -j DENY
>       ipchains -A output -i $EXTERNAL_INTERFACE -s $CLASS_A -j DENY
>       ipchains -A output -i $EXTERNAL_INTERFACE -d $CLASS_A -j DENY

>       # Reservierte B-Klasse Adressen ablehnen
>       ipchains -A input -i $EXTERNAL_INTERFACE -s $CLASS_B -j DENY
>       ipchains -A input -i $EXTERNAL_INTERFACE -d $CLASS_B -j DENY
>       ipchains -A output -i $EXTERNAL_INTERFACE -s $CLASS_B -j DENY
>       ipchains -A output -i $EXTERNAL_INTERFACE -d $CLASS_B -j DENY

>       # Reservierte C-Klasse Adressen ablehnen
>       ipchains -A input -i $EXTERNAL_INTERFACE -s $CLASS_C -j DENY
>       ipchains -A input -i $EXTERNAL_INTERFACE -d $CLASS_C -j DENY
>       ipchains -A output -i $EXTERNAL_INTERFACE -s $CLASS_C -j DENY
>       ipchains -A output -i $EXTERNAL_INTERFACE -d $CLASS_C -j DENY

>       # Pakete mit Loopback als Absender verwerfen
>       ipchains -A input -i $EXTERNAL_INTERFACE -s $LOOPBACK -j DENY
>       ipchains -A output -i $EXTERNAL_INTERFACE -s $LOOPBACK -j DENY

>       # Pakete mit illegalen Broadcast Adressen verwerfen
>       ipchains -A input -i $EXTERNAL_INTERFACE -s $BROADCAST_DEST -j DENY
>       ipchains -A input -i $EXTERNAL_INTERFACE -d $BROADCAST_SRC -j DENY

>       # Pakete mit Klasse-D Adresse als Absender verwerfen
>       ipchains -A input -i $EXTERNAL_INTERFACE -s $CLASS_D -j DENY
>       ipchains -A output -i $EXTERNAL_INTERFACE -s $CLASS_D -j

>       # Klasse-E Adressen ablehnen
>       ipchains -A input -i $EXTERNAL_INTERFACE -s $CLASS_E -j DENY

>       # Von der IANA reservierte Adressen verwerfen
>       ipchains -A input -i $EXTERNAL_INTERFACE -s 1.0.0.0/8 -j DENY
>       ipchains -A input -i $EXTERNAL_INTERFACE -s 2.0.0.0/8 -j DENY
>       ipchains -A input -i $EXTERNAL_INTERFACE -s 5.0.0.0/8 -j DENY
>       ipchains -A input -i $EXTERNAL_INTERFACE -s 7.0.0.0/8 -j DENY
>       ipchains -A input -i $EXTERNAL_INTERFACE -s 23.0.0.0/8 -j DENY
>       ipchains -A input -i $EXTERNAL_INTERFACE -s 27.0.0.0/8 -j DENY
>       ipchains -A input -i $EXTERNAL_INTERFACE -s 31.0.0.0/8 -j DENY
>       ipchains -A input -i $EXTERNAL_INTERFACE -s 37.0.0.0/8 -j DENY
>       ipchains -A input -i $EXTERNAL_INTERFACE -s 39.0.0.0/8 -j DENY
>       ipchains -A input -i $EXTERNAL_INTERFACE -s 41.0.0.0/8 -j DENY
>       ipchains -A input -i $EXTERNAL_INTERFACE -s 42.0.0.0/8 -j DENY
>       ipchains -A input -i $EXTERNAL_INTERFACE -s 58.0.0.0/7 -j DENY
>       ipchains -A input -i $EXTERNAL_INTERFACE -s 60.0.0.0/8 -j DENY
>       # 65 entspricht 01000001 - also würde die Maske /3 leider die 64
>       # mit ansprechen. Wir müssen daher 65-79 einzeln angeben
>       ipchains -A input -i $EXTERNAL_INTERFACE -s 65.0.0.0/8 -j DENY
>       ipchains -A input -i $EXTERNAL_INTERFACE -s 66.0.0.0/8 -j DENY
>       ipchains -A input -i $EXTERNAL_INTERFACE -s 67.0.0.0/8 -j DENY
>       ipchains -A input -i $EXTERNAL_INTERFACE -s 68.0.0.0/8 -j DENY
>       ipchains -A input -i $EXTERNAL_INTERFACE -s 69.0.0.0/8 -j DENY
>       ipchains -A input -i $EXTERNAL_INTERFACE -s 70.0.0.0/8 -j DENY
>       ipchains -A input -i $EXTERNAL_INTERFACE -s 71.0.0.0/8 -j DENY
>       ipchains -A input -i $EXTERNAL_INTERFACE -s 72.0.0.0/8 -j DENY
>       ipchains -A input -i $EXTERNAL_INTERFACE -s 73.0.0.0/8 -j DENY
>       ipchains -A input -i $EXTERNAL_INTERFACE -s 74.0.0.0/8 -j DENY
>       ipchains -A input -i $EXTERNAL_INTERFACE -s 75.0.0.0/8 -j DENY
>       ipchains -A input -i $EXTERNAL_INTERFACE -s 76.0.0.0/8 -j DENY
>       ipchains -A input -i $EXTERNAL_INTERFACE -s 77.0.0.0/8 -j DENY
>       ipchains -A input -i $EXTERNAL_INTERFACE -s 78.0.0.0/8 -j DENY
>       ipchains -A input -i $EXTERNAL_INTERFACE -s 79.0.0.0/8 -j DENY
>       # 80-95 lässt sich mit der Maske /4 ansprechen
>       ipchains -A input -i $EXTERNAL_INTERFACE -s 80.0.0.0/4 -j DENY
>       # 96-111 lässt sich mit der Maske /4 ansprechen
>       ipchains -A input -i $EXTERNAL_INTERFACE -s 96.0.0.0/4 -j DENY
>       # 126 entspricht 01111110 - die Maske /3 würde 127 beinhalten
>       # daher müssen wir 112 - 126 einzeln angeben
>       ipchains -A input -i $EXTERNAL_INTERFACE -s 112.0.0.0/8 -j DENY
>       ipchains -A input -i $EXTERNAL_INTERFACE -s 113.0.0.0/8 -j DENY
>       ipchains -A input -i $EXTERNAL_INTERFACE -s 114.0.0.0/8 -j DENY
>       ipchains -A input -i $EXTERNAL_INTERFACE -s 115.0.0.0/8 -j DENY
>       ipchains -A input -i $EXTERNAL_INTERFACE -s 116.0.0.0/8 -j DENY
>       ipchains -A input -i $EXTERNAL_INTERFACE -s 117.0.0.0/8 -j DENY
>       ipchains -A input -i $EXTERNAL_INTERFACE -s 118.0.0.0/8 -j DENY
>       ipchains -A input -i $EXTERNAL_INTERFACE -s 119.0.0.0/8 -j DENY
>       ipchains -A input -i $EXTERNAL_INTERFACE -s 120.0.0.0/8 -j DENY
>       ipchains -A input -i $EXTERNAL_INTERFACE -s 121.0.0.0/8 -j DENY
>       ipchains -A input -i $EXTERNAL_INTERFACE -s 122.0.0.0/8 -j DENY
>       ipchains -A input -i $EXTERNAL_INTERFACE -s 123.0.0.0/8 -j DENY
>       ipchains -A input -i $EXTERNAL_INTERFACE -s 124.0.0.0/8 -j DENY
>       ipchains -A input -i $EXTERNAL_INTERFACE -s 125.0.0.0/8 -j DENY
>       ipchains -A input -i $EXTERNAL_INTERFACE -s 126.0.0.0/8 -j DENY
>       # 217-219 einzeln
>       ipchains -A input -i $EXTERNAL_INTERFACE -s 217.0.0.0/8 -j DENY
>       ipchains -A input -i $EXTERNAL_INTERFACE -s 218.0.0.0/8 -j DENY
>       ipchains -A input -i $EXTERNAL_INTERFACE -s 219.0.0.0/8 -j DENY
>       # 220-223 -> /6
>       ipchains -A input -i $EXTERNAL_INTERFACE -s 220.0.0.0/6 -j DENY

>       # ICMP Regeln nach außen
>       # ICMP Typ 4 erlauben
>       ipchains -A input -i $EXTERNAL_INTERFACE -p icmp\
>                -s $ANYWHERE 4 -d $IPADDR -j ACCEPT

>       ipchains -A output -i $EXTERNAL_INTERFACE -p icmp\
>                -s $IPADDR 4 -d $ANYWHERE -j ACCEPT

>       # ICMP Typ 12 erlauben
>       ipchains -A input -i $EXTERNAL_INTERFACE -p icmp\
>                -s $ANYWHERE 12 -d $IPADDR -j ACCEPT

>       ipchains -A output -i $EXTERNAL_INTERFACE -p icmp\
>                -s $IPADDR 12 -d $ANYWHERE -j ACCEPT

>       # ICMP-Typ 3 für Providerrechner erlauben
>       ipchains -A input -i $EXTERNAL_INTERFACE -p icmp\
>                -s $ANYWHERE 3 -d $IPADDR -j ACCEPT

>       ipchains -A output -i $EXTERNAL_INTERFACE -p icmp\
>                -s $IPADDR 3 -d $MY_ISP -j ACCEPT

>       # ICMP-Typ 3 Subtyp fragmentation-needed für alle freigeben
>       ipchains -A output -i $EXTERNAL_INTERFACE -p icmp\
>                -s $IPADDR fragmentation-needed -d $ANYWHERE -j ACCEPT

>       # ICMP-Typ 11 erlauben (ausgehend nur an unseren Provider)
>       ipchains -A input -i $EXTERNAL_INTERFACE -p icmp\
>                -s $ANYWHERE 11 -d $IPADDR -j ACCEPT

>       ipchains -A output -i $EXTERNAL_INTERFACE -p icmp\
>                -s $IPADDR 11 -d $MY_ISP -j ACCEPT

>       # Ausgehendes Ping erlauben
>       ipchain -A output -i $EXTERNAL_INTERFACE -p icmp\
>               -s $IPADDR 8 -d $ANYWHERE -j ACCEPT

>       ipchain -A input -i $EXTERNAL_INTERFACE -p icmp\
>               -s $ANYWHERE 0 -d $IPADDR -j ACCEPT

>       # Ankommendes Ping nur für Provider erlauben
>       ipchain -A input -i $EXTERNAL_INTERFACE -p icmp\
>               -s $MYISP 8 -d $IPADDR -j ACCEPT

>       ipchain -A output -i $EXTERNAL_INTERFACE -p icmp\
>               -s $IPADDR 0 -d $MYISP -j ACCEPT

>       # source-quench zur DMZ
>       ipchains -A output -i $BASTION_DMZ_INTERFACE -p icmp\
>                -s $BASTION_DMZ_IPADDR 4 -d $DMZ_ADDRESSES -j ACCEPT
>       ipchains -A input -i $BASTION_DMZ_INTERFACE -p icmp\
>                -s $DMZ_ADDRESSES 4 -d $BASTION_DMZ_IPADDR -j ACCEPT

>       # parameter-problem zur DMZ
>       ipchains -A output -i $BASTION_DMZ_INTERFACE -p icmp\
>                -s $ANYWHERE 12 -d $DMZ_ADDRESSES -j ACCEPT
>       ipchains -A input -i $BASTION_DMZ_INTERFACE -p icmp\
>                -s $DMZ_ADDRESSES 12 -d $ANYWHERE -j ACCEPT

>       # destination-unreachable zur DMZ
>       ipchains -A output -i $BASTION_DMZ_INTERFACE -p icmp\
>                -s $ANYWHERE 3 -d $DMZ_ADDRESSES -j ACCEPT
>       ipchains -A input -i $BASTION_DMZ_INTERFACE -p icmp\
>                -s $DMZ_ADDRESSES 3 -d $ANYWHERE -j ACCEPT

>       # time-exceeded zur DMZ
>       ipchains -A output -i $BASTION_DMZ_INTERFACE -p icmp\
>                -s $BASTION_DMZ_IPADDR 11 -d $DMZ_ADDRESSES -j ACCEPT
>       ipchains -A input -i $BASTION_DMZ_INTERFACE -p icmp\
>                -s $DMZ_ADDRESSES 11 -d $BASTION_DMZ_IPADDR -j ACCEPT

>       # Ausgehendes Ping aus der DMZ
>       ipchains -A input -i $BASTION_DMZ_INTERFACE -p icmp\
>                -s $DMZ_ADDRESSES 8 -d $ANYWHERE -j ACCEPT
>       ipchains -A output -i $BASTION_DMZ_INTERFACE -p icmp\
>                -s $ANYWHERE 0 -d $DMZ_ADDRESSES -j ACCEPT

>       # Ankommendes Ping in die DMZ
>       ipchains -A output -i $BASTION_DMZ_INTERFACE -p icmp\
>                -s $BASTION_DMZ_IPADDR 8 -d $DMZ_ADDRESSES -j ACCEPT
>       ipchains -A input -i $BASTION_DMZ_INTERFACE -p icmp\
>                -s $DMZ_ADDRESSES 0 -d $BASTION_DMZ_IPADDR -j ACCEPT

>       # Open Window Verbindungsaufbau sperren
>       ipchains -A output -i $EXTERNAL_INTERFACE -p tcp -y\
>                -s $IPADDR -d $ANYWHERE 2000 -j REJECT

>       # X11 Aufbau zu einem fremden Server verbieten
>       ipchains -A output -i $EXTERNAL_INTERFACE -p tcp -y\
>                -s $IPADDR -d $ANYWHERE 6000:6063 -j REJECT

>       # X11 Aufbau von außen zu einem unserer Server verbieten
>       ipchains -A input -i $EXTERNAL_INTERFACE -p tcp -y\
>                -d $IPADDR 6000:6063 -j DENY -l

>       # NFS (2049) über UDP sperren
>       ipchains -A input -i $EXTERNAL_INTERFACE -p udp\
>                -d $IPADDR 2049 -j DENY -l

>       # NFS (2049) über TCP sperren
>       ipchains -A input -i $EXTERNAL_INTERFACE -p tcp -y\
>                -d $IPADDR 2049 -j DENY -l

>       ipchains -A output -i $EXTERNAL_INTERFACE -p tcp -y\
>                -d $ANYWHERE 2049 -j DENY -l

>       # Der DNS-Server der Bastion akzeptiert Anfragen der Choke (UDP 53)
>       ipchains -A input -i $BASTION_DMZ_INTERFACE -p udp\
>                -s $CHOKE_DMZ_IPADDR 53\
>                -d $BASTION_DMZ_IPADDR 53 -j ACCEPT
>       ipchains -A output -i $BASTION_DMZ_INTERFACE -p udp\
>                -s $BASTION_DMZ_IPADDR 53\
>                -d $CHOKE_DMZ_IPADDR 53 -j ACCEPT

>       # DNS Anfragen der Bastion an den Server der Choke (UDP/TCP 53)
>       ipchains -A output -i $BASTION_DMZ_INTERFACE -p udp\
>                -s $BASTION_DMZ_IPADDR $UNPRIVPORTS \
>                -d $CHOKE_DMZ_IPADDR 53 -j ACCEPT
>       ipchains -A input -i $BASTION_DMZ_INTERFACE -p udp\
>                -s $CHOKE_DMZ_IPADDR 53 \
>                -d $BASTION_DMZ_IPADDR $UNPRIVPORTS -j ACCEPT
>       ipchains -A output -i $BASTION_DMZ_INTERFACE -p tcp\
>                -s $BASTION_DMZ_IPADDR $UNPRIVPORTS \
>                -d $CHOKE_DMZ_IPADDR 53 -j ACCEPT
>       ipchains -A input -i $BASTION_DMZ_INTERFACE -p tcp ! -y\
>                -s $CHOKE_DMZ_IPADDR 53 \
>                -d $BASTION_DMZ_IPADDR $UNPRIVPORTS -j ACCEPT

>       # DNS IP Adresse (Nameserver im Internet):
>       NAMESERVER=xx.xx.xx.xx

>       #DNS Forwarding (Server zu Server)
>       ipchains -A output -i $EXTERNAL_INTERFACE -p udp\
>                -s $IPADDR 53 \
>                -d $NAMESERVER 53 -j ACCEPT

>       ipchains -A input -i $EXTERNAL_INTERFACE -p udp\
>                -s $NAMESERVER 53 \
>                -d $IPADDR 53 -j ACCEPT

>       # UDP-Nameserverzugriff
>       ipchains -A output -i $EXTERNAL_INTERFACE -p udp\
>                -s $IPADDR $UNPRIVPORTS \
>                -d $ANYWHERE 53 -j ACCEPT

>       ipchains -A input -i $EXTERNAL_INTERFACE -p udp\
>                -s $ANYWHERE 53 \
>                -d $IPADDR $UNPRIVPORTS -j ACCEPT

>       # TCP-Nameserverzugriff
>       ipchains -A output -i $EXTERNAL_INTERFACE -p tcp\
>                -s $IPADDR $UNPRIVPORTS \
>                -d $ANYWHERE 53 -j ACCEPT

>       ipchains -A input -i $EXTERNAL_INTERFACE -p tcp ! -y\
>                -s $ANYWHERE 53 \
>                -d $IPADDR $UNPRIVPORTS -j ACCEPT

>       # DNS Zugriff fremder Clients

>       ipchains -A input -i $EXTERNAL_INTERFACE -p udp\
>                -s $ANYWHERE $UNPRIVPORTS\
>                -d $IPADDR 53 -j ACCEPT

>       ipchains -A output -i $EXTERNAL_INTERFACE -p udp\
>                -s $IPADDR 53\
>                -d $ANYWHERE $UNPRIVPORTS -j ACCEPT
>       ipchains -A input -i $EXTERNAL_INTERFACE -p tcp\
>                -s $ANYWHERE $UNPRIVPORTS\
>                -d $IPADDR 53 -j ACCEPT

>       ipchains -A output -i $EXTERNAL_INTERFACE -p tcp ! -y\
>                -s $IPADDR 53\
>                -d $ANYWHERE $UNPRIVPORTS -j ACCEPT

>       # abgehende auth-Anfragen ins Internet
>       ipchains -A output -i $EXTERNAL_INTERFACE -p tcp\
>                -s $IPADDR $UNPRIVPORTS\
>                -d $ANYWHERE 113 -j ACCEPT

>       ipchains -A input -i $EXTERNAL_INTERFACE -p tcp ! -y\
>                -s $ANYWHERE 113 \
>                -d $IPADDR $UNPRIVPORTS -j ACCEPT

>       # ankommende auth-Anfragen aus dem Internet
>       ipchains -A input -i $EXTERNAL_INTERFACE -p tcp\
>                -s $ANYWHERE $UNPRIVPORTS\
>                -d $IPADDR 113 -j ACCEPT

>       ipchains -A output -i $EXTERNAL_INTERFACE -p tcp ! -y\
>                -s $IPADDR 113 \
>                -d $ANYWHERE $UNPRIVPORTS -j ACCEPT

>       # Bastion als auth-Client nach innen
>       ipchains -A output -i $BASTION_DMZ_INTERFACE -p tcp \
>                -s $BASTION_DMZ_IPADDR $UNPRIVPORTS \
>                -d $DMZ_ADDRESSES 113 -j ACCEPT
>       ipchains -A input -i $BASTION_DMZ_INTERFACE -p tcp ! -y\
>                -s $DMZ_ADDRESSES 113 \
>                -d $BASTION_DMZ_IPADDR $UNPRIVPORTS -j ACCEPT

>       # Bastion als Server nach innen
>       ipchains -A input -i $BASTION_DMZ_INTERFACE -p tcp \
>                -s $DMZ_ADDRESSES $UNPRIVPORTS \
>                -d $BASTION_DMZ_IPADDR 113 -j ACCEPT
>       ipchains -A output -i $BASTION_DMZ_INTERFACE -p tcp ! -y\
>                -s $BASTION_DMZ_IPADDR 113 \
>                -d $DMZ_ADDRESSES $UNPRIVPORTS -j ACCEPT

>       # Mail über SMTP

>       # Zuerst der Name des Gateways
>       # statt einem Provider kann hier auch "any/0" stehen, um die Bastion
>       # selbst zum Mailserver zu ernennen.
>       SMTP_GATEWAY=smtp.server.provider.beispiel

>       ipchains -A output -i $EXTERNAL_INTERFACE -p tcp\
>                -s $IPADDR $UNPRIVPORTS \
>                -d $SMTP_GATEWAY 25 -j ACCEPT
>       ipchains -A output -i $EXTERNAL_INTERFACE -p tcp ! -y\
>                -s $SMTP_GATEWAY 25 \
>                -d $IPADDR $UNPRIVPORTS -j ACCEPT

>       # Bastion nimmt SMTP Anfragen aus der DMZ entgegen
>       ipchains -A input -i $BASTION_DMZ_INTERFACE -p tcp \
>                -s $DMZ_ADDRESSES $UNPRIVPORTS \
>                -d $BASTION_DMZ_IPADDR 25 -j ACCEPT
>       ipchains -A output -i $BASTION_DMZ_INTERFACE -p tcp ! -y \
>                -s $BASTION_DMZ_IPADDR 25 \
>                -d $DMZ_ADDRESSES $UNPRIVPORTS -j ACCEPT

>       # POP-Server der Bastion nimmt Pakete aus der DMZ entgegen
>       ipchains -A input -i $BASTION_DMZ_INTERFACE -p tcp \
>                -s $CHOKE_DMZ_IPADDR $UNPRIVPORTS \
>                -d $BASTION_DMZ_IPADDR 110 -j ACCEPT
>       ipchains -A output -i $BASTION_DMZ_INTERFACE -p tcp ! -y \
>                -s $BASTION_DMZ_IPADDR 110 \
>                -d $CHOKE_DMZ_IPADDR $UNPRIVPORTS -j ACCEPT

>       # Bastion maskiert alle Pakete der Choke
>       ipchains -A forward -i $EXTERNAL_INTERFACE \
>                -s $CHOKE_DMZ_IPADDRESS -j MASQ

> # Das Choke Firewallscript

>       #Konstantendefinition
>       CHOKE_DMZ_INTERFACE=eth0       # externes Interface der Choke
>       CHOKE_DMZ_IPADDR=192.168.1.2   # externe Adresse der Choke
>       CHOKE_LAN_INTERFACE=eth1       # internes Interface der Choke
>       CHOKE_LAN_IPADDR=192.168.5.1   # interne Adresse der Choke
>       LOOPBACK_INTERFACE=lo          # Local Loopback
>       LOOPBACK=127.0.0.0/8           # Loopback-Adressbereich

>       BASTION_DMZ_IPADDR=192.168.1.1 # interne Adresse der Bastion
>       DMZ_ADDRESSES=192.168.1.0/24   # IP-Bereich der DMZ
>       LAN_ADDRESSES=192.168.5.0/24   # IP-Bereich des LAN
>       DMZ_BROADCAST=192.168.1.255    # Broadcastadresse DMZ
>       ANYWHERE=any/0                 # Jede IP-Adresse

>       CLASS_A=10.0.0.0/8             # Reservierter Bereich Klasse A
>       CLASS_B=172.16.0.0/12          # Reservierter Bereich Klasse B
>       CLASS_C=192.168.0.0/16         # Reservierter Bereich Klasse C
>       CLASS_D=224.0.0.0/4            # Komplette Klasse D
>       CLASS_E=240.0.0.0/5            # Komplette Klasse E
>       BROADCAST_SRC=0.0.0.0          # Broadcast Absender
>       BROADCAST_DEST=255.255.255.255 # Broadcast Empfänger
>       PRIVPORTS=0:1023               # Privilegierte Portnummern
>       UNPRIVPORTS=1024:65535         # Unprivilegierte Portnummern

>       # Alle bestehenden Regeln löschen
>       ipchains -F

>       # Voreingestellte Policies setzen
>       ipchains -P input    REJECT
>       ipchains -P output   REJECT
>       ipchains -P forward  REJECT

>       # Loopback ohne Einschränkungen
>       ipchains -A input  -i $LOOPBACK_INTERFACE -j ACCEPT
>       ipchains -A output -i $LOOPBACK_INTERFACE -j ACCEPT

>       # SYN_COOKIES aktivieren
>       echo 1 > /proc/sys/net/ipv4/tcp_syncookies

>       # SOURCE ADDRESS VERIFICATION aktivieren
>       for i in /proc/sys/net/ipv4/conf/*/rp_filter
>       do
>         echo 1 > $i
>       done

>       # Pakete ablehnen, die vorgeben von der eigenen Adresse zu stammen
>       ipchains -A input -i $CHOKE_LAN_INTERFACE\
>                -s $CHOKE_LAN_IPADDR -j REJECT -l
>       ipchains -A input -i CHOKE_DMZ_INTERFACE \
>                -s $CHOKE_DMZ_IPADDR -j REJECT -l

>       # Pakete mit privaten A-Klasse Adressen als Sender oder
>       # Empfänger verwerfen
>       ipchains -A input -i $CHOKE_DMZ_INTERFACE -s $CLASS_A -j REJECT -l
>       ipchains -A input -i $CHOKE_LAN_INTERFACE -s $CLASS_A -j REJECT -l
>       ipchains -A output -i $CHOKE_DMZ_INTERFACE -d $CLASS_A -j REJECT -l
>       ipchains -A output -i $CHOKE_LAN_INTERFACE -d $CLASS_A -j REJECT -l

>       # Pakete mit privaten B-Klasse Adressen als Sender oder
>       # Empfänger verwerfen
>       ipchains -A input -i $CHOKE_DMZ_INTERFACE -s $CLASS_B -j REJECT -l
>       ipchains -A input -i $CHOKE_LAN_INTERFACE -s $CLASS_B -j REJECT -l
>       ipchains -A output -i $CHOKE_DMZ_INTERFACE -d $CLASS_B -j REJECT -l
>       ipchains -A output -i $CHOKE_LAN_INTERFACE -d $CLASS_B -j REJECT -l

>       # Pakete mit D-Klasse Adressen als Sender verwerfen
>       ipchains -A input -i $CHOKE_DMZ_INTERFACE -s $CLASS_D -j REJECT -l
>       ipchains -A input -i $CHOKE_LAN_INTERFACE -s $CLASS_D -j REJECT -l
>       ipchains -A output -i $CHOKE_DMZ_INTERFACE -s $CLASS_D -j REJECT -l
>       ipchains -A output -i $CHOKE_LAN_INTERFACE -s $CLASS_D -j REJECT -l

>       # Pakete mit E-Klasse Adressen verwerfen
>       ipchains -A input -i $CHOKE_DMZ_INTERFACE -s $CLASS_E -j REJECT -l
>       ipchains -A input -i $CHOKE_LAN_INTERFACE -s $CLASS_E -j REJECT -l

>       # Pakete mit Loopback Adressen als Sender verwerfen
>       ipchains -A input -i $CHOKE_DMZ_INTERFACE -s $LOOPBACK -j REJECT -l
>       ipchains -A input -i $CHOKE_LAN_INTERFACE -s $LOOPBACK -j REJECT -l

>       # Pakete mit fehlerhaften Broadcast Adressen verwerfen
>       ipchains -A input -i $CHOKE_DMZ_INTERFACE \
>                -s $BROADCAST_DEST -j REJECT -l
>       ipchains -A input -i $CHOKE_LAN_INTERFACE \
>                -s $BROADCAST_DEST -j REJECT -l
>       ipchains -A input -i $CHOKE_DMZ_INTERFACE \
>                -d $BROADCAST_SRC -j REJECT -l
>       ipchains -A input -i $CHOKE_LAN_INTERFACE \
>                -d $BROADCAST_SRC -j REJECT -l

>       # source-quench zur DMZ
>       ipchains -A input -i $CHOKE_DMZ_INTERFACE -p icmp\
>                -s $DMZ_ADDRESSES 4 -d $CHOKE_DMZ_IPADDR -j ACCEPT
>       ipchains -A output -i $CHOKE_DMZ_INTERFACE -p icmp\
>                -s $CHOKE_DMZ_IPADDR 4 -d $DMZ_ADDRESSES -j ACCEPT

>       # parameter-problem zur DMZ
>       ipchains -A input -i $CHOKE_DMZ_INTERFACE -p icmp\
>                -s $ANYWHERE 12 -d $CHOKE_DMZ_IPADDR -j ACCEPT
>       ipchains -A output -i $CHOKE_DMZ_INTERFACE -p icmp\
>                -s $CHOKE_DMZ_IPADDR 12 -d $ANYWHERE -j ACCEPT

>       # destination-unreachable zur DMZ
>       ipchains -A input -i $CHOKE_DMZ_INTERFACE -p icmp\
>                -s $ANYWHERE 3 -d $CHOKE_DMZ_IPADDR -j ACCEPT
>       ipchains -A output -i $CHOKE_DMZ_INTERFACE -p icmp\
>                -s $CHOKE_DMZ_IPADDR 3 -d $ANYWHERE -j ACCEPT

>       # time-exceeded zur DMZ
>       ipchains -A input -i $CHOKE_DMZ_INTERFACE -p icmp\
>                -s $BASTION_DMZ_IPADDR 11 -d $CHOKE_DMZ_IPADDR -j ACCEPT
>       ipchains -A output -i $CHOKE_DMZ_INTERFACE -p icmp\
>                -s $CHOKE_DMZ_IPADDR 11 -d $BASTION_DMZ_IPADDR -j ACCEPT

>       # Ausgehendes Ping ins Internet
>       ipchains -A output -i $CHOKE_DMZ_INTERFACE -p icmp\
>                -s $CHOKE_DMZ_IPADDR 8 -d $ANYWHERE -j ACCEPT
>       ipchains -A input -i $CHOKE_DMZ_INTERFACE -p icmp\
>                -s $ANYWHERE 0 -d $CHOKE_DMZ_IPADDR -j ACCEPT

>       # Ankommende Pings aus der DMZ
>       ipchains -A input -i $CHOKE_DMZ_INTERFACE -p icmp\
>                -s $DMZ_ADDRESSES 8 -d $CHOKE_DMZ_IPADDR -j ACCEPT
>       ipchains -A output -i $CHOKE_DMZ_INTERFACE -p icmp\
>                -s $CHOKE_DMZ_IPADDR 0 -d $DMZ_ADDRESSES -j ACCEPT

>       # Der DNS-Server der Choke gibt Anfragen an die Bastion (UDP 53)
>       ipchains -A output -i $CHOKE_DMZ_INTERFACE -p udp\
>                -s $CHOKE_DMZ_IPADDR 53\
>                -d $BASTION_DMZ_IPADDR 53 -j ACCEPT
>       ipchains -A input -i $CHOKE_DMZ_INTERFACE -p udp\
>                -s $BASTION_DMZ_IPADDR 53\
>                -d $CHOKE_DMZ_IPADDR 53 -j ACCEPT

>       # Der Nameserver der Choke lässt Anfragen aller Clients aus der
>       # DMZ zu (TCP/UDP 53)
>       ipchains -A input -i $CHOKE_DMZ_INTERFACE -p udp \
>                -s $DMZ_ADDRESSES $UNPRIVPORTS \
>                -d $CHOKE_DMZ_IPADDR 53 -j ACCEPT
>       ipchains -A input -i $CHOKE_DMZ_INTERFACE -p udp \
>                -s CHOKE_DMZ_IPADDR 53 \
>                -d $DMZ_ADDRESSES $UNPRIVPORTS -j ACCEPT
>       ipchains -A input -i $CHOKE_DMZ_INTERFACE -p tcp \
>                -s $DMZ_ADDRESSES $UNPRIVPORTS \
>                -d $CHOKE_DMZ_IPADDR 53 -j ACCEPT
>       ipchains -A input -i $CHOKE_DMZ_INTERFACE -p tcp ! -y \
>                -s CHOKE_DMZ_IPADDR 53 \
>                -d $DMZ_ADDRESSES $UNPRIVPORTS -j ACCEPT

>       # Choke als auth Server
>       ipchains -A input -i $CHOKE_DMZ_INTERFACE -p tcp \
>                -s $DMZ_ADDRESSES $UNPRIVPORTS \
>                -d $CHOKE_DMZ_IPADDR 113 -j ACCEPT
>       ipchains -A output -i $CHOKE_DMZ_INTERFACE -p tcp ! -y\
>                -s $CHOKE_DMZ_IPADDR 113 \
>                -d $DMZ_ADDRESSES $UNPRIVPORTS -j ACCEPT

>       # Choke als auth-Client
>       ipchains -A output -i $CHOKE_DMZ_INTERFACE -p tcp\
>                -s $CHOKE_DMZ_IPADDR $UNPRIVPORTS \
>                -d $ANYWHERE 113 -j ACCEPT
>       ipchains -A input -i $CHOKE_DMZ_INTERFACE -p tcp ! -y \
>                -s $ANYWHERE 113 \
>                -d $CHOKE_DMZ_IPADDR $UNPRIVPORTS -j ACCEPT

>       # Choke erlaubt SMTP-Pakete an die Bastion
>       ipchains -A output -i $CHOKE_DMZ_INTERFACE -p tcp\
>                -s CHOKE_DMZ_IPADDR $UNPRIVPORTS \
>                -d $BASTION_DMZ_IPADDR 25 -j ACCEPT
>       ipchains -A input -i $CHOKE_DMZ_INTERFACE -p tcp ! -y\
>                -s $BASTION_DMZ_IPADDR 25 \
>                -d CHOKE_DMZ_IPADDR $UNPRIVPORTS -j ACCEPT

>       # POP3 Pakete an die Bastion werden weitergegeben:
>       ipchains -A output -i $CHOKE_DMZ_INTERFACE -p tcp \
>                -s $CHOKE_DMZ_IPADDR $UNPRIVPORTS \
>                -d $BASTION_DMZ_IPADDR 110 -j ACCEPT
>       ipchains -A input -i $CHOKE_DMZ_INTERFACE -p tcp ! -y \
>                -s $BASTION_DMZ_IPADDR 110 \
>                -d $CHOKE_DMZ_IPADDR $UNPRIVPORTS -j ACCEPT

>       # Vollständige Öffnung der Kommunikation zwischen LAN und Choke
>       ipchains -A input -i $CHOKE_LAN_INTERFACE \
>                -s $LAN_ADDRESSES -j ACCEPT
>       ipchains -A output  -i $CHOKE_LAN_INTERFACE \
>                -d $LAN_ADDRESSES -j ACCEPT

>       # Choke maskiert alle Pakete des LAN
>       ipchains -A forward -i $CHOKE_DMZ_INTERFACE \
>                -s $LAN_ADDRESSES -j MASQ