Das FreeBSD-Handbuch
Zurück | Kapitel 17. Verbindliche Zugriffskontrolle | Weiter

# 17.15. Beispiel 1: Nagios in einer MAC Jail

Die folgende Demonstration setzt eine sichere Umgebung mithilfe verschiedener MAC Module und sorgfältig konfigurierter Richtlinien um. Es handelt sich jedoch nur um einen Test und sollte nicht als Antwort auf jedes Problem in Fragen Sicherheit gesehen werden. Eine Richtlinie nur umzusetzen und dann einfach laufen zu lassen, funktioniert nie und kann eine echte Arbeitsumgebung in eine Katastrophe stürzen.

Bevor es losgeht, muß jedes Dateisystem mit der Option `multilabel`, wie weiter oben beschrieben, markiert werden. Dies nicht zu tun, führt zu Fehlern. Außerdem müssen die Ports `net-mngt/nagios-plugins`, `net-mngt/nagios` und `www/apache13` installiert und konfiguriert sein, so dass sie ordentlich laufen.

## 17.15.1. Erstellen einer Nutzerklasse `insecure`

Beginnen wir die Prozedur mit dem Hinzufügen einer Nutzerklasse in der Datei `/etc/login.conf`:

    insecure:\
    :copyright=/etc/COPYRIGHT:\
    :welcome=/etc/motd:\
    :setenv=MAIL=/var/mail/$,BLOCKSIZE=K:\
    :path=~/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin--
    :manpath=/usr/share/man /usr/local/man:\
    :nologin=/usr/sbin/nologin:\
    :cputime=1h30m:\
    :datasize=8M:\
    :vmemoryuse=100M:\
    :stacksize=2M:\
    :memorylocked=4M:\
    :memoryuse=8M:\
    :filesize=8M:\
    :coredumpsize=8M:\
    :openfiles=24:\
    :maxproc=32:\
    :priority=0:\
    :requirehome:\
    :passwordtime=91d:\
    :umask=022:\
    :ignoretime@:\
    :label=biba/10(10-10):

Zusätzlich fügen wir beim Standardnutzer folgende Zeile hinzu:

    :label=biba/high:

Anschließend muß die Datenbank neu erstellt werden:

    # cap_mkdb /etc/login.conf

## 17.15.2. Boot-Konfiguration

Starten Sie den Rechner noch nicht neu. Fügen Sie zunächst noch die folgenden Zeilen in die Datei `/boot/loader.conf` ein, damit die benötigten Module während des Systemstarts geladen werden:

    mac_biba_load="YES"
    mac_seeotheruids_load="YES"

## 17.15.3. Nutzer einrichten

Ordnen Sie den Superuser `root` der Klasse `default` zu:

    # pw usermod root -L default

Alle Nutzerkonten, die weder `root` noch Systemkonten sind, brauchen nun eine Loginklasse, da sie sonst keinen Zugriff auf sonst übliche Befehle erhalten, wie bspw. vi(1). Das folgende `sh` Skript wird diese Aufgabe erledigen:

    # for x in `awk -F: '($3 >= 1001) && ($3 != 65534) { print $1 }' \
          /etc/passwd`; do pw usermod $x -L default; done;

Verschieben Sie die Nutzer `nagios` und `www` in die `insecure` Klasse:

    # pw usermod nagios -L insecure

    # pw usermod www -L insecure

## 17.15.4. Die Kontextdatei erstellen

Nun muß eine Kontextdatei erstellt werden. Die folgende Beispieldatei soll dazu in `/etc/policy.contexts` gespeichert werden:

    # This is the default BIBA policy for this system.

    # System:
    /var/run                        biba/equal
    /var/run/*                      biba/equal

    /dev                            biba/equal
    /dev/*                          biba/equal

    /var      			biba/equal
    /var/spool                      biba/equal
    /var/spool/*                    biba/equal

    /var/log                        biba/equal
    /var/log/*                      biba/equal

    /tmp      			biba/equal
    /tmp/*      			biba/equal
    /var/tmp   	    		biba/equal
    /var/tmp/*      		biba/equal

    /var/spool/mqueue      	        biba/equal
    /var/spool/clientmqueue     	biba/equal

    # For Nagios:
    /usr/local/etc/nagios
    /usr/local/etc/nagios/*         biba/10

    /var/spool/nagios               biba/10
    /var/spool/nagios/*             biba/10

    # For apache
    /usr/local/etc/apache           biba/10
    /usr/local/etc/apache/*         biba/10

Die Richtlinie erzwingt Sicherheit, indem der Informationsfluß Einschränkungen unterworfen wird. In der vorliegenden Konfiguration kann kein Nutzer, weder `root` noch andere, auf Nagios zugreifen. Konfigurationsdateien und die Prozesse, die Teil von Nagios sind, werden durch unsere MAC vollständig abgegrenzt.

Die Kontextdatei kann nun vom System eingelesen werden, indem folgender Befehl ausgeführt wird:

    # setfmac -ef /etc/policy.contexts /
    # setfmac -ef /etc/policy.contexts /

> Anmerkung: Das obenstehende Dateisystem-Layout kann, je nach Umgebung, sehr unterschiedlich aussehen. Außerdem muß es auf jedem einzelnen Dateisystem ausgeführt werden.

In die Datei `/etc/mac.conf` müssen nun noch diese Änderungen eingetragen werden:

    default_labels file ?biba
    default_labels ifnet ?biba
    default_labels process ?biba
    default_labels socket ?biba

## 17.15.5. Netzwerke einbinden

Tragen Sie die folgende Zeile in die Datei `/boot/loader.conf` ein:

    security.mac.biba.trust_all_interfaces=1

Und das Folgende gehört in Datei `rc.conf` zu den Optionen für die Netzwerkkarte. Falls die Netzwerkverbindung(-en) via DHCP konfiguriert werden, muß man dies nach jedem Systemstart eigenhändig nachtragen:

    maclabel biba/equal

## 17.15.6. Testen der Konfiguration

Versichern Sie sich, dass der Webserver und Nagios nicht automatisch geladen werden und starten Sie den Rechner neu. Prüfen Sie nun, ob `root` wirklich keinen Zugriff auf die Dateien im Konfigurationsverzeichnis von Nagios hat. Wenn `root` den Befehl ls(1) auf `/var/spool/nagios` ausführen kann, ist irgendwas schief gelaufen. Es sollte ein “`permission denied`” Fehler ausgegeben werden.

Wenn alles gut aussieht, können Nagios, Apache und Sendmail gestartet werden - allerdings auf eine Weise, die unserer Richtlinie gerecht wird. Zum Beispiel durch die folgenden Kommandos:

    # cd /etc/mail && make stop && \
    setpmac biba/equal make start && setpmac biba/10\(10-10\) apachectl start && \
    setpmac biba/10\(10-10\) /usr/local/etc/rc.d/nagios.sh forcestart

Versichern Sie sich lieber doppelt, dass alles ordentlich läuft. Wenn nicht, prüfen Sie die Logs und Fehlermeldungen. Verwenden Sie das sysctl(8) Werkzeug um die Sicherheitsrichtlinie sysctl(8) zu deaktivieren und versuchen Sie dann alles noch einmal zu starten.

> Anmerkung: Der Superuser kann den Vollzug der Richtlinie schalten und die Konfiguration ohne Furcht verändern. Folgender Befehl stuft eine neu gestartete Shell herunter:

>     # setpmac biba/10 csh

> Um dies zu vermeiden, werden die Nutzer durch login.conf(5) eingeschränkt. Wenn setpmac(8) einen Befehl außerhalb der definierten Schranken ausführen soll, wird ein Fehler zurückgeliefert. In so einem Fall muß `root` auf `biba/high(high-high)` gesetzt werden.

Zurück | Zum Anfang | Weiter
Das MAC Modul LOMAC | Nach oben | Beispiel 2: User Lock Down

Wenn Sie Fragen zu FreeBSD haben, schicken Sie eine E-Mail an <de-bsd-questions@de.FreeBSD.org>.
Wenn Sie Fragen zu dieser Dokumentation haben, schicken Sie eine E-Mail an <de-bsd-translators@de.FreeBSD.org>.