5.2.20
04/05/20
Last Modified 07/09/08 by Walter Tasin
Praktikumsinstallation/Server Reload Page

Gateway zur ti.ee.fhm.edu-Domäne

ÄNDERUNGEN müssen noch durchgeführt werden!!

Zentrale Komponente des Gatewayrechners ist die eingerichtete Firewall.
Es handelt sich um die SuSEfirewall2 der SuSE 10.0-Distribution.
Es gilt die Anzahl der Dienste auf diesem Rechner so gering wie möglich zu halten, damit der Rechner einen effektiven Schutz für das interne Praktikumsnetz darstellt.

Der Rechner besitzt 2 physikalische Netzwerkkarten.

interne Netz

  • Device: eth0 - 192.168.206.254/24
    • Name: gateway.ti.ee.fhm.edu

externes Netz

  • Device: eth1 - 10.27.69.130/24
    • Name: ti-net.da.private.hm.edu
    • von außen erreichbare Dienste:
      • Veritas Netbackup (tcp:13720-13722, 13724, 13782-13783)
      • SSH/SCP (tcp: 22)
      • LDAPS (Versuchsbetrieb) (tcp: 636)
  • Pseudo-Device: eth1#ti1 - 10.27.69.129/24
    • Name: ti1.da.private.fhm.edu
    • Zweck:
      dient zur Entgegennahme der Pakete für den Praktikumsserver ti1 aus dem Fachbereichsnetz und zur Weiterleitung an diesen.
      notwendige Dienste, die an ti1.ti.ee.fhm.edu weitergeleitet werden müssen sind:
      • Veritas Netbackup (tcp:13720-13722, 13724, 13782-13783)
      • SSH/SCP (tcp: 22)
      • Mailserver (vorübergehend) (tcp: 25)
      • Samba (vorübergehend) (tcp: 139, 445; udp: 137, 138)
  • Routingeinstellungen:
    • Defaultroute: 10.27.64.1
    • zusätzliche Routingeinträge für Veritas Netbackup
      • 10.20.60.10/32 = backserv0.cc.private.hm.edu --> 10.27.95.254
      • 10.20.60.11/32 = backserv1.cc.private.hm.edu --> 10.27.95.254
      • 10.20.60.12/32 = backserv2.cc.private.hm.edu --> 10.27.95.254

Firewalleinstellungen

YaST bietet seit SuSE 9.x gute Möglichkeiten die Einstellungen für die Firewall durchzuführen.
Jedoch gibt es drei Aspekte, die Custom-Regeln nötig machen:

  • Dynamisch vergebene IP-Adresse - ohne bekannte MAC-Adresse - werden von der Firewall blockiert.
    192.168.206.10-192.168.206.25
    Der Nutzer des nicht-autorisierten Rechners wird aber informiert, sobald ein Webbrowser geöffnet wird, denn jeglicher Port 80-Verkehr wird auf error.ti.ee.fhm.edu (192.168.206.249:80) weitergeleitet, auf dem sich eine Fehlerseite befindet.
  • Als Testumgebung für eventl. infizierte Rechner dient der Adressbereich 192.168.206.26-192.168.206.29. Diese werden fest mithilfe der MAC-Adresse eingetragen.
    Diese Rechner dürfen normal arbeiten, nur gewisse Ports 25, 135 werden blockiert.
  • Um Dateien vom zentralen Backup wiederherstellen zu können, muss die interne Adresse des ti1.ti.ee.fhm.edu (192.168.206.250) für das Fachbereichsnetz in die "offizielle" Adresse ti1.da.private.hm.edu übersetzt werden (SNAT-Regel).

Um diese Aspekte durchführen zu können, wird die Firewall um Custom-Regeln ergänzt.
Dazu wird in /etc/sysconfig/SuSEfirewall2 folgende Variable gesetzt:

...
## Type:        string
#
# 25.)
# Do you want to load customary rules from a file?
#
# This is really an expert option. NO HELP WILL BE GIVEN FOR THIS!
# READ THE EXAMPLE CUSTOMARY FILE AT /etc/sysconfig/scripts/SuSEfirewall2-custom
#
#FW_CUSTOMRULES="/etc/sysconfig/scripts/SuSEfirewall2-custom"
FW_CUSTOMRULES="/etc/sysconfig/scripts/SuSEfirewall2-custom"
...

Die Datei /etc/sysconfig/scripts/SuSEfirewall2-custom wird wie folgt ergänzt:

...
fw_custom_after_antispoofing() { # could also be named "before_port_splitting()"
    # these rules will be loaded after the anti-spoofing and icmp handling
    # but before any IP protocol or TCP/UDP port allow/protection rules
    # will be set.
    # You can use this hook to allow/deny certain IP protocols or TCP/UDP
    # ports before the SuSEfirewall2 generated rules are hit.

#example: always filter backorifice/netbus trojan connect requests and log them.
#for target in LOG DROP; do
#    for chain in input_ext input_dmz input_int forward_int forward_ext forward_dmz; do
#        iptables -A $chain -j $target -p tcp --dport 31337
#        iptables -A $chain -j $target -p udp --dport 31337
#        iptables -A $chain -j $target -p tcp --dport 12345:12346
#        iptables -A $chain -j $target -p udp --dport 12345:12346
#    done
#done

##### CUSTOM-BEGIN wt-01/2006 #####

for chain in input_int forward_int; do
### first of all allow dns queries from the dynamic ip range to ns.ti.ee.fhm.edu
    iptables -A $chain -j ACCEPT -m iprange \ 
       --src-range 192.168.206.10-192.168.206.25 \ 
       --dst 192.168.206.250 -p udp --dport 53
###
### drop all except dport 80 for the dynamic given ip addresses
###
    iptables -A $chain -j ACCEPT -m iprange \ 
       --src-range 192.168.206.10-192.168.206.25 -p tcp --dport 80
    iptables -A $chain -j LOG -m iprange \ 
       --src-range 192.168.206.10-192.168.206.25 \ 
       --log-tcp-options --log-ip-options \ 
       --log-prefix 'custom-INP-DYNAMIC-IP ' \ 
       -p all
    iptables -A $chain -j DROP -m iprange \ 
       --src-range 192.168.206.10-192.168.206.25 \ 
       -p all
###
### drop only some dports for a certain address range
#
# first for tcp proto
#
    iptables -A $chain -j LOG -m iprange \ 
       --src-range 192.168.206.26-192.168.206.29 \ 
       -m multiport -p tcp \ 
       --dports 25,135 --log-level warning \ 
       --log-tcp-options --log-ip-options --log-prefix 'custom-INP-BLOCKED-PC '

    iptables -A $chain -j DROP -m iprange \ 
       --src-range 192.168.206.26-192.168.206.29 \ 
       -m multiport -p tcp --dports 25,135
#
# now the same for udp proto
#
    iptables -A $chain -j LOG -m iprange \ 
       --src-range 192.168.206.26-192.168.206.29 \ 
       -m multiport -p udp \ 
       --dports 25,135 --log-level warning \ 
       --log-tcp-options --log-ip-options --log-prefix 'custom-INP-BLOCKED-PC '

    iptables -A $chain -j DROP -m iprange \ 
       --src-range 192.168.206.26-192.168.206.29 \ 
       -m multiport -p udp --dports 25,135

done

### after dropping all except dport 80 for the dynamic given ip addresses
###   redirect all of dport 80 to address 192.168.206.249:80
    iptables -A PREROUTING -j DNAT -t nat -i eth1 -m iprange \ 
       --src-range 192.168.206.10-192.168.206.25 -p tcp --dport 80 \ 
       --to-destination 192.168.206.249:80

##### CUSTOM-END #####

    true
}

...

fw_custom_before_masq() { # could also be named "after_port_handling()"
    # these rules will be loaded after the IP protocol and TCP/UDP port
    # handling, but before any IP forwarding (routing), masquerading
    # will be done.
    # NOTE: reverse masquerading is before directly after
    #       fw_custom_before_port_handling !!!!
    # You can use this hook to ... hmmm ... I'm sure you'll find a use for
    # this ...

##### CUSTOM-BEGIN wt-01/2006 #####

# requests done from ti1.ti.ee.fhm.edu will be masked as
#   ti1.da.private.hm.edu this makes netbackup's bp/bplist etc.
#   working
    iptables -A POSTROUTING -t nat -j SNAT -o eth1 \ 
        -s 192.168.206.250 --to-source 10.27.69.129

##### CUSTOM-END #####
    true
}

...

Die oben eingetragene SNAT-Regel stellt den ti1.ti.ee.fhm.edu im FB-Netz als ti1.da.private.hm.edu dar. Um die gewünschten Dienste vom FB-Netz aus erreichbar zu machen, müssen aber auch entsprechende ACCEPT- und DNAT-Regel eingetragen werden.
Diese werden über Yast --> Firewall --> Masquerading eingetragen.

 YaST @ gateway                                     Mit F1 kommen Sie zur Hilfe 
                                                                                
 l--------------------k Konfiguration der Firewall: Netzwerk-Masquerading       
 x---Start            x lMasquerading---------------------------------------k   
 x---Schnittstellen   x x[x] Masquerading fur Netzwerke                     x   
 x---Erlaubte Dienste x m---------------------------------------------------j   
 x---Masquerading     x                                                         
 x---Broadcast        x lAnfragen an Masqueraded IP umleiten----------------k   
 x---IPsec-Unterstutzux xl-------------------------------------------------kx   
 x---Protokollierungs-x xxQuell-NetzwerkxProtokollxBenotigte IPxBenotigter xx   
 x                    x xx0/0           xtcp      x10.27.69.129xssh (22)   xx   
 x                    x xx10.20.60.0/24 xtcp      x10.27.69.129x13782      xx   
 x                    x xx10.20.60.0/24 xtcp      x10.27.69.129x13783      xx   
 x                    x xx10.27.0.0/16  xtcp      x10.27.69.129xsmtp (25)  xx   
 x                    x xx10.27.0.0/16  xtcp      x10.27.69.129xmicrosoft-dxx   
 x                    x xx10.27.0.0/16  xtcp      x10.27.69.129xnetbios-ssnxx   
 x                    x xx10.20.60.0/24 xtcp      x10.27.69.129x13720      xx   
 x                    x xx10.20.60.0/24 xtcp      x10.27.69.129x13721      xx   
 x                    x xx10.27.0.0/16  xudp      x10.27.69.129xnetbios-ns xx   
 x                    x xx10.27.0.0/16  xudp      x10.27.69.129xnetbios-dgmxx   
 x                    x xmt------------------------------------------------jx   
 x                    x x              [Hinzufugen][Entfernen]              x   
 x                    x m---------------------------------------------------j   
 mt-------------------j                                                         
                        [Zuruck]             [Abbrechen]             [Weiter]   

Diese Einstellungen werden zu Einträgen in /etc/sysconfig/SuSEfirewall2, wie im
Folgenden dargestellt:
...
## Type:        yesno
## Default:     no
#
# 5.)
# Should routing between the internet, dmz and internal network be
# activated?
#
# Set this to "yes" if you either want to masquerade internal
# machines or allow access to the dmz (or internal machines, but
# this is not a good idea).
#
# This option overrides IP_FORWARD from
# /etc/sysconfig/network/options
#
# Setting this option one alone doesn't do anything. Either activate
# masquerading with FW_MASQUERADE below if you want to masquerade
# your internal network to the internet, or configure FW_FORWARD to
# define what is allowed to be forwarded. You also need to define
# internal or dmz interfaces in FW_DEV_INT or FW_DEV_DMZ.
#
# defaults to "no" if not set
#
FW_ROUTE="yes"

## Type:        yesno
## Default:     no
#
# 6.)
# Do you want to masquerade internal networks to the outside?
#
# Requires: FW_DEV_INT or FW_DEV_DMZ, FW_ROUTE, FW_MASQ_DEV
#
# "Masquerading" means that all your internal machines which use
# services on the internet seem to come from your firewall. Please
# note that it is more secure to communicate via proxies to the
# internet than to use masquerading.
#
# This option is required for FW_MASQ_NETS and FW_FORWARD_MASQ.
#
# defaults to "no" if not set
#
FW_MASQUERADE="yes"

...
## Type:        string
#
# 14.)
# Which services accessed from the internet should be allowed to masqueraded
# servers (on the internal network or dmz)?
# Requires: FW_ROUTE
#
# With this option you may allow access to e.g. your mailserver. The
# machines must be in a masqueraded segment and may not have public
# IP addesses! Hint: if FW_DEV_MASQ is set to the external interface
# you have to set FW_FORWARD from internal to DMZ for the service as
# well to allow access from internal!
#
# Please note that this should *not* be used for security reasons!
# You are opening a hole to your precious internal network. If e.g.
# the webserver there is compromised - your full internal network is
# compromised!
#
# Format: space separated list of
#    <source network>,<ip to forward to>,<protocol>,<port>[,redirect port,[destination ip]]
#
# Protocol must be either tcp or udp
#
# Examples: - "4.0.0.0/8,10.0.0.10,tcp,80" forward all tcp request on
#             port 80 coming from the 4.0.0.0/8 network to the
#             internal server 10.10.0.10
#           - "4.0.0.0/8,10.0.0.10,tcp,80,81" forward all tcp request on
#             port 80 coming from the 4.0.0.0/8 network to the
#             internal server 10.10.0.10 on port 81
#           - "200.200.200.0/24,10.0.0.10,tcp,80,81,202.202.202.202"
#             the network 200.200.200.0/24 trying to access the
#             address 202.202.202.202 on port 80 will be forwarded
#             to the internal server 10.0.0.10 on port 81
#
# Note: du to inconsitent iptables behaviour only port numbers are possible but
# no service names (https://bugzilla.netfilter.org/bugzilla/show_bug.cgi?id=273)
#
FW_FORWARD_MASQ="0/0,192.168.206.250,tcp,22,22,10.27.69.129  
10.20.60.0/24,192.168.206.250,tcp,13782,13782,10.27.69.129  
10.20.60.0/24,192.168.206.250,tcp,13783,13783,10.27.69.129  
10.27.0.0/16,192.168.206.250,tcp,25,25,10.27.69.129  
10.27.0.0/16,192.168.206.250,tcp,445,445,10.27.69.129  
10.27.0.0/16,192.168.206.250,tcp,139,139,10.27.69.129  
10.20.60.0/24,192.168.206.250,tcp,13720,13720,10.27.69.129  
10.20.60.0/24,192.168.206.250,tcp,13721,13721,10.27.69.129  
10.27.0.0/16,192.168.206.250,udp,137,137,10.27.69.129  
10.27.0.0/16,192.168.206.250,udp,138,138,10.27.69.129
0/0,192.168.206.252,tcp,22,22,10.27.69.192"

...

Praktikumsserver ti1.ti.ee.fhm.edu

Zentrale Komponente des Praktikumsnetz ist der Server ti1.ti.ee.fhm.edu.
Für den Praktikumsbetrieb sind folgende Dienste auf dem Server notwendig.

DHCP

Zur Vereinfachung der Clientinstallation wird die IP-Adresse im LMS_LSW-Netz automatisch vergeben. Die IP-Nummern werden anhand einer MAC-Adresse-Liste vergeben.

DNS

NTP

Authentifizierung via LDAP

Samba-Fileserver