Reines Masquerading ohne Filterung
Das Paket ipchains (Serie sec) muß installiert sein.
Die Variable START_FW
in /etc/rc.config
setzten Sie auf "no"
.
Legen Sie die Datei /sbin/init.d/masquerade
mit folgendem Inhalt an:
#! /bin/sh
. /etc/rc.config
PROG="/sbin/ipchains"
WORLD_DEV="ippp0"
return=$rc_done
if [ ! -x $PROG ]
then
echo -n "Starting masquerading failed- install ipchains"
return=$rc_failed
echo -e "$return"
exit 1
fi
case "$1" in
start)
echo -n "Starting masquerading"
echo "1" > /proc/sys/net/ipv4/ip_forward
$PROG -F || return=$rc_failed
$PROG -A forward -i $WORLD_DEV -j MASQ || return=$rc_failed
echo -e "$return"
;;
stop)
echo -n "Shutting down masquerading"
$PROG -F || return=$rc_failed
test "$IP_FORWARD" = no && echo "0" > /proc/sys/net/ipv4/ip_forward
echo -e "$return"
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
;;
esac
test "$return" = "$rc_done" || exit 1
exit 0
Sie müssen "ippp0"
durch das richtige Device ersetzen, mit dem Sie die Verbindung zum Internet herstellen.
Machen Sie die Datei ausführbar: chmod 700 /sbin/init.d/masquerade
.
Legen Sie die entsprechenden Links zum automatischen Starten in den entsprechenden Runlevels an:
ln -s ../masquerade /sbin/init.d/rc2.d/S99masquerade
ln -s ../masquerade /sbin/init.d/rc2.d/K51masquerade
ln -s ../masquerade /sbin/init.d/rc3.d/S99masquerade
ln -s ../masquerade /sbin/init.d/rc3.d/K51masquerade
Ab dem nächsten Booten können Rechner aus dem internen Netz auf das Internet zugreifen, sofern bei diesen der Masqerading- Rechner als Default- Gateway eingetragen ist.
Firewall mit Paketfilterung
Hier finden Sie nur eine kurze Beschreibung der Einstellungen in /etc/rc.firewall
. Eine ausführliche Beschreibung finden Sie in /usr/doc/packages/firewals.
Folgende Pakete müssen installiert sein:
- firewals (Version 1.2, Serie sec) -> Scripte zum Konfigurieren und Starten des Firewalls
- Wenn Sie Masquerading nutzen wollen, oder einen Nameserver auf dem Firewall- Rechner laufen haben, holen Sie sich bitte das Update auf firewals 1.4 von http://www.suse.de/de/support/download/updates/63_update.html
- ipchains (Serie sec) -> Tool zum aktivieren der Regeln im Kernel
Die Variable START_FW=
in /etc/rc.config
setzten Sie auf "yes"
, damit die Firewallscripte beim Booten ausgeführt werden.
Alle sonstigen Einstellungen nehmen Sie in /etc/rc.firewall
vor.
Das geschieht nach folgenden möglichen Varianten:
- Ihr Rechner ist nur mit einer Schnittstelle ans Netz angeschlossen:
Sie müssen ausschließlich Option 2 anpassen, und nach Bedarf 11 und 13. Alle anderen Voreinstellungen sind in Ordnung.
- Ihr Rechner ist ein Firewall, der nur als Proxy fungiert. D.h. es soll kein direktes Routing zwischen den Netzwerkschnittstellen stattfinden:
Sie müssen die Optionen 2 und 3 anpassen, und nach Bedarf 9, 11, 12 und 13. Die Proxy- Dienste müssen natürlich auch konfiguriert werden.
- Ihr Rechner ist ein Firewall, der aktiv zwischen dem "sicheren" und dem "unsicheren" Netz routen soll:
Sie müssen die Optionen 2, 3, 4, 6 anpassen, und nach Bedarf 5, 9, 11, 12, und 13.
- Die Optionen 7, 8, 10, 14, 15, 16, 17, 18 und 19 sollten Sie am besten in der Standardeinstellung belassen oder nur ändern, wenn Sie genau wissen was Sie tun.
Die Optionen im einzelnen:
- 2:
FW_DEV_WORLD
Hier tragen Sie alle Netzwerkschnittstellen ein, die auf der äußeren, "unsicheren" Seite des Rechners liegen, also mit dem Internet verbunden sind.
Die Einträge werden durch Leerzeichen getrennt.
z.B.: FW_DEV_WORLD="ippp0"
- 3:
FW_DEV_INT
Hier tragen Sie alle Netzwerkschnittstellen ein, die auf der inneren, "sicheren" Seite des Rechners liegen, also Ihr privates Netz. Falls es ein Einzelrechener ist lassen Sie diese Option leer.
Die Einträge werden durch Leerzeichen getrennt.
z.B.: FW_DEV_INT="eth0"
- 4:
FW_ROUTE
Setzen Sie diese Option nur auf "yes", wenn Sie eine direkte Verbindung (ohne Proxy- Dienste auf dem Firewall) von Rechnern aus dem internen Netz zum Internet herstellen wollen oder aus dem Internet auf interne Rechner zugegriffen werden soll (letzteres ist nicht zu empfehlen).
- 5:
FW_MASQUERADE
Diese Option benötigen Sie, wenn Rechner aus dem internen Netz mit privaten IP- Adressen (z.B.: 192.168.x.x) direkten Zugang zum Internet ohne Proxy- Dienste haben sollen. Dadurch werden die privaten IP- Adressen nach außen hin durch die offizielle IP- Adresse vom Firewall/ Router ersetzt, da die Pakete sonst verloren wären. So hat es für Rechner im Internet den Anschein, der Dienst würde vom Firewall selber angefordert. Rückwärts werden die Adressen wieder auf die privaten umgesetzt. Bitte beachten Sie, daß die Benutzung von Proxy- Diensten sicherer ist, als Masquerading.
Um Masquerading zu nutzen müssen auch FW_DEV_INT
und FW_ROUTE="yes"
gesetzt sein.
- 6:
FW_LOCALNETS
Tragen Sie hier alle internen Rechner oder Netzwerke (incl. Netzmaske) ein, die Zugriff aufs Internet über Masquerading erhalten sollen.
Falls dies nicht zutrifft lassen Sie die Option leer.
Die Einträge werden durch Leerzeichen getrennt z.B.:
FW_LOCALNETS="192.168.1.1 192.168.2.0/24"
für den Rechner 192.168.1.1 und das Class C Netz 192.168.2.x .
FW_LOCALNETS="0/0"
für alle Rechner/ Netze.
Um diese Option zu benutzen müssen auch FW_DEV_INT
, FW_MASQUERADE="yes"
und FW_ROUTE="yes"
gesetzt sein.
- 9:
FW_PROTECT_FROM_INTERNAL
Wenn diese Option auf "yes"
gesetzt ist, können Rechner aus internen Netzen nur auf ausdrücklich freigegebene Dienste (FW_*_SERVICES_INTERNAL
) des Firewalls zugreifen.
Um diese Option zu nutzen muß auch FW_DEV_INT
gesetzt sein.
- 11:
FW_TRUSTED_HOSTS
, FW_UDP_SERVICES_TRUSTED
und FW_TCP_SERVICES_TRUSTED
FW_TRUSTED_HOSTS
: Rechner/ Netze aus dem Internet denen Sie vertrauen und die Zugriff auf bestimmte interne Dienste bekommen sollen.
Die Rechner/ Netze werden eingetragen wie in 6.
FW_UDP_SERVICES_TRUSTED
und FW_TCP_SERVICES_TRUSTED
bestimmen die Dienste, auf die diese Rechner/ Netze Zugriff erhalten.
Mögliche Eingaben sind (durch Leerzeichen getrennt):
- Einzelne Portnummern, z.B.:
"123 524"
für die Ports 123 und 524.
- Ganze Portbereiche, z.B.:
"3200:3299"
für alle Ports von 3200 bis 3299.
- Namen von Diensten, die über
/etc/services
aufgelöst werden können, z.B.: "smtp telnet"
.
- Sie können alle drei Möglichkeiten miteinander kombinieren.
- 12:
FW_TCP_SERVICES_INTERNAL
, FW_UDP_SERVICES_INTERNAL
Hier tragen Sie alle Dienste auf Ihrem Firewall- Rechner ein, die von internen Netzwerken genutzt werden dürfen.
Die Dienste werden analog zu 11 eingetragen.
Wollen Sie alle Dienste nach innen freigeben, setzen Sie FW_PROTECT_FROM_INTERNAL="no"
- 13:
FW_TCP_ALLOW_INCOMING_HIGHPORTS
, FW_UDP_ALLOW_INCOMING_HIGHPORTS
Hier geben Sie an, wie aus dem Internet auf die unprivilegierten Ports des Firewalls (über 1023) zugegriffen werden darf.
- Entweder jeder darf
"yes"
, keiner darf "no"
oder:
- Anfragen von bestimmten Ports werden zugelassen. (das ist leicht zu umgehen)
Diese werden nach den selben Regeln eingetragen wie in 11
FW_UDP_ALLOW_INCOMING_HIGHPORTS
sollte "dns"
enthalten, damit Ihre in /etc/resolv.conf
eingetragenen Nameserver Anfragen beantworten können
- Um FTP im aktiven Modus zu nutzen muß
"ftp-data"
in FW_TCP_ALLOW_INCOMING_HIGHPORTS
eingetragen sein. Zu empfehlen ist jedoch, diese Option leer zu lassen und FTP im passiven Modus zu benutzen
- RPC- Dienste wie showmount oder rpcinfo als root können nicht benutzt werden.
Folgende Optionen sollten Sie auf den Standardeinstellungen belassen oder nur ändern, wenn Sie genau wissen was Sie tun:
- 7:
FW_KERNEL_SECURITY
Diese Option aktiviert zusätzliche sicherheitsrelevante Kerneloptionen:
(icmp_ignore_bogus_error_responses, icmp_echoreply_rate, icmp_destunreach_rate, icmp_paramprob_rate, icmp_timeexeed_rate, ip_local_port_range, log_martians, mc_forwarding, mc_forwarding, rp_filter)
Tip: Setzen Sie diese Option während der Testphase auf "no" und erst wenn sonst alles funktioniert wieder auf "yes".
- 8:
FW_AUTOPROTECT_GLOBAL_SERVICES
Diese Option sichert Dienste (TCP und UDP), die an allen Netzwerkadressen des Firewalls (nicht nur an speziell definierten) auf Verbindung warten.
z.B.: 0.0.0.0:23
wird gesichert, jedoch 10.0.0.01:53
nicht.
Diese Option kann für einzelne Dienste mit den Optionen FW_*_SERVICES_*
deaktiviert werden.
- 10:
FW_TCP_SERVICES_EXTERNAL
und FW_UDP_SERVICES_EXTERNAL
Hier tragen Sie alle internen Dienste ein, auf die Zugriff vom Internet aus zugelassen werden soll (unsicher).
TCP basierte Dienste (smtp, www, etc.) in FW_TCP_SERVICES_EXTERNAL
UDP basierte Dienste (syslog etc.) in FW_UDP_SERVICES_EXTERNAL
-
Die Dienste werden eingetragen wie in 11.
- 14:
FW_FORWARD_TCP
, FW_FORWARD_UDP
Hier können Sie angeben, ob aus dem Internet auf interne Rechner zugegriffen werden soll.
- Da dies eine direkte Verbindung in Ihr internes Netz öffnet, sollten Sie von dieser Möglichkeit nur Gebrauch machen, wenn es sich gar nicht anders einrichten lässt
- Die internen Rechner benoetigen hierzu eine feste, nicht private IP- Adresse.
- Eine forward- Regel besteht aus dem Rechner/ Netz, das den Zugriff erhalten soll, der IP-Adresse des internen Rechners, auf den Zugegriffen werden soll und dem Port auf diesem Rechner.
- Die drei Teile einer Regel werden durch Kommas getrennt, zwei Regeln werden durch Leerzeichen getrennt.
- z.B. leitet die Regel
"12.12.12.0/24,13.13.13.13,25"
Zugriffe aus dem externen Netz 12.12.12.0/24 auf den Port 25 des internen Rechners 13.13.13.13 weiter.
- 15:
FW_REDIRECT_TCP
, FW_REDIRECT_UDP
Hier können Sie angeben, welche Dienste auf andere lokale Ports umgeleitet werden sollen. So können Sie z.B. alle internen User ohne ihr Zutun dazu bewegen, nur über den Proxyserver zu surfen, oder Webserveranfragen von außen können an einen sicheren internen Webserver weitergeleitet werden.
- Eine Regel besteht aus der Quelladresse, der Zieladresse, dem ursprünglichem Port der Anfrage und dem Port, an den umgeleitet werden soll.
- Die vier Teile einer Regel werden durch Kommas getrennt, zwei Regeln werden durch Leerzeichen getrennt.
- z.B. leitet die Regel
192.168.0.0/24,0/0,80,3128
alle ausgehenden Webanfragen aud dem internen Netz 192.168.0.0/24 an den Port 3128 von Squid auf dem Firewall um.
- 16:
FW_LOG_*
Diese Optionen legen fest, welche Pakete mitgeloggt werden.
- 17:
FW_ALLOW_FW_PING
Diese Variable bestimmt, ob der Firewall auf Pings aus dem Internet antwortet.
"yes"
oder "no"
.
- 18:
FW_ALLOW_FW_TRACEROUTE
Diese Variable bestimmt, ob der Firewall ICMP time-to-live-exceeded Antworten verschickt.
Diese werden von traceroute auf den Firewall-Rechner benötigt.
Bitte beachten Sie:
- Unix traceroute benötigt zusätzlich
FW_UDP_ALLOW_INCOMING_HIGHPORTS
gesetzt.
- Windows traceroute benötigt
FW_ALLOW_FW_PING="yes"
Diese Optionen stehen erst ab Version 1.4 zur Verfügung:
- 20:
FW_SERVICE_DNS
Setzen Sie diese Variable auf "yes"
, wenn Sie auf dem Firewall einen Nameserver betreiben.
In FW_TCP_SERVICES_*
muss der Port 53 auch eingetragen sein.
- 21:
FW_MASQ_MODULES
Hier können Sie festlegen, welche Masquerading Module geladen werden sollen.
- Möglichkeiten: autofw, cuseeme, ftp, irc, mfw, portfw, quake, raudio, user, vdolive
- Die Modulnamen werden durch Leerzeichen getrennt.
- Um Masquerading zu benutzen müssen auch
FW_ROUTE
und FW_MASQUERADE
gesetzt sein.
Beispielkonfiguration
Hier finden Sie eine Bespielkonfiguration für folgende Situation:
- Grundlage ist firewals 1.4 von unserem FTP-Server.
- Firewall ist Einwahlrechner mit einer ISDN- Karte (ippp0) und einer Netzwerkkarte (eth0).
- Auf diesem laufen keinerlei Proxy- Dienste.
- Ein internes Netz an eth0 mit privaten IP-Adressen (192.168.0.0/24).
- Alle internen Rechner dürfen auf alle Dienste des Firewallrechners zugreifen (telnet, ssh etc.).
- Alle Rechner aus dem internen Netz können per Masquerading auf Dienste im Internet zugreifen.
- FTP ist nur im passiven Modus erlaubt. D.h. die internen Rechner muessen auf FTP-Server mit Netscape zugreifen, oder mit einem Client wie ftp, ncftp, etc. der ein Umschalten auf passiv ermöglicht.
- Nameserverantworten werden nur von Nameservern entgegengenommen, die auf dem Firewallrechner in
/etc/resolv.conf
eingetragen sind. Diese müssen auch von den internen Rechnern benutzt werden.
- Kein Rechner aus dem Internet darf auf Dienste auf dem Firewallrechner oder im internen Netz zugreifen.
FW_DEV_WORLD="ippp0"
FW_DEV_INT="eth0"
FW_ROUTE="yes"
FW_MASQUERADE="yes"
FW_LOCALNETS="192.168.1.0/24"
FW_MASQ_DEV="$FW_DEV_WORLD"
FW_KERNEL_SECURITY="yes"
FW_AUTOPROTECT_GLOBAL_SERVICES="yes"
FW_PROTECT_FROM_INTERNAL="no"
FW_TCP_SERVICES_EXTERNAL=""
FW_UDP_SERVICES_EXTERNAL=""
FW_TRUSTED_HOSTS=""
FW_TCP_SERVICES_TRUSTED=""
FW_UDP_SERVICES_TRUSTED=""
FW_TCP_SERVICES_INTERNAL=""
FW_UDP_SERVICES_INTERNAL=""
FW_TCP_ALLOW_INCOMING_HIGHPORTS=""
FW_UDP_ALLOW_INCOMING_HIGHPORTS="dns"
FW_SERVICE_DNS="no"
FW_FORWARD_TCP=""
FW_FORWARD_UDP=""
FW_REDIRECT_TCP=""
FW_REDIRECT_UDP=""
FW_LOG_DENY_CRIT="yes"
FW_LOG_DENY_ALL="no"
FW_LOG_ACCEPT_CRIT="yes"
FW_LOG_ACCEPT_ALL="no"
FW_ALLOW_FW_PING="no"
FW_ALLOW_FW_TRACEROUTE="no"
FW_ALLOW_FW_SOURCEQUENCH="yes"
FW_MASQ_MODULES="autofw cuseeme ftp irc mfw portfw quake raudio user vdolive"