Policy Exterminator

Aus FS-MNI-Wiki
Wechseln zu: Navigation, Suche

Inhaltsverzeichnis

Allgemein

Konzept

Grundgedanke dieser Rechnerimplementierung war die Bereitstellung einer Netzwerk-Infrastruktur für die Fachschaft MNI.
  • Netzwerkmanagement
Der Rechner Exterminator stellt alle für ein lauffähiges Netzwerk notwendigen Dienste zur Verfügung. Die an den Rechner über ein 24-Port Patchpanel angebundenen Laptop-Arbeitsplätze werden über einen DHCP-Server mit IP's versorgt.
  • Zugangskontrolle/Gateway
Der Rechner fungiert ebenfalls als Vermittler zwischen dem fachschaftsinternen Netzwerk und dem FH-Netzwerk. Gesichert wird das Netzwerk, sowohl von intern, als auch von extern durch eine Firewall.
  • Datenstorage
Aufgrund der hohen Nachfrage, werden auf dem Server Klausuren, sowie CD-Images zu verschiedensten Programmen und Betriebssystemen gespeichert (z.B. Microsoft Academic Licence, Gentoo, Ubuntu, etc.). Dieser Datenbestand ist jedoch nur fachschaftsintern abzurufen.
  • Community Services
Derzeit bietet die Fachschaft MNI einen Teamspeak-Service zur Verfügung. Des weiteren bietet die Fachschaft nach 17.00 Uhr weitere Dienste (z.B. einen Farcry Server) an.

Netzplan

(feffi + roessi)


Hardware

Um als Server für die unten näher beschriebenen Dienste zu fungieren, wurde der Rechner zukunftssicher ausgelegt. Verbaut wurde ein AMD 64 Prozessor mit einem aktuellen nForce-3 Board und 1 GB Haupspeicher. Ebenfalls wurde hierbei ein ausfallsicheres und schnelles RAID-System (siehe unten) verbaut. Das ganze findet Platz in einem 4 HE / 19" Industriegehäuse, daß in unserem Serverschrank als Einschub untergebracht ist. Für ausreichend Lufttransport sorgen sechs in Reihe oder parallel schaltbare 120mm Papst-Lüfter (jeweils 2x3 oder 6 bei halber Last). Geplant ist die Anbindung der Lüfter an ein CMC-Steuergerät zur Überwachung der Temperatur- und Stromdaten sowie der dynamischen Steuerung der Lüfter.
ProzessorAMD Athlon64
MainboardGigabyte GA8N nForce-3
Speicher2x512 MB DDR 400 2,5CL
Netzwerk
2x DEC FastEthernet 21140
1x RealTek 8169 Gigabit Ethernet
GrafiknVidia GeForce 256 SDR
Server "Exterminator" im fertigen Zustand
Exterminator mit Patchpanel

easyRAID M2B

Das im Exterminator verbaute Raid-System wurde aufgrund der schlechten Erfahrungen mit Hardwaredefekten und Datenverlust in der Vergangenheit angeschafft. Die zweite Platte des RAID-1 Verbundes wird in regelmäßigen Abständen (momentan jeweils monatlich) ausgetauscht, abgeglichen und im Schrank sicher verschlossen. Hierdurch wird eine sehr gute Ausfallsicherheit gewährleistet. Das easyRaid wurde aufgrund seines hardwarenahen und betriebssystemunabhängigen Designs gewählt.
Prozessor8032 Microprocessor
Host InterfaceATA-133/UDMA133
Host Transfer Rate133 MB/s
RAID-Level1
Harddisk Drives2x ATA-133(1"height), optional 2x SATA
HDD Selection ModeMaster, Slave
Host RequirementsHost independent
Data Rebuild after Drive FailureAutomatic Data Regeneration
Fault MonitoringHDDs, Overheating, Fan
easyRAID M2B
easyRAID M2B im eingebauten Zustand

System allgemein

Der Server ist mit einem Gentoo-2005.0 AMD-64 (multilib) System ausgestattet. Die Partitionierung des Systems ist zum einen durch statische Partitionen, zum anderen durch ein LVM2-System geregelt. Die Partitionierung des Systems sieht momentan folgende Partitionen vor:

Grundinstallation

Zu Grundinstallation wurde aufgrund der guten Unterstützung einer 64-Bit Architektur die Gentoo AMD-64 LiveCD verwendet. Alle Installationen basieren auf einem Gentoo-64-Bit Grundsystem mit MultiLib Unterstützung für 32-Bit Anwendungen. Genauere Dokumentation, sowie Changelog sind ebenfalls hier im Wiki unter Changelog_Exterminator zu finden.

Partitionierung / LVM-2

  • /dev/hda1 enthält die swap Partition,
  • /dev/hda2 enthält die root Partition,
  • /dev/hda3 beinhaltet ein LVM2-System mit folgender Gruppenaufteilung:
    • var_lv entspricht /var (4 GB)
    • vartmp_lv entspricht /var/tmp (10 GB)
    • varlog_lv entspricht /var/log (2 GB)
    • tmp_lv entspricht /tmp (1 GB)
    • home_lv entspricht /home (10 GB)
    • www_lv entspricht /var/www (4 GB)
    • usr_lv entspricht /usr (10 GB)
    • shares_lv entspricht /usr (10 GB)

Alle virtuellen Volumes sind hierbei mit ext3 (journaled ext2) formatiert, um durch die Verwendung von Transaktionunterstützung auf Dateisystemebene die Fehlertoleranz weiter zu erhöhen.

lvdisplay

exterminator ~ # lvdisplay

 --- Logical volume ---
 LV Name                /dev/vg01/usr_lv
 VG Name                vg01
 LV UUID                QUWGAd-HVKH-t9wf-axn8-6ldx-NYZO-wLc0t1
 LV Write Access        read/write
 LV Status              available
 # open                 1
 LV Size                10.00 GB
 Current LE             320
 Segments               1
 Allocation             next free (default)
 Read ahead sectors     0
 Block device           254:0
 --- Logical volume ---
 LV Name                /dev/vg01/tmp_lv
 VG Name                vg01
 LV UUID                575m8R-VqT0-XxQ7-OaGF-wWVj-MRat-FfjBZj
 LV Write Access        read/write
 LV Status              available
 # open                 1
 LV Size                1.00 GB
 Current LE             32
 Segments               1
 Allocation             next free (default)
 Read ahead sectors     0
 Block device           254:1
 --- Logical volume ---
 LV Name                /dev/vg01/vartmp_lv
 VG Name                vg01
 LV UUID                IUN7f2-g8v8-6A0Z-veof-0p8N-Zuln-A64MC1
 LV Write Access        read/write
 LV Status              available
 # open                 1
 LV Size                10.00 GB
 Current LE             320
 Segments               1
 Allocation             next free (default)
 Read ahead sectors     0
 Block device           254:2
 --- Logical volume ---
 LV Name                /dev/vg01/varlog_lv
 VG Name                vg01
 LV UUID                adZtkF-6rAX-KTi9-jTu7-faH1-T6Fe-4sdPH3
 LV Write Access        read/write
 LV Status              available
 # open                 1
 LV Size                2.00 GB
 Current LE             64
 Segments               1
 Allocation             next free (default)
 Read ahead sectors     0
 Block device           254:3
 --- Logical volume ---
 LV Name                /dev/vg01/var_lv
 VG Name                vg01
 LV UUID                6qmvhx-iclj-6rgb-6fwF-nTiw-LhtN-8cZVcH
 LV Write Access        read/write
 LV Status              available
 # open                 1
 LV Size                4.00 GB
 Current LE             128
 Segments               1
 Allocation             next free (default)
 Read ahead sectors     0
 Block device           254:4
 --- Logical volume ---
 LV Name                /dev/vg01/home_lv
 VG Name                vg01
 LV UUID                b3RQyS-zqvQ-ROGH-Flq9-spKM-oc5g-cXKDgq
 LV Write Access        read/write
 LV Status              available
 # open                 1
 LV Size                10.00 GB
 Current LE             320
 Segments               1
 Allocation             next free (default)
 Read ahead sectors     0
 Block device           254:5
 --- Logical volume ---
 LV Name                /dev/vg01/shares_lv
 VG Name                vg01
 LV UUID                WDWPWy-tLrq-xM4u-gpXM-0gbW-onDA-3nCVZv
 LV Write Access        read/write
 LV Status              available
 # open                 1
 LV Size                80.00 GB
 Current LE             2560
 Segments               1
 Allocation             next free (default)
 Read ahead sectors     0
 Block device           254:6
 --- Logical volume ---
 LV Name                /dev/vg01/www_lv
 VG Name                vg01
 LV UUID                BOEEKj-Y53u-w2Dv-0sed-r4TF-7iPf-HPw1na
 LV Write Access        read/write
 LV Status              available
 # open                 1
 LV Size                4.00 GB
 Current LE             128
 Segments               1
 Allocation             next free (default)
 Read ahead sectors     0
 Block device           254:7


Netzwerk

Die 3 Netzwerkkarten sind mittels iproute2 konfiguriert. Das Grunddesign basiert auf zwei getrennten Netzwerken (physikalische und logische Trennung).
modules="iproute2"

config_eth0=(
       "212.201.7.187/24 brd 212.201.7.255"
       "192.168.187.150/24 brd 192.168.187.255 label eth0:0"
)

Dieses Netzwerkdevice ist die Schnittstelle zum Netzwerk der Fachhochschule (192.168.187.0/24) und zum DFN (212.201.7.0/24).

config_eth1=(
       "10.1.1.1/16 brd 10.1.255.255"
)

Das fachschaftsinterne Netzwerk wird über das Netzwerkdevice eth1 geleitet (10.1.1.0/16). Als privates Netzwerk der Fachschaft ist dieses Netz sowohl physikalisch als auch durch eine Firewall vom externen Netzwerk getrennt.

config_eth2=(
       "172.20.1.254/16 brd 172.20.255.255"
)

routes_eth0=(
       "default via 212.201.7.1"
)

Alle nicht lokal auflösbaren Netzanfragen werden an die Adresse 212.201.7.1 (Standardgateway) weitergeleitet.

Services

Shorewall

Wir setzen auf dem Server als Schnittstelle zu iptables das Framework shorewall ein. Dieses ermöglicht auch in relativ komplexen Netzen einen gut konfigurierten Packetfilter.

Die Konfiguration gliedert logisch in folgende Teilabschnitte:

Welche Zonen gibt es aus Sicht des Servers?

zones

# externes FH Netzwerk (212.201.7.187)
extfh   ext_FH-Netz     Oeffentliches FH Netz

# privates FH Netz (192.168.187.150)
intfh   int_FH-Netz     Privates FH Netz

# internes Fachschaftsnetz (Stationaere PCs und Laptops)
fs      Fachschaft      angemeldete Fachschafts Benutzer

Wie sind die Netzwerkschnittstellen konfiguriert und welche globalen Richtlinien, wie tcpflags, nosmurfs, etc. gibt es

interfaces

-       eth0            212.201.7.255,192.168.187.255
-       eth1            10.1.255.255

hosts

# eth0
intfh           eth0:192.168.187.0/24           tcpflags
extfh           eth0:0.0.0.0/0                  tcpflags,routeback

# eth1
fs              eth1:10.1.0.0/16                tcpflags

Welche Defaultpolicy gibt es in der Kommunikation zwischen den einzelnen Netzsegmenten?

policy

# default policies; exceptions handled in /etc/shorewall/rules
$FW             all             ACCEPT
fs              $FW             ACCEPT
fs              all             DROP

# block all incoming traffic from internet
extfh           all             DROP
intfh           all             DROP

#
# THE FOLLOWING POLICY MUST BE LAST
#
all             all             REJECT

Da der Server ein Comunityserver ist, gibt es zwei Sonderregelsätze. Dies bedeutet, dass während des normalen Tagesgeschäfts Spieler schlechte Karten haben, da die meisten Gameports geschlossen sind. Erst ab 17.00Uhr wird der Regelsatz dynamisch erweitert. Diese Aufabe übernehmen kleinere Trivialscripte, die per cron abgearbeitet werden. Sie sollen hier nicht näher erläutert werden.

rules default

ACCEPT  all             all             icmp    -       -               -       3/s
ACCEPT  extfh           $FW             tcp     ssh
ACCEPT  extfh           $FW             tcp     http
ACCEPT  extfh           $FW             tcp     https

ACCEPT  fs              $FW             tcp     ssh
ACCEPT  fs              $FW             tcp     mysql
ACCEPT  fs              extfh           tcp     3128
ACCEPT  fs              extfh           tcp     http
ACCEPT  fs              extfh           tcp     8040
ACCEPT  fs              extfh           tcp     8080
ACCEPT  fs              extfh           tcp     https
ACCEPT  fs              extfh           tcp     ssh
ACCEPT  fs              extfh           tcp     pop3
ACCEPT  fs              extfh           tcp     pop3s
ACCEPT  fs              extfh           tcp     imap
ACCEPT  fs              extfh           tcp     imaps
ACCEPT  fs              extfh           tcp     cvspserver
ACCEPT  fs              extfh           tcp     whois
ACCEPT  fs              extfh           tcp     rsync
ACCEPT  fs              extfh           udp     ntp
ACCEPT  fs              extfh           tcp     nntp
ACCEPT  fs              extfh           tcp     smtp
ACCEPT  fs              extfh           tcp     submission
ACCEPT  fs              extfh           tcp     smtps

# MLDonkey Web-Frontend
ACCEPT  fs              extfh           tcp     4080

# OpenPGP Key Protocol
ACCEPT  fs              extfh           tcp     hkp

# RTSP fuer Realplayer
ACCEPT  fs              extfh           udp     554
ACCEPT  fs              extfh           udp     7070
ACCEPT  fs              extfh           tcp     554
ACCEPT  fs              extfh           tcp     7070

# icq/aol
ACCEPT  fs              extfh           tcp     5190

# jabber
ACCEPT  fs              extfh           tcp     5222:5223

# msn
ACCEPT  fs              extfh           tcp     1863

# yahoo
ACCEPT  fs              extfh           tcp     5050

# cvsup (fuer FreeBSD)
ACCEPT  fs              extfh           tcp     5999

# irc
ACCEPT  fs              extfh           tcp     6666:6667
ACCEPT  fs              extfh           tcp     113

# sip
ACCEPT  fs              extfh           tcp     5060
ACCEPT  fs              extfh           udp     5060

# vnc
ACCEPT  fs              extfh           tcp     5800:5810
ACCEPT  fs              extfh           tcp     5900:5910

# MS Remote Desktop
ACCEPT  fs              extfh           tcp     3389
ACCEPT  fs              extfh           udp     3389

# ftp
ACCEPT  fs              extfh           tcp     ftp,ftp-data

# online dict
ACCEPT  fs              extfh           tcp     2628

# SVN
ACCEPT  fs              extfh           tcp     3690

# dynamic port range
ACCEPT  fs              extfh           tcp     6000:7000
ACCEPT  fs              extfh           udp     6000:7000

# Teamspeak
ACCEPT  extfh           $FW             tcp     23421
ACCEPT  extfh           $FW             udp     8767
ACCEPT  fs              $FW             udp     8767
ACCEPT  fs              $FW             tcp     14534

# OpenVPN
ACCEPT  fs              extfh           udp     1194

# Testing
# FarCry
ACCEPT  extfh           $FW             udp     1024
ACCEPT  fs              $FW             udp     1024
ACCEPT  fs              $FW             tcp     4000
ACCEPT  fs              $FW             udp     4000
ACCEPT  extfh           $FW             udp     5678
ACCEPT  fs              $FW             udp     5678
ACCEPT  extfh           $FW             udp     40000:42999
ACCEPT  fs              $FW             udp     40000:42999
ACCEPT  extfh           $FW             udp     41005,41006,44000,49001
ACCEPT  fs              $FW             udp     41005,41006,44000,49001
ACCEPT  extfh           $FW             udp     49124
ACCEPT  fs              $FW             udp     49124

#############################################
# LAN Party Zeugs (added by JZ, 04.04.2005) #
#############################################

# Steam generell
ACCEPT  fs              extfh           udp     1200
ACCEPT  fs              extfh           tcp     10000
ACCEPT  fs              extfh           tcp     5273
ACCEPT  fs              extfh           tcp     27000:27015
ACCEPT  fs              extfh           tcp     27030:27039

#ACCEPT extfh:192.168.187.198   extfh   all

ACCEPT  extfh:$AP_IPS           $FW             tcp     ssh
ACCEPT  extfh:$AP_IPS           extfh           tcp     3128
ACCEPT  extfh:$AP_IPS           extfh           tcp     http
ACCEPT  extfh:$AP_IPS           extfh           tcp     8040
ACCEPT  extfh:$AP_IPS           extfh           tcp     8080
ACCEPT  extfh:$AP_IPS           extfh           tcp     https
ACCEPT  extfh:$AP_IPS           extfh           tcp     ssh
ACCEPT  extfh:$AP_IPS           extfh           tcp     pop3
ACCEPT  extfh:$AP_IPS           extfh           tcp     pop3s
ACCEPT  extfh:$AP_IPS           extfh           tcp     imap
ACCEPT  extfh:$AP_IPS           extfh           tcp     imaps
ACCEPT  extfh:$AP_IPS           extfh           tcp     cvspserver
ACCEPT  extfh:$AP_IPS           extfh           tcp     whois
ACCEPT  extfh:$AP_IPS           extfh           tcp     rsync
ACCEPT  extfh:$AP_IPS           extfh           udp     ntp
ACCEPT  extfh:$AP_IPS           extfh           tcp     nntp
ACCEPT  extfh:$AP_IPS           extfh           tcp     smtp
ACCEPT  extfh:$AP_IPS           extfh           tcp     submission
ACCEPT  extfh:$AP_IPS           extfh           tcp     smtps

# MLDonkey Web-Frontend
ACCEPT  extfh:$AP_IPS           extfh           tcp     4080

# OpenPGP Key Protocol
ACCEPT  extfh:$AP_IPS           extfh           tcp     hkp

# icq/aol
ACCEPT  extfh:$AP_IPS           extfh           tcp     5190

# jabber
ACCEPT  extfh:$AP_IPS           extfh           tcp     5222:5223

# msn
ACCEPT  extfh:$AP_IPS           extfh           tcp     1863

# yahoo
ACCEPT  extfh:$AP_IPS           extfh           tcp     5050

# cvsup (fuer FreeBSD)
ACCEPT  extfh:$AP_IPS           extfh           tcp     5999

# irc
ACCEPT  extfh:$AP_IPS           extfh           tcp     6666:6667
ACCEPT  extfh:$AP_IPS           extfh           tcp     113
# sip
ACCEPT  extfh:$AP_IPS           extfh           tcp     5060
ACCEPT  extfh:$AP_IPS           extfh           udp     5060

# vnc
ACCEPT  extfh:$AP_IPS           extfh           tcp     5800:5810
ACCEPT  extfh:$AP_IPS           extfh           tcp     5900:5910

# MS Remote Desktop
ACCEPT  extfh:$AP_IPS           extfh           tcp     3389
ACCEPT  extfh:$AP_IPS           extfh           udp     3389

# ftp
ACCEPT  extfh:$AP_IPS           extfh           tcp     ftp,ftp-data

# online dict
ACCEPT  extfh:$AP_IPS           extfh           tcp     2628

# SVN
ACCEPT  extfh:$AP_IPS           extfh           tcp     3690

# dynamic port range
ACCEPT  extfh:$AP_IPS           extfh           tcp     6000:7000
ACCEPT  extfh:$AP_IPS           extfh           udp     6000:7000

# RTSP fuer Realplayer
ACCEPT  extfh:$AP_IPS           extfh           udp     554
ACCEPT  extfh:$AP_IPS           extfh           udp     7070
ACCEPT  extfh:$AP_IPS           extfh           tcp     554
ACCEPT  extfh:$AP_IPS           extfh           tcp     7070

# Teamspeak
ACCEPT  extfh:$AP_IPS           $FW             udp     8767
ACCEPT  extfh:$AP_IPS           $FW             tcp     14534

# OpenVPN
ACCEPT  extfh:$AP_IPS           extfh           udp     1194

# WPA-RADIUS
ACCEPT  extfh:$AP_IPS           $FW             udp     1812:1814
ACCEPT  extfh:$AP_IPS           $FW             tcp     1812:1814
# WLAN DNS
ACCEPT  extfh:$AP_IPS           $FW             tcp     53
ACCEPT  extfh:$AP_IPS           $FW             udp     53

ACCEPT  extfh:$AP_IPS           fs              all
rules gametime erweitert

# City of Heroes
ACCEPT  fs              extfh           tcp     6994
ACCEPT  fs              extfh           tcp     2106
ACCEPT  fs              extfh           tcp     3128

# World of Warcraft
ACCEPT  fs              extfh           tcp     3724
ACCEPT  fs              extfh           tcp     8086:8087
ACCEPT  fs              extfh           tcp     9081
ACCEPT  fs              extfh           tcp     9090
ACCEPT  fs              extfh           tcp     9097
ACCEPT  fs              extfh           tcp     9100

Als letztes soll hier noch eine sehr wichtige, aber kleine Datei gezeigt werden. Da bei der Konfiguration dieser Firewall immer mal etwas schief gehen kann, benötigt man Sonderrechte. Würde man diese nicht definieren und die Shorewall würde wegen eines Fehlers abbrechen, so wären alle Netze gesperrt und nur der Zugang über Tastatur und Bildschirm des Servers wären noch möglich. Aus diesem Grund gibt es die Datei routestopped.

routestopped

eth0            212.201.7.21    routeback
eth1            10.0.0.0/8      routeback

SSH

Admins FSR

NIS

  • Dokumentation: NIS-Howto
  • Gentoo-Ebuild: net-nds/ypserv
Die interne Benutzerinfrastruktur der Fachschaft für die verschiedenen Unix-Derivate wird mittels NIS zur Verfügung gestellt. Dabei besteht ein Sonderfall für den Fachschafts-Standartbenutzer "fs", der auf dem Server selbst keine echte Login-Shell besitzt. Die Benutzerrechte werden auf den Zielsystemen speziell überschrieben (siehe /etc/passwd und /etc/group). Auf dem Exterminator selbst kann sich der fs-Benutzer nur über eine sog. scponly Shell anmelden, um so Dokumente, wie z.B. Klausuren, ISO CD-Images, etc. herunterzuladen. Der Service läuft über den Portmapper portmap und heißt ypserv. Das Passwortmanagement wird über den Dienst rpc.yppasswd ausgeführt.
Konfiguration:
exterminator / # nisdomainname fsmni
exterminator / # make -s -C /var/yp
Der NIS-Domainname wird bei Gentoo in der Datei /etc/conf.d/domainname eingetragen:
exterminator / # cat /etc/conf.d/domainname

# Copyright 1999-2004 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-src/rc-scripts/etc/conf.d/domainname,v 1.1 2004/11/15 15:43:28 vapier Exp $

# When setting up resolv.conf, what should take precedence?
# If you wish to always override DHCP/whatever, set this to 1.
OVERRIDE=1

# To have a proper FQDN, you need to setup /etc/hosts and /etc/resolv.conf
# properly (domain entry in /etc/resolv.conf, and FQDN in /etc/hosts).
#
DNSDOMAIN="fs.mni.fh-giessen.de"

# This only set what /bin/hostname returns.  If you need to setup NIS, meaning
# what /bin/domainname returns, please see:
#
#   http://www.linux-nis.org/nis-howto/HOWTO/
#
NISDOMAIN="fsmni"

NFS

  • Dokumentation: NFS-Howto
  • Gentoo-Ebuild: net-fs/nfs-utils
Die Verzeichnisse /home und /var/shares/ftp werden für die Maschinen 10.1.1.5, 10.1.1.7 und 10.1.1.8 transparent freigegeben, wobei die Datenübertragung asynchron gehandhabt wird und die root-Berechtigungen geblockt werden. Für die Freigabe /var/shares/ftp wird für alle sonstigen Maschinen die Benutzerstruktur auf den Benutzer nobody, nogroup gesetzt. Der Dienst läuft über den Portmapper portmap und heißt nfsd. Diese Version des NFS-Servers ist Userspace-basiert.
exterminator / # cat cat /etc/exports

# /etc/exports: the access control list for filesystems which may be exported
#               to NFS clients.  See exports(5).

/home                   10.1.1.7(rw,root_squash,async) \
                        10.1.1.5(rw,root_squash,async) \
                        10.1.1.8(rw,root_squash,async)

/var/shares/ftp         10.1.1.7(rw,root_squash,async) \
                        10.1.1.5(rw,root_squash,async) \
                        10.1.1.8(rw,root_squash,async) \
                        *(rw,all_squash,anonuid=65534,anongid=65534,async)

chroot

  • Dokumentation: chroot-Howto
  • Gentoo-Ebuild: sys-apps/coreutils
Die Softwareentwicklung in den letzen 12 Monaten hat große Fortschritte bzgl. einer nativen 64 Bit Umgebung gebracht. Leider sind immer noch einige wenige Services broken, so dass eine Einrichtung einer 32 Bit chroot-Umgebung umumgänglich ist.
Zu diesem Zweck werden folgende Verzeichnisse mit dem mount-Kommando zusätzlich in ein präpariertes Unterverzeichnis gemountet.
Auszug aus der Datei /etc/fstab:
exterminator / # cat /etc/fstab

# chroot-jail
/dev/                 /chroot32/dev              none    bind            0 0
/tmp/                 /chroot32/tmp              none    bind            0 0
/var/tmp/             /chroot32/var/tmp          none    bind            0 0
/home                 /chroot32/home             none    bind            0 0
/root/                /chroot32/root             none    bind            0 0
/usr/portage/         /chroot32/usr/portage      none    bind            0 0
/proc/                /chroot32/proc             none    bind            0 0
/sys/                 /chroot32/sys              none    bind            0 0
Die aus der chroot-Umgebung zu startenden Dienste werden aus dem Wirtssystem mit folgenem Script gestartet:
exterminator / # cat /etc/init.d/chroot32

#!/sbin/runscript
# Copyright 1999-2005 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $

START=/etc/init.d

depend() {
        require net logger
}

start() {
        ebegin "Starting chroot32 services"
        chroot /chroot32/ $START/radiusd start
        chroot /chroot32/ $START/teamspeak2-server start
        chroot /chroot32/ $START/pppoe-server start
        eend $?
}

stop() {
        ebegin "Stopping chroot32 services"
        chroot /chroot32/ $START/radiusd stop
        chroot /chroot32/ $START/teamspeak2-server stop
        chroot /chroot32/ $START/pppoe-server stop
        eend $?
}
Müssen einzelne Services im laufenden System manipuliert werden, so muss der entsprechende Administrator mittels
exterminator / # linux32 chroot /chroot32
in die 32 Bit Umgebung wechseln und die Dienste wie gewohnt behandeln (Konfiguration, Start, Stopp, etc.)

DHCP

Der fachschaftsinterne DHCP-Server wird zum dynamischen und statischen Zuteilen der Netzwerkadressen innerhalb der Fachschaft verwendet. Die Arbeitsplatzrechner der Fachschaft sind gegenüber den einzelnen Laptoparbeitsplätzen mit statischen Einträgen bzw. IP's versehen, um den Zugriff auf diese Rechner zu erleichtern. Den statischen Rechnern wird hierbei eine statische IP mittels Auflösung ihrer MAC-Adressen zugewiesen. Der DHCP-Server ignoriert hierbei alle Anfragen von Clients aus anderen Netzen und weißt jeweils nur die gültigen IP's des internen Fachschaftsnetzes zu.
  • IP-Bereich: 10.1.0.0/16
  • Subnetzmaske: 255.255.0.0
Gateway dieses Netztes bildet, wie o.g. der Rechner Exterminator mit der statischen IP 10.1.1.1. Dieser Rechner bildet ebenfalls den DNS ab. Die Domain fs.mni.fh-giessen.de ist die fachschaftsinterne Netzdomain.
exterminator / # cat /etc/dhcp/dhcpd.conf

authoritative;
log-facility local7;
default-lease-time 5184000;
ignore client-updates;
ddns-update-style none;

#
# Fachschaftsnetz
#
subnet 10.1.0.0 netmask 255.255.0.0 {
 pool {
  range 10.1.2.1 10.1.255.254;
  allow unknown clients;
 }

 #
 # feste IP's für die ständigen Fachschaftsrechner
 #
 host emigrator {
  hardware ethernet 00:07:e9:9d:90:cb;
  fixed-address 10.1.1.2;
 }

 host exmatrikulator {
  hardware ethernet 00:10:dc:27:c9:c6;
  fixed-address 10.1.1.3;
 }

 host evaluator {
  hardware ethernet 00:e0:7d:b7:4e:c4;
  fixed-address 10.1.1.4;
 }

 host emanzipator {
  hardware ethernet 00:00:1c:d1:c1:d9;
  fixed-address 10.1.1.5;
 }

 host eliminator {
  hardware ethernet 00:80:C8:F5:F1:03;
  fixed-address 10.1.1.6;
 }

 host eselator {
  hardware ethernet 00:30:1b:24:fa:ae;
  fixed-address 10.1.1.7;
 }

 host explorator {
  hardware ethernet 00:00:1c:d1:c1:dc;
  fixed-address 10.1.1.8;
 }

 #
 # Netzoptionen
 #
 option routers 10.1.1.1;
 option domain-name "fs.mni.fh-giessen.de";
 option domain-name-servers 10.1.1.1;
 option subnet-mask 255.255.0.0;
}

DNS

  • Dokumentation: DNS-Howto
  • Gentoo-Ebuild: net-dns/bind

Da auf dem Server ein DHCP Dienst läuft und weiterhin eine ganze Reihe von stationären PCs im Raum der Fachschft aufgebaut sind, wird ein Nameserver-Dienst angeboten. Dieser löst Anfragen bzgl. FS-interner Rechner auf und leitet externe Anfragen an einen anderen Nameserver weiter. Als Fallback wie immer die root.hints.

named.conf

//
// Please read /usr/share/doc/bind9/README.Debian for information on the
// structure of BIND configuration files in Debian, *BEFORE* you customize
// this configuration file.
//

options {
        directory "/var/bind";

        // If there is a firewall between you and nameservers you want
        // to talk to, you might need to uncomment the query-source
        // directive below.  Previous versions of BIND always asked
        // questions using port 53, but BIND 8.1 and later use an unprivileged
        // port by default.

//      query-source address 192.168.187.150 port *;
        query-source address 212.201.7.187 port *;

        // If your ISP provided one or more IP addresses for stable
        // nameservers, you probably want to use them as forwarders. 
       // Uncomment the following block, and insert the addresses replacing
       // the all-0's placeholder.

        forwarders {
                192.168.186.83;
         };

//       allow-recursion { 10.1.0.0/16; 10.2.0.0/16; 127.0.0.1; };

        auth-nxdomain no;    // conform to RFC1035

        pid-file "/var/run/named/named.pid";
};

// be authoritative for the localhost forward and reverse zones, and for
// broadcast zones as per RFC 1912

zone "localhost" in {
    type master;
    file "/var/bind/pri/localhost.zone";
};

zone "127.in-addr.arpa" in {
    type master;
    file "/var/bind/pri/127.zone";
};

zone "0.in-addr.arpa" in {
    type master;
    file "/var/bind/pri/0.zone";
};

zone "255.in-addr.arpa" in {
    type master;
    file "/var/bind/pri/255.zone";
};

// add entries for other zones below here

zone "fs.mni.fh-giessen.de" in {
    type master;
    file "/var/bind/pri/fs.mni.fh-giessen.de.zone";
};

zone "1.10.in-addr.arpa" in {
    type master;
    file "/var/bind/pri/10.1.zone";
};

zone "." in {
        type hint;
        file "named.ca";
};

Die Zonendateien sehen wie folgt aus:

10.1.zone

$TTL    5d
@                       IN      SOA     exterminator.fs.mni.fh-giessen.de. fsadmins.listserv.fh-giessen.de. (
                                        2005042802      ; Serial
                                        7d              ; Refresh
                                        4h              ; Retry
                                        14d             ; Expire
                                        3h              ; Negative Cache TTL
                                        )

@                       IN      NS      exterminator.fs.mni.fh-giessen.de.
@                       IN      NS      eliminator.fs.mni.fh-giessen.de.
1.1                     IN      PTR     exterminator.fs.mni.fh-giessen.de.
2.1                     IN      PTR     emigrator.fs.mni.fh-giessen.de.
3.1                     IN      PTR     exmatrikulator.fs.mni.fh-giessen.de.
4.1                     IN      PTR     evaluator.fs.mni.fh-giessen.de.
5.1                     IN      PTR     emanzipator.fs.mni.fh-giessen.de.
6.1                     IN      PTR     eliminator.fs.mni.fh-giessen.de.
7.1                     IN      PTR     eselator.fs.mni.fh-giessen.de.
8.1                     IN      PTR     explorator.fs.mni.fh-giessen.de.
9.1                     IN      PTR     ebbelador.fs.mni.fh-giessen.de.

$GENERATE 1-255 $.2 PTR fsmni-2-$.fs.mni.fh-giessen.de.
$GENERATE 1-255 $.3 PTR fsmni-3-$.fs.mni.fh-giessen.de.
$GENERATE 1-255 $.4 PTR fsmni-4-$.fs.mni.fh-giessen.de.

$GENERATE 1-255 $.255 PTR fsmni-255-$.fs.mni.fh-giessen.de.

fs.mni.fh-giessen.de.zone

$TTL 604800     ; 1 week
@               IN      SOA     exterminator.fs.mni.fh-giessen.de. fsadmins.listserv.fh-giessen.de. (
                                2005042802  ; serial
                                28800      ; refresh (8 hours)
                                7200       ; retry (2 hours)
                                604800     ; expire (1 week)
                                86400      ; minimum (1 day)
                                )
@               IN      NS      exterminator.fs.mni.fh-giessen.de.
@               IN      HINFO   "AMD Athlon(tm) 64 Processor 3000+" "Linux 2.6"
@               IN      TXT     "Master DNS Standort Giessen"

exterminator    IN      A       10.1.1.1
autoupdate      IN      CNAME   exterminator
login           IN      CNAME   exterminator
mysql           IN      CNAME   exterminator
ldap            IN      CNAME   exterminator
;; added by JZ
saturn          IN      A       212.201.7.21

$GENERATE 1-255 fsmni-2-$  A 10.1.2.$
$GENERATE 1-255 fsmni-3-$  A 10.1.3.$
$GENERATE 1-255 fsmni-4-$  A 10.1.4.$
$GENERATE 1-255 fsmni-5-$  A 10.1.5.$
$GENERATE 1-255 fsmni-6-$  A 10.1.6.$
$GENERATE 1-255 fsmni-7-$  A 10.1.7.$
$GENERATE 1-255 fsmni-8-$  A 10.1.8.$
$GENERATE 1-255 fsmni-9-$  A 10.1.9.$
$GENERATE 1-255 fsmni-10-$  A 10.1.10.$
$GENERATE 1-255 fsmni-11-$  A 10.1.11.$

$GENERATE 1-255 fsmni-255-$  A 10.1.255.$

Die Zonen 0.zone und 255.zone sind Softlinks auf die Datei 127.zone. Diese und auch die Datei localhost.zone sind Systemdefaultdateien und sollen hier nicht näher erläutert werden.

NTPD

Der Server bietet alles angeschlossenen Clients die Möglichkeit per NTP die Rechneruhr zu synchronisieren. Konfiguriert werden jedoch kann der NTP-Server nur local. Als externe Zeitsynchronisationsserver werden hierbei die beiden NTP-Server der FH-Gießen und als Fallback-Serverpool pool.ntp.org als de facto Standart.
 exterminator / # cat /etc/ntp.conf

# Name of the servers ntpd should sync with
# Please respect the access policy as stated by the responsible person.
#server         ntp.example.tld         iburst

server ntps1-0.fh-giessen.de
server ntps1-1.fh-giessen.de
server pool.ntp.org
driftfile       /var/lib/ntp/ntp.drift

# To deny other machines from changing the
# configuration but allow localhost:

restrict default nomodify nopeer
restrict 127.0.0.1

# To allow machines within your network to synchronize
# their clocks with your server, but ensure they are
# not allowed to configure the server or used as peers
# to synchronize against, uncomment this line.

restrict 10.1.0.0 mask 255.255.0.0 nomodify nopeer notrap

Teamspeak

  • Dokumentation: Teamspeak Homepage
  • Gentoo-Ebuild: media-sound/teamspeak2-client-bin, media-sound/teamspeak2-server-bin
Der Teamspeak-Server der Fachschaft wurde als Mittel zu Förderung der Gemeinschaft der Fachschaft aufgesetzt. Er erfreut sich zu Zeit besonders abends zunehmneder Beliebtheit. Als Mittel der Kommunikation wird dieses Medium häufig bei gemeinsamen Projekten, aber auch beim gemeinsamen Spiel im Internet benutzt.
Die Accounts der Teilnehmer werden hierbei in einer MySQL-Datenbank vorgehalten. Neue Teilnehmer können sich hierbei zwar am Server anmelden, aber den Standartkanal, das sog. "Atrium" nicht verlassen. Hierdurch wird ein gewisses Maß an Kontrolle erreicht, indem nicht einfach jeder anonyme Teilnehmer Kanäle auf dem Server öffnen und benutzen kann. Ein durch einen der Serveradministratoren freigeschalteter Teilnehmer hat diese Freiheiten, jedoch ebenfalls nur in einem restriktiven Maß, um Mißbrauch bzw. Spam zu vermeiden.
Die derzeitigen Administratoren des Teamspeak-Servers sind:
  • Dominik Weiß (headhunter)
  • Marco Grimm (Heru)
  • Jens Christel (ensj)
  • Patrick Schneider (doc)
  • Christian Rößner (roessi)
  • Kevin Wennemuth (feffi)
  • Mirko Geller (Alerias)
  • Mirko Semler (trxr)
  • Frithjof Klös (kernelkiller)
  • Christoph Müller-Brodmann (tocxic)

Das Passwort, um sich anonym an dem Teamspeak-Server anzumelden lautet: abcd. Um sich registrieren zu lassen, muß ein Administrator anwesend sein, der den Vorgang einleitet.

Subversion

Folgende Projekte werden momentan im Revisionssystem verwaltet:
  • Ausschlaggebender Punkt für den Einsatz eines Revisionssystems war das Aufleben eines Open-Source Projektes. Dieses Projekt wird vollständig auf dem Exterminator entwickelt und verwaltet.
  • Aufgrund der Nachfrage des Fördervereins für Informatik e.V. nach einer Möglichkeit studentische Projekte bei besonderer Leistung zu würdigen, wird momentan Subversion als öffentliches Revisions-Kontrollsystem evaluiert. Hierbei sollen ausgewählte Projekte auf dem Exterminator gehosted werden, wobei die jeweiligen Projektverwalter dedizierten Zugang zu ihrem jeweiligen Projekt erhalten.
  • Ebenfalls wird zur Zeit die Möglichkeit der Speicherung aller Konfigurationsdateien des Exterminators (/etc/*) in Erwägung gezogen.
Einzelne ausgewählte Projekte sind ebenfalls über die Anbindung an den Apache-Webserver öffentlich lesend zugänglich.
exterminator / $ cat /etc/apache2/modules.d/47_mod_dav_svn.conf

<IfDefine SVN>
  <IfModule !mod_dav_svn.c>
    LoadModule dav_svn_module       modules/mod_dav_svn.so
  </IfModule>
  <IfDefine SVN_AUTHZ>
    <IfModule !mod_authz_svn.c>
      LoadModule authz_svn_module     modules/mod_authz_svn.so
    </IfModule>
  </IfDefine>
  <Location /svn>
    DAV svn
    SVNParentPath /var/svnroot
    AuthzSVNAccessFile /etc/svn/svnaccess
    Satisfy Any
    Require valid-user
    AuthType Basic
    AuthName "Subversion repository"
    AuthUserFile /etc/svn/svnpasswd
  </Location>
</IfDefine>
In dieser Datei werden die einzelnen Repositorien und die damit verbundenen Benutzerrechte gelistet.
exterminator / $ cat /etc/svn/svnaccess

[wlan-button:/]
croessner = rw
* = r

[Betriebssysteme1:/]
feffi = rw
ensj = rw
In der Datei /etc/svn/svnpasswd werden hierbei Benutznamen und Passwöter für die Apache-Schnittstelle verwaltet. Für einen anonymen Zugriff über den eigenen subversion TCP/IP Port 3690 muss folgende Konfiguration innerhalb des Repostory-Verzeichnisses im Unterverzeichnis conf existieren:
svnserv.conf:

[global]
anon-access = read
auth-access = write

Postfix

Der Server verfügt über eine Mini-Mailserverkonfiguration. Diese soll lediglich dazu dienen, System-Mails an eine Admin-Mailingliste weiterzuleiten.

Da die Hauptkonfigurationsdatei recht lang ist, zu 99% aber aus Standardwerten besteht, haben wir hier nur die eigentlichen Konfigurationsparameter gelistet:

main.cf

queue_directory = /var/spool/postfix
command_directory = /usr/sbin
daemon_directory = /usr/lib/postfix
mail_owner = postfix
myhostname = fsmni.mni.fh-giessen.de
mydestination = $myhostname, localhost.$mydomain, localhost
unknown_local_recipient_reject_code = 550
mynetworks_style = host
mynetworks = 10.1.0.0/16, 127.0.0.0/8
relay_domains = $mydestination, $mynetworks

Die folgende Zeile ist die entscheidente:

relayhost = [mailserv.fh-giessen.de]
alias_maps = hash:/etc/mail/aliases
alias_database = hash:/etc/mail/aliases
home_mailbox = .maildir/
mail_spool_directory = /var/spool/mail
smtpd_banner = $myhostname ESMTP $mail_name ($mail_version)
local_destination_concurrency_limit = 2
default_destination_concurrency_limit = 20
debug_peer_level = 2
debugger_command =
         PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
         xxgdb $daemon_directory/$process_name $process_id & sleep 5
sendmail_path = /usr/sbin/sendmail
newaliases_path = /usr/bin/newaliases
mailq_path = /usr/bin/mailq
setgid_group = postdrop
html_directory = no
manpage_directory = /usr/share/man
sample_directory = /etc/postfix
readme_directory = /usr/share/doc/postfix-2.1.5-r2/readme

Alle anderen Dateien wurden nicht verändert und sollen deshalb nicht erwähnt werden.

Samba

  • Dokumentation: Samba Howto
  • Gentoo-Ebuild: net-fs/samba
Um den Studenten der Fachschaft MNI alte und aktuelle Klausuren und Software zur Verfügung zu stellen, wurde auf dem Exterminator ein Samba-Fileserver eingerichtet.
Die globale Konfiguration des Samba-Fileservers spezifiziert alle notwendigen Variablen und Einstellungen, die für alle Freigaben gelten. Der Zeichensatz ist aufgrund des Fehlens der Unterstützung von UTF-8 bei Windows-Clients auf ISO8859-15 eingestellt.
[global]
 # Namensgebung
 unix charset = ISO8859-15
 workgroup = FS-MNI
 server string = Samba Server %v
 netbios name = Exterminator
Der Sambaserver ist nur aus dem internen Fachschaftsnetz erreichbar. Die Benutzerberechtigungen werden hierbei aus dem System selbst über /etc/shadow verwaltet. Die Rechtevergabe erfolgt Benutzerweise.
 # Interfaces und Berechtigungen
 interfaces = 10.0.0.0/8
 hosts allow = 10.
 bind interfaces only = Yes
 security = user
 null passwords = yes
 encrypt passwords = yes
 unix password sync = yes
 passwd program = /bin/passwd %u
Das Protokollieren des Samba-Fileservers ist auf flasche Bwenutzeranmeldungen beschränkt. Samba benutzt hierbei nicht das zentrale Syslog, sondern protokolliert selbst.
 # Logging
 map to guest = Bad User
 log level = 1
 log file = /var/log/samba/log.%m
 syslog = no
 panic action = /usr/share/samba/panic-action %d
Die folgenden Optionen sind notwendig, um Windows-clients den Zugang zur samba-Fileserver zu erlauben.
 # Sonstiges
 time server = Yes
 socket options = SO_KEEPALIVE IPTOS_LOWDELAY TCP_NODELAY
Die folgenden Verzeichnisse sind auf dem Fileserver freigegeben:
[fs-user] - Freies Verzeichnis für alle benutzer, die Daten auf den Exterminator speichern wollen.

  comment = User Verzeichnisse fuer Fachschafts-User
  path = /var/shares/ftp/user/
  guest ok = Yes
  writeable = yes
  force group = admin
  force user = fs
  create mask = 2664
  directory mask = 2775
[fsr] - Interne nur für Fachschaftsratsmitglieder zugängliche Freigabe.

  comment = Fachschaftsrat
  path = /var/shares/ftp/rat
  guest ok = no
  writeable = yes
  valid users = @fsr,@admin
  write list = @fsr,@admin
  force user = fsr
  force group = fsr
  create mask = 2664
  directory mask = 2775
[klausuren] - Aktuelles Klausurenarchiv

  comment = Klausurarchiv der Fachschaft MNI
  path = /var/shares/ftp/klausuren
  guest ok = yes
  writeable = no
  valid users = @samba
  write list = @admin
  force user = nobody
  force group = admin
  create mask = 2664
  directory mask = 2775
[klausuren_incoming] - frei beschreibbar, jedoch können einmal hochgeladene Dateien nicht gelöscht werden

  comment = Incoming Verzeichnis für Klausuren
  path = /var/shares/ftp/klausuren_incoming
  guest ok = Yes
  writeable = yes
  valid users = @samba
  write list = @samba
  force group = admin
  force user = fs
  create mask = 2664
  directory mask = 2775
[share] - Hier befindet sich das Downloadangebot (Debian, Gentoo, SuSe, etc.) der Fachschaft

  comment = Download Angebote der Fachschaft MNI
  path = /var/shares/ftp/download/
  guest ok = Yes
  writeable = no
  valid users = @samba
  write list = @admin
  force user = nobody
  force group = admin
  create mask = 2664
  directory mask = 2775

Wireless LAN Acesss Concentrator

(feffi)

Radius

(feffi)

WPA

(feffi)

Ausblicke / Neue Hardware

Mit dem Erhalt von 2 älteren Compaq 19" Serverracks, mit jeweils Dual-Pentium-III Prozessoren, ist die Fachschaft in der Lage die Serverinfrastruktur weiter zu verbessern. Viele Anwendungsmöglichkeiten sind natürlich denkbar, einige sehr vorteilhafte werden hier kurz beschrieben.

(Software Update Server)

  • Dokumentation: Software Update Server Howto
  • Gentoo-Ebuild: none
  • Apache-Mono installiert wird zur Unterstützung für ASP-Seiten in Apache implementiert. Auf Anfrage von Mitarbeitern der FH Giessen-Friedberg wird der Versuch unternommen, einen SUS (Software-Update-Service) für Windows Betriebssysteme zu implemetieren.

Printserver

Über CUPS (Common Unix Print System) soll der derzeitige dedizierte Druckservice ebenfalls auf diesen rechner umziehen. Aufgrund der schlechten Wartungsmöglichkeit durch einen dedizierten Rechner, wird dieser Service zentralisiert auf dem Exterminator migriert.

File-/DB-/System-Backupserver

Der ehemals dedizierte Printserver bekommt die Aufgabe eines File- bzw. DB-Backupservers. Ebenfalls soll dort eine zusätzliche Spiegelung wichtiger Systemdaten hinterlegt werden. Die Backups laufen zeitgesteuert per CRON-Job. Der Zugriff auf diesen Rechner ist nur vom Rechner Exterminator mittel SSH2-Protokoll möglich. Der Rechner wird nicht direkt in das interne Netz eingebunden, um dessen Sicherheit zu erhöhen.

Backup DNS/DHCP

Um eine möglichst hohe Ausfallsicherheit des Gateways zu gewährleisten werden die Services DNS und DHCP ebenfalls redundant auf einem separaten Rechner ausgelagert und synchronisiert. Im Falle eines Ausfalles der Haupt-Gateways kann somit zumindest eine "Grundversorgung" des internen Netzwerks gewährleistet werden.