![]() ![]() ![]() |
Online Suche im Handbuch | LITTLE-IDIOT NETWORKING |
Zuerst vielen Dank f�r die viele positive Resonanz auf mein Handbuch. Einige Dinge sind sicher noch verbesserungsbed�rftig, andere aber auch beabsichtigt. Hier also die Fragen:
Wenn ich das fertige FirewallSkript starte, erhalte ich viele Fehlermeldungen !
Das ist wahr. Es fehlen n�mlich einige Definitionen von Variablen. Ohne g�ltige Variablen oben im Header melden weiter unten einige ipfwadm Befehle einen Syntaxerror. Um herauszufinden, an welcher Stelle dies geschieht, kann man einfach an einigen Stellen eine Zeile der Art:
echo "Merker 1"
einsetzen. So findet man die fehlerhaften Zeilen. Dies ist im Grunde von mir auch so beabsichtigt. Fertige Skripte sind sogar von mir schwer zu durchblicken, insbesondere diejenigen, die das Firewall Configuration Toolkit (FCT) so liefert. Siehe hierzu auch http://www.friedrich-net.de . Besser ist f�r Anf�nger das Skript http://www.mindstorm.com/~sparlin/demos/fwconfig/ zu �berblicken.
Hier ein Beispiel:
#!/bin/sh
# Firewall Skript built for ipfwadm
# Skript created Sat Jul 17 05:20:19 1999
#
# http://www.mindstorm.com/~sparlin/demos/fwconfig/
#
# Set up variables
INTERNALIP="192.168.1.1"
EXTERNALIP="222.222.222.222"
LOOPBACK="127.0.0.1"
NETWORKIP="192.168.1.0"
ANYWHERE="0.0.0.0/0"
PORTS="1024:65535"
TCP_ALLOWIN="ftp smtp www pop-3 pop"
TCP_ALLOWOUT="tcpmux echo discard systat daytime netstat qotd chargen \
ftp-data ftp telnet smtp time whois domain mtp gopher rje finger www \
link supdup hostnames iso-tsap x400 x400-snd csnet-ns pop-2 pop-3 pop \
sunrpc sunrpc ident sftp uucp-path nntp ntp netbios-ns netbios-dgm \
netbios-ssn imap NeWS exec login shell printer efs tempo courier \
conference netnews uucp remotefs pcserver listen nterm ingreslock tnet\
cfinger lnetxfer netperf"
MASQ_ALLOWIN="discard ftp-data ftp telnet smtp domain www pop-3 ident"
# =====================================
# ========== Incoming Rules ===========
# =====================================
# Flush previous rules
/sbin/ipfwadm -I -f
# Set default policy to deny
/sbin/ipfwadm -I -p deny
# Unlimited traffic within the local network
/sbin/ipfwadm -I -a accept -V "$INTERNALIP" -S "$NETWORKIP" -D "$ANYWHERE"
# =====Deny spoofed packets and log denied requests
/sbin/ipfwadm -I -a deny -V "$EXTERNALIP" -S "$NETWORKIP" -D "$ANYWHERE" -o
# Target
for SERVICES in `echo $TCP_ALLOWIN` ; do
/sbin/ipfwadm -I -a accept -P tcp -V "$EXTERNALIP" -S "$ANYWHERE" \
"$PORTS" -D "$EXTERNALIP" "$SERVICES" -o
done
# Return
for SERVICES in `echo $TCP_ALLOWOUT` ; do
/sbin/ipfwadm -I -a accept -P tcp -S -V "$EXTERNALIP" "$ANYWHERE" "$SERVICES" \
-D "$EXTERNALIP" "$PORTS" -o
done
# Allow ping requests
/sbin/ipfwadm -I -a accept -P icmp -V "$EXTERNALIP" -S "$ANYWHERE" \
-D "$EXTERNALIP" -o
# DNS
/sbin/ipfwadm -I -a accept -P udp -V "$EXTERNALIP" -S "$ANYWHERE" \
-D "$EXTERNALIP"
/sbin/ipfwadm -I -a accept -V "$LOOPBACK" -S "$ANYWHERE" -D "$ANYWHERE"
# Log the rest
/sbin/ipfwadm -I -a deny -S "$ANYWHERE" -D "$ANYWHERE" -o
# =====================================
# ========== Outgoing Rules ===========
# =====================================
# Flush previous rules
/sbin/ipfwadm -O -f
# Set default policy to deny
/sbin/ipfwadm -O -p deny
# Unlimited traffic within the local network
/sbin/ipfwadm -O -a accept -V "$INTERNALIP" -S "$ANYWHERE" -D "$NETWORKIP"
# Logging
/sbin/ipfwadm -O -a deny -V "$EXTERNALIP" -S "$ANYWHERE" -D "$NETWORKIP" -o
/sbin/ipfwadm -O -a deny -V "$EXTERNALIP" -S "$NETWORKIP" -D "$ANYWHERE" -o
# Target
for SERVICES in `echo $TCP_ALLOWOUT`; do
/sbin/ipfwadm -O -a accept -P tcp -S "$EXTERNALIP" "$PORTS" \
-D "$ANYWHERE" "$SERVICES" -o
done
# Return
for SERVICES in `echo $TCP_ALLOWIN`; do
/sbin/ipfwadm -O -a accept -P tcp -S "$EXTERNALIP" "$SERVICES" \
-D "$ANYWHERE" "$PORTS" -o
done
# DNS
/sbin/ipfwadm -O -a accept -P udp -V "$EXTERNALIP" -S "$EXTERNALIP" \
-D "$ANYWHERE"
/sbin/ipfwadm -O -a accept -V "$LOOPBACK" -S "$ANYWHERE" -D "$ANYWHERE"
# Allow ping requests
/sbin/ipfwadm -O -a accept -P icmp -V "$EXTERNALIP" -S "$ANYWHERE" \
-D "$EXTERNALIP" -o
# Log the rest
/sbin/ipfwadm -O -a deny -S "$ANYWHERE" -D "$ANYWHERE" -o
# ======================================
# ========== Forwarded Rules ===========
# ======================================
# Flush previous rules
/sbin/ipfwadm -F -f
# Set default policy to deny
/sbin/ipfwadm -F -p deny
for MSERVICES in `echo $MASQ_ALLOWIN`; do
/sbin/ipfwadm -F -a m -P tcp -S "$NETWORKIP" -D "$ANYWHERE" $MSERVICES -o
done
# DNS
/sbin/ipfwadm -F -a m -P udp -S "$NETWORKIP" -D "$ANYWHERE" domain
# Log the rest
/sbin/ipfwadm -F -a deny -S "$ANYWHERE" -D "$ANYWHERE" -o
S.u.S.E 5.3/6.0/6.1 hat ebenfalls eine nettes Konfigurations - Skript eingebaut, welches �ber /etc/rc.config konfiguriert wird. Das eigentliche Skript, welches die Firewall startet, ist /sbin/init.d/firewall oder unter /etc/rc.d/ (neuere Versionen) zu finden. Das Problem mit diesen Skripten ist, da� sie einfach aussehen, aber fatale Fehler enthalten und einige Dinge nicht korrekt behandeln, z.B. ICMP Codes. Die Problematik habe ich bereits im Skript http://www.little-idiot.de/firewall/workshop2.pdf ausf�hrlich beschrieben. Hier ein Ausschnitt der Konfigurationsdatei von S.u.S.E.:
FW_START="no" FW_LOCALNETS="" FW_FTPSERVER="" FW_WWWSERVER="" FW_SSLSERVER="" FW_SSLPORT="443" FW_MAILSERVER="" FW_DNSSERVER="" FW_NNTPSERVER="" FW_NEWSFEED="" FW_WORLD_DEV="eth1" FW_INT_DEV="eth0" FW_LOG_ACCEPT="no" FW_LOG_DENY="yes" FW_ROUTER="" FW_FRIENDS="no" FW_INOUT="no" FW_SSH="no" FW_TRANSPROXY_OUT="" FW_TRANSPROXY_IN="" FW_REDIRECT="" FW_TCP_LOCKED_PORTS="1:1023" FW_UDP_LOCKED_PORTS="1:1023" # Masquerading settings - See /usr/doc/packages/firewall # for a detailed deSkription MSQ_START="no" MSQ_NETWORKS="192.168.0.0/24" MSQ_DEV="eth0" MSQ_MODULES="ip_masq_cuseeme ip_masq_ftp ip_masq_irc ip_masq_quake ip_masq_raudio ip_masq_vdolive"
Es gibt eine Reihe von Variablen, die Traffic �ber die Firewall zu bestimmten Servern im Intranet zulassen. Die Programmierer bei S.U.S.E haben hier fatale, logische Fehler begangen. Erstens sollten einige Masquerading Optionen niemals aktiviert werden, und zweitens darf niemals der Zugriff auf einen Server in der DMZ erlaubt werden, ohne da� dieser selber noch einmal durch eine Firewall gegen�ber dem Intranet abgesichert ist. Server in der DMZ darf man nicht als sicher betrachten. Den Autoren fehlt offensichtlich noch etwas Verst�ndnis f�r die Begriffe "reverse proxy" und die Einsicht darin, da� Server in der DMZ stets durch "buffer overflows" bedroht sind. Ich selber habe nach ca. 10 Minuten Suche einen erfolgreichen Angriff auf die S.u.S.E. Konfiguration (alles nach Handbuch konfiguriert) durchgef�hrt (S.u.S.E. 6.0 und 6.1 beta).
Wer wei�, was er tut, der kann das Skript durchaus einsetzen, jedoch nicht, ohne mit Hilfe des IIS noch einmal alles zu verifizieren. Wer aber noch neu in der Materie ist, der hat auch keine M�glichkeit zu verstehen, was in dem Skript eigentlich passiert, und sollte dringend die Finger davon lassen. Als Alternative bietet sich an, obiges Skript um weitere, wichtige Regeln zu erg�nzen, z.B. um die Spoofing - Regeln u.s.w.
![]() ![]() ![]() |
Online Suche im Handbuch | LITTLE-IDIOT NETWORKING |