Firewall für PPTP-Verbindungen

 

Dies soll ein einfaches, kurzes Konfigurationsbeispiel für eine SuSE-Firewall2 in Verbindung mit PoPToP sein.
Für eventuelle Schäden, die durch die Übernahme dieser Konfiguration entstehen, hafte ich nicht !!!

Damit die Firewall auch Ihrer Arbeit nachgeht, muss diese natürlich aktiviert werden (z.B.: im Runlevel-Editor, oder bis zum nächsten booten mit "rcSuSEfirewall2 start").
Welche Ports offen sind kann man durch 'netstat -lntu' herausfinden. Die zugehörige Beschreibung der Portnummern steht unter /etc/services.
Bitte prüfen Sie Ihre Konfiguration mit geeigneten Tools auf Sicherheit (z.B.: nmap).

Für genauere Dokumentation und der Bedeutung der jeweiligen Einstellungen bitte die Datei /etc/sysconfig/SuSEfirewall2 und darin enthaltene Verweise genau durchlesen. 

Die Konfiguration ist für einen Rechner gedacht, der eine Schnittstelle direkt im Internet und die andere im lokalem Netz hat.
Er ermöglicht NAT/Masquarading zum Durchgriff ins eigene Netz.
Zur Remotekonfiguration ist ssh freigegeben.

# /etc/sysconfig/SuSEfirewall2
#
# 1.)
# Soll die Firewall im Quickmodus laufen?
FW_QUICKMODE="no"

# 2.)
# Welche Schnittstellen zeigen auf das internet bzw. nicht vertrauenswürdige Netzwerke?
#
# Hier ist der Internetrouter an "eth0" angebunden
#
FW_DEV_EXT="eth0"

# 3.)
# Welche Schnittstellen zeigen auf das interne Netzwerk?
#
# Hier sind "eth1" und verschiedene ppp-Adapter als Intern (=Sicher) eingetragen.
# Pro PPTP-Verbindung wird ein ppp-Adapter geöffnet. Hier also so viele
# ppp-Einträge vornehmen, wie Benutzer gleichzeitig eingewählt sein können.
# HINWEIS: es müssen in /etc/ppp/options.pptpd natürlich auch entsprechend
# viele IP-Adressen unter remoteip zur Verfügung gestellt werden
#
FW_DEV_INT="eth1 ppp0 ppp1 ppp2 ppp3 ppp4 ppp5 ppp6 ppp7 ppp8 ppp9"

# 4.)
# Welche Schnittstelle zeigt auf eine DMZ oder Dialup netzwerk?
#
# Hier wird keine DMZ benutzt
#
FW_DEV_DMZ=""

# 5.)
# Soll ein Routing zwischen dem Internet, DMZ und Internem Netz aktiviert werden?
#
FW_ROUTE="yes"

# 6.)
# Soll eine masquerading des internen Netzes nach außen erlaubt sein?
#
FW_MASQUERADE="yes"

# Auf welchen Schnittstellen soll masquerading aktiviert werden?
#
#FW_MASQ_DEV="$FW_DEV_EXT"
FW_MASQ_DEV="eth0"

# Welchen internen Rechnern/Netzwerken soll erlaubt werden direkt (ohne Proxy
# auf dem Firewall) auf das internet zuzugreifen?
#
FW_MASQ_NETS="0/0"

# 7.)
# Wollen Sie die Firewall vom internen Netz schützen?
#
# Hier gehen wird davon aus, dass im internen Netz nur wir oder vertrauenswürdige
# Personen sitzen.
#
FW_PROTECT_FROM_INTERNAL="no"

# 8.)
# Sollen alle laufenden Netzwerk-Dienste auf der Firewall automatisch geschützt werden?
#
FW_AUTOPROTECT_SERVICES="yes"

# 9.)
# Welche Dienste AUF DER FIREWALL sollen vom Internet (bzw. nicht vertrauenswürdigem Netz),
# der DMZ oder Intern erreichbar sein?
#
# gebräuchlich: smtp domain
# Hier wird Domain, ein Zeitservice, natürlich pptp (= Port 1723) und zur Administration ssh ermöglicht.
FW_SERVICES_EXT_TCP="domain ntp pptp ssh"

# gebräuchlich: domain
# Da der Zeitservice auch unter UDP kommuniziert, ist dieser auch hier nötig.
FW_SERVICES_EXT_UDP="domain ntp"

# Für VPN/Routing welches an der firewall endet!!
# Hier ist GRE für PPTP absolut notwendig
FW_SERVICES_EXT_IP="gre"

# Port Numbern von RPC Diensten werden dynamisch vom portmapper zugewiesen.
# Typische auswahl: mountd nfs
# Kann hier leer bleiben
FW_SERVICES_EXT_RPC=""

# Da wir keine DMZ betreiben, können alle DMZ-Einträge leer bleiben
FW_SERVICES_DMZ_TCP=""
FW_SERVICES_DMZ_UDP=""
FW_SERVICES_DMZ_IP=""
FW_SERVICES_DMZ_RPC=""

# Da wir für das interne Netz keine Einschränkungen wollen, bleiben hier die Einträge leer
FW_SERVICES_INT_TCP=""
FW_SERVICES_INT_UDP="syslog"
FW_SERVICES_INT_IP=""
FW_SERVICES_INT_RPC=""

# 9a.)
# Externe Dienste in QUICKMODE.
# Wird nur benötigt, wenn QUICKMODE verwendet wird (siehe 1.)!
# (Die Einstellungen sind gleich zu Sektion 9)
# Da wir QUICKMODE nicht benutzen, bleiben die Einstellungen leer

FW_SERVICES_QUICK_TCP=""
FW_SERVICES_QUICK_UDP=""
FW_SERVICES_QUICK_IP=""

# 10.)
# Welche Dienste sollen von vertrauenswürdigen Rechnern / Netzen ansprechbar sein?
#
FW_TRUSTED_NETS="172.24.64.0/24"

# 11.)
# Wie ist der Zugriff erlaubt auf High (unpriviligierte [über 1023]) Ports?
#
# gebräuchlich: "ftp-data", besser ist "yes" um sicher zu sein, dass alles andere läuft :-(
FW_ALLOW_INCOMING_HIGHPORTS_TCP="yes"
# gebräuchlich: "DNS" oder "domain ntp", besser ist "yes" zu sicher zu sein ...
FW_ALLOW_INCOMING_HIGHPORTS_UDP="yes"

# 12.)
# Laufen einige der unten aufgeführten Dienste?
# Diese benötigen spezielle Aufmerksamkeit - ansonsten haben Sie gewonnen
#
# Die Dienste die laufen auf "yes" setzen, alle anderen auf "no",
#
FW_SERVICE_AUTODETECT="yes"
# Automatische Erkennung der unten stehenden Dienste bei deren Start

# Wenn bind/named läuft, auf "yes" setzen.
# Daran denken, dass Port 53 (= domain) als udp/tcp geöffnet sein muss, um
# eingehende Abfragen zu erlauben.
# Außerdem muss FW_ALLOW_INCOMING_HIGHPORTS_UDP auf "yes" stehen.
FW_SERVICE_DNS="no"

# wenn dhclient für das Erhalten einer IP Addresse verwendet wird, auf "yes" setzen!
FW_SERVICE_DHCLIENT="no"

# auf "yes" setzen, wenn ein DHCP Server läuft
FW_SERVICE_DHCPD="no"

# auf "yes" setzen, wenn auf dem Server Squid läuft.
# Dann muß TCP-Port 3128 offen sein, um einen Zugriff auf die 
# Proxy-Dienste zu gestatten.
FW_SERVICE_SQUID="no"

# auf "yes" setzen, wenn auf dem Server ein Samba Server läuft.
# Dann muß TCP-Port 139 offen sein, um einen Zugriff auf Samba zu gestatten. 
FW_SERVICE_SAMBA="no"

# 13.)
# Welche Dienste (Zugriff vom Internet) sollen in der DMZ (oder im
# internen Netz - wenn nicht maskiert) erlaubt sein?
# Benötigt: FW_ROUTE
#
FW_FORWARD="172.24.64.0/24,172.24.64.0/24"
# Benutzung vermeiden!

# 14.)
# Welche Dienste die vom Internet angesprochen werden sollen auf maskierte
# Rechner zugreifen dürfen?
#
FW_FORWARD_MASQ=""
# Benutzung vermeiden!

# 15.)
# Welche Zugriffe auf Dienste sollen auf einen lokalen Port auf der Firewall
#  umgeleitet werden?
#
FW_REDIRECT=""

# 16.)
# Welches Logging Level soll verwendet werden?
#
FW_LOG_DROP_CRIT="yes"
FW_LOG_DROP_ALL="no"
FW_LOG_ACCEPT_CRIT="yes"
FW_LOG_ACCEPT_ALL="no"

# 17.)
# Sollen zusätzliche Kernel TCP/IP Sicherheitseigenschaften aktiviert werden?
# Tipp: Diese Option auf "no" setzen, solange nicht sichergestellt wurde, dass die Konfiguration
# korrekt arbeitet. Dann auf "yes" setzen und auch so lassen, wenn alles weiter korrekt arbeitet.
#
# Warnung: FW_KERNEL_SECURITY und FW_ANTISPOOF NICHT!!! gleichzeitig auf "no" setzen.
# Ansonsten ist kein Spoofing Schutz vorhanden!
#
FW_KERNEL_SECURITY="yes"

# 17a.)
#
# Setzen von anti-spoofing Regeln?
#
FW_ANTISPOOF="no"

# 18.)
#
FW_STOP_KEEP_ROUTING_STATE="no"

# 19.)
# Erlaubt ICMP echo pings auf die Firewall/DMZ vom Internet.
#
FW_ALLOW_PING_FW="yes"
FW_ALLOW_PING_DMZ="no"
FW_ALLOW_PING_EXT="yes"

##
# END of /etc/sysconfig/SuSEfirewall2
##

# #
#-------------------------------------------------------------------------#
# #
# EXPERT OPTIONS - all others please don't change these! #
# #
#-------------------------------------------------------------------------#
# #

# 20.)
# Wird verwendet für traceroutes zur Firewall (oder traceroute ahnlichen Tools).
#
# Voraussetzung: "yes" bei FW_ALLOW_INCOMING_HIGHPORTS_UDP, und FW_ALLOW_PING_FW
#
FW_ALLOW_FW_TRACEROUTE="yes"

# 21.)
# Erlaube ICMP sourcequench vom ISP?
#
FW_ALLOW_FW_SOURCEQUENCH="yes"

# 22.)
# Erlaube IP Broadcasts?
#
# Wird benötigt z.B.: für Netbios/Samba, RIP, OSPF wo die broadcast Option benutzt wird.
#
FW_ALLOW_FW_BROADCAST="no"
# "yes" blendet die Log Messages für verworfene broadcast Pakete
#
FW_IGNORE_FW_BROADCAST="yes"

# 23.)
# Erlaube class routing?
#
FW_ALLOW_CLASS_ROUTING="no"

# 25.)
# Wollen Sie angepasste Regeln von einer Datei laden?
#
#FW_CUSTOMRULES="/etc/sysconfig/scripts/SuSEfirewall2-custom"
FW_CUSTOMRULES=""

# 26.)
# Wollen Sie Pakete REJECTen anstelle von DROPen?
#
FW_REJECT="no"

# 27.)
# Tuning des upstream. Mehr Infos unter http://www.lartc.org
#
FW_HTB_TUNE_DEV=""

# 28.)
# Was ist mit IPv6 Paketen zu tun?
#
FW_IPv6=""

# 28a.)
# Zurückweisen von ausgehenden IPv6 Paketen?
#
FW_IPv6_REJECT_OUTGOING="yes"

# 29.)
# Vertrauens Level von IPsec Paketen.
# Wir benutzen hier kein IPSEC.
#
FW_IPSEC_TRUST="no"

# 29a.)
# fwmark für IPsec Pakete benutzen
#
FW_IPSEC_MARK=""
FW_LOG=""