Nächste Seite: Protokollbeschreibungen
Aufwärts: Crashkurs Firewallaufbau unter Linux
Vorherige Seite: Wichtige Portnummern
  Inhalt
Unterabschnitte
Die Beispiel-Scripts
# 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
# 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
#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
root
2001-08-07