SELinux/Fehlersuche
- Tipps beim Analysieren von AVC Messages
- Entscheidungsbaum AVC Messages
- SELinux hat drei Modus:
- Enforcing (Durchsetzen)
- Das sollte der Standardmodus sein
- Der Kernel blockiert alle Zugriffe, die nicht explizit erlaubt sind. Die unterbundenen Zugriffe werden im Logsystem AVC (Access Vector Cache) protokolliert, sofern der Schreiber der Policy dies nicht explizit mittels dontaudit verboten hat.
- Permissive (Erlauben)
- Der Kernel protokolliert die Zugriffsverletzungen lediglich, erlaubt sie aber.
- Der Kernel erstellt auch weiterhin ordentlich gekennzeichnete Dateien.
- Es gibt einige wesentliche Unterschiede in der Art und Weise, wie der Kernel die AVC-Nachrichten protokolliert.
1. Der Kernel protokolliert im permissive mode nur die erste Zugriffsverletzung für eine eingesperrte Domäne auf ein einzelnes Objekt, während im enforcing mode jeder einzelne unterbundene Zugriff gemeldet wird. 1. Man erhält viele zusätzliche AVC-Meldungen, die im enforcing mode niemals aufgetreten wären. Wenn beispielsweise eine eingesperrte Domäne keine Berechtigung für ein Verzeichnis und alle Dateien darin besitzt, wird im permissive mode für jeden Zugriff auf Verzeichnis und Dateien eine Nachricht erstelle, während im enforcing mode nur der erste Zugriff auf das Verzeichnis verboten und gemeldet wird.
- Beim Melden von AVC-Meldungen bevorzugen wir die vom 'Messages we would prefer that you report avc messages in enforcing mode. Allerdings ist manchmal der permissive mode notwendig, um alle AVC-Meldungen zu erhalten. Sie können den Kernel mittels des Schalters
enforcing=0
im permissive mode starten. - Sie können
setenforce 0
verwenden, um den permissive mode einzuschalten.setenforce 1
schaltet ihn wieder aus. - Disabled (Deaktiviert)
- Schaltet die SELinux-Umsetzung komplett ab und beendet das Erstellen geeigneter Kennzeichen für die Dateien.
- Sie sollten SELinux nur deaktivieren, wenn Sie es nicht einsetzen wollen. Zum Diagnostizieren von Problemen sollten Sie den permissive mode nutzen.
- Wenn Sie SELinux deaktivieren wollen, müssen Sie in
/etc/selinux/config
die ZeileSELINUX
aufdisabled
ändern. Danach müssen Sie den Rechner neu starten, da SELinux im Kernel läuft. - Wenn Sie danach SELinux wieder aktivieren wollen, müssen Sie die Kennzeichen vom gesamten Dateisystem neu erstellen. Lesen Sie dazu Dateikontexte verwalten
cp
vs.mv
- Das Kommando
cp
erstellt eine neue Datei mit dem Kontext einer evtl. bestehenden Datei oder, wenn nicht, mit dem des Zielverzeichnisses. - Das Kommando
mv
versucht, den Sicherheitskontext der Datei zu erhalten. - Das kann im Dateikontext zu Problemen führen. Sie führen beispielsweise in der targeted policy
cp /etc/resolv.conf /tmp
aus und editieren danach/tmp/resolv.conf
. Danach verschieben Sie dieresolv.conf
mittelsmv /tmp/resolv.conf /etc
zurück nach/etc
. Die Datei hat am Schluss den Sicherheitskontexttmp_t
stattnet_conf_t
. Viele Domänen werden nicht mehr in der Lage sein, auf diese Datei zuzugreifen, was in Fehlern resultiert. Dies können Sie leicht mittelsrestorecon /etc/resolv.conf
reparieren. - AVC-Meldungen
- Manchmal sind die Informationen im auditlog zum einfachen Verständnis zu TOUGH. Meistens starte ich
audit2allow
drüberlaufen, um die Ausgabe zu reinigen. - Audit-Daemon
- In Fedora Core 5/Rawhide hat das Auditsystem einige der AVC-Meldungen nach
/var/log/audit/audit.log
verlegt. Dennoch erscheinen ein paar AVC-Meldungen weiterhin in/var/log/messages
. Normalerweise zeigen diese, dass der Audit-Daemon nicht läuft. - Sie können
ausearch -m avc
ausführen, um die AVC-Meldungen im Auditlog anzuzeigen. Es gibt weitere nützliche Optionen wie-x
, um eine ausführbare Datei zu spezifizieren. Mit der Option-ts
können Sie den Zeitpunkt festlegen, ab dem die Nachrichten ausgegeben werden sollen.
- AVC-Meldungen fehlen
SELinux auditiert manche Meldungen nicht. Es gibt dontaudit
-Regel in den Policies. Üblicherweise sind dies erwartete Verbote und veranlassen die Anwendung nur, einen anderen Kodeteil auszuführen. Allerdings verbergen diese Regeln manchmal auch Fehler. Prior to reference policy you were required to install selinux-policy-targeted-sources and then execute make -C /etc/selinux/targeted/src/policy enableaudit reload
.
Wenn Sie mit den Audit-Meldungen fertig sind, sollten Sie make -C /etc/selinux/targeted/src/policy reload
ausführen. Mit der reference policy müssen Sie das base policy package durch das enableaudit policy package ersetzen: semodule -b /usr/share/selinux/targeted/enableaudit.pp
. Nachdem Sie Ihre Prüfungen abgeschlossen haben, führen Sie noch semodule -b /usr/share/selinux/targeted/base.pp
aus.