| Niederösterreichisches | Bildungsservice |
Da das Masquerading bei Linux je nach verwendeter Kernelversion verschieden implementiert wurde, gilt die hier beschriebene Variante nur für die Version SuSE 7.2 ff, wenn die SuSE-Firewall nicht aktiviert ist.
#! /bin/sh . /etc/rc.config test "$START_MASQ" = yes || exit 0 # Die folgenden Werte für das eigene Netz anpassen: INTERNAL_NET="10.0.0.0/8" EXTIP="127.0.0.1" echo -n "Masquerade starten" #Alle Regeln löschen iptables -F iptables -t nat -F #Policy setzen iptables -P INPUT ACCEPT iptables -P OUTPUT ACCEPT iptables -P FORWARD ACCEPT iptables -t nat -P PREROUTING ACCEPT iptables -t nat -P OUTPUT ACCEPT iptables -t nat -P POSTROUTING ACCEPT #Masquerade definieren iptables -t nat -A POSTROUTING -s $INTERNAL_NET -d ! $INTERNAL_NET -j SNAT --to $EXTIP echo -e $rc_done
chmod 744 masqueradeausführbar gemacht werden und kann dann mit
./masqueradegestartet werden.
#! /bin/sh
# allgemeine Variable (bitte an eigene Bedürfnisse anpassen)
CMD="/usr/sbin/iptables"
MDPR="/sbin/modprobe"
modules="_tables table_filter t_LOG t_state table_mangle table_nat _conntrack _conntrack_ftp _nat_ftp"
# Diese Dienste werden immer in beide Richtungen durchgelassen
allowed_ports_tcp="ftp ftp-data https ssh smtp time domain bootps bootpc pop3 ntp imap 1024:"
allowed_ports_udp="fsp ftp-data https ssh smtp time domain bootps bootpc pop3 ntp imap 1024:"
# WWW wird nur für den eigenen Server akzeptiert
allowed_ports_to_server_tcp="www"
allowed_ports_to_server_udp="www"
# Diese Dienste sollen nur im eigenen Schulnetz möglich sein
allowed_ports_from_intern_tcp="telnet sunrpc"
allowed_ports_from_intern_udp="sunrpc"
EXTIP="193.170.0.1"
# Broadcasting-Adresse extern
EXTBC="193.170.0.31"
INTIP="10.0.0.1"
# Broadcasting-Adresse intern
INTBC="10.0.0.255"
INTERNAL_NET="10.0.0.0/8"
# Rechner, die direkt (ohne Proxy) ins WWW dürfen
PRIVILEGDED_IP="10.0.1.1/32 10.0.1.32/27"
# Alle Regeln löschen
$CMD -F
$CMD -t nat -F
$CMD -t mangle -F
# Policy setzen
$CMD -P INPUT ACCEPT
$CMD -P OUTPUT ACCEPT
$CMD -P FORWARD ACCEPT
$CMD -t nat -P PREROUTING DROP
$CMD -t nat -P POSTROUTING ACCEPT
$CMD -t nat -P OUTPUT ACCEPT
$CMD -t mangle -P PREROUTING ACCEPT
$CMD -t mangle -P OUTPUT ACCEPT
# Module für ftp,.. -Masquerade aktivieren
for mod in $modules
do
$MDPR ip$mod
done
# ICMP akzeptieren
$CMD -t nat -A PREROUTING -p icmp -j ACCEPT
# Erlaubte Ports in PREROUTING akzeptieren
for x in $allowed_ports_tcp
do
$CMD -t nat -A PREROUTING -p tcp --dport $x -j ACCEPT
done
for u in $allowed_ports_udp
do
$CMD -t nat -A PREROUTING -p udp --dport $u -j ACCEPT
done
# Erlaubte Ports (auf Server) intern/extern in PREROUTING akzeptieren
for x in $allowed_ports_to_server_tcp
do
$CMD -t nat -A PREROUTING -p tcp -d $EXTIP --dport $x -j ACCEPT
$CMD -t nat -A PREROUTING -p tcp -d $INTIP --dport $x -j ACCEPT
done
for u in $allowed_ports_to_server_udp
do
$CMD -t nat -A PREROUTING -p udp -d $EXTIP --dport $u -j ACCEPT
$CMD -t nat -A PREROUTING -p udp -d $INTIP --dport $u -j ACCEPT
done
# Erlaubte Ports nur innerhalb des internen Netzes
for x in $allowed_ports_from_intern_tcp
do
$CMD -t nat -A PREROUTING -p tcp -s $INTERNAL_NET -d $INTERNAL_NET --dport $x -j ACCEPT
done
for u in $allowed_ports_from_intern_udp
do
$CMD -t nat -A PREROUTING -p udp -s $INTERNAL_NET -d $INTERNAL_NET --dport $u -j ACCEPT
done
## MASQUERADE EINRICHTEN
# priviligierte IP dürfen direkt ins Internet (ohne Filter)
for x in $PRIVILEGDED_IP
do
$CMD -t nat -A PREROUTING -p tcp -s $x -d ! $INTERNAL_NET --dport www -j ACCEPT
$CMD -t nat -A PREROUTING -p udp -s $x -d ! $INTERNAL_NET --dport www -j ACCEPT
$CMD -t nat -A POSTROUTING -p tcp -s $x -d ! $INTERNAL_NET --dport www -j SNAT --to $EXTIP
$CMD -t nat -A POSTROUTING -p udp -s $x -d ! $INTERNAL_NET --dport www -j SNAT --to $EXTIP
done
# Transparenter Proxy
$CMD -t nat -A PREROUTING -p tcp -s $INTERNAL_NET -d ! $INTERNAL_NET --dport www -j REDIRECT --to 3128
# Falls FTP nur über den Proxy möglich sein soll, dann die nächsten Zeilen aktivieren
# $CMD -t nat -A POSTROUTING -p tcp -s $INTERNAL_NET -d ! $INTERNAL_NET --dport ftp -j DROP
# $CMD -t nat -A POSTROUTING -p tcp -s $INTERNAL_NET -d ! $INTERNAL_NET --dport ftp-data -j DROP
# MASQUERADE für den Rest
$CMD -t nat -A POSTROUTING -s $INTERNAL_NET -d ! $INTERNAL_NET -j SNAT --to $EXTIP
# Zugriffe auf Broadcasting-Adresse abblocken (Smurf-Amplifier)
$CMD -t nat -A PREROUTING -d $EXTBC -j DROP
$CMD -t nat -A PREROUTING -d $INTBC -j DROP
# Nächste Zeile aktivieren, wenn abgewiesene Pakete mitprotokolliert werden sollen (für Fehlersuche)
# $CMD -t nat -A PREROUTING -j LOG
chmod 744 firewallausführbar gemacht werden. Es wird dann mit
./firewallgestartet. Wenn die letzte Zeile für das Mitprotokollieren aktiviert wurde, findet man in der Datei /var/log/warn die abgewiesenen Datenpakete.
iptables -L -v iptables -t nat -L -verhält man eine Liste der eingestellten Firewallregeln mit einer Statistik der durchgelassenen bzw. abgelehnten Pakete. Durch den Befehl
./masqueradekann die Firewall wieder deaktiviert werden.
Beide Skripts können hier komprimiert als Datei mask_fire.tgz oder mask_fire.zip heruntergeladen werden.
Weitere Informationen bei Mag.Gerald Stachl gerald.stachl@brg-wrn.ac.at.
Unter sta.brg-wrn.ac.at/AG_inf_2002.htm
kann eine Powerpoint-Präsentation zu diesem Thema heruntergeladen werden.
Letzte Änderung am
04.04.2003
webmaster@pinoe-hl.ac.at.