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/apache22 installiert und konfiguriert sein,
so dass sie ordentlich laufen.
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
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"
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
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 /
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
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
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.
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.
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>.