Ich studiere die grundlegenden Funktionen von SELinux und würde es nützlich finden, eine Ablehnung auszulösen. Auf meinem Testcomputer wird CentOS 7 ausgeführt, es handelt sich um eine einfache Serverinstallation ohne zusätzliche Dienste, und getenforce gibt "Enforcing" an. Ich war mir also sicher, dass es der Trick sein würde, / root für die ganze Welt lesbar zu machen und zu versuchen, Dateien von dort als nicht privilegierter Benutzer zu lesen. Aber kein glück! Kann mir jemand ein paar Schnelltests vorschlagen? Versuchen, auf Pfade zuzugreifen oder Ports zu öffnen usw.
Im Idealfall suche ich nach einfachen Shell-Befehlen, die ein DAC nicht eingeschränkt hätte, ein MAC jedoch bemerkt und ablehnt. Als solches versuche ich nicht, maßgeschneiderte Programme zu kompilieren oder bestimmte Dienste (wie einen Webserver) zu installieren, um dies zu erreichen. Dies ist wertvoll, da es eine allgemeine und klare Möglichkeit bietet, SELinux in Aktion zu sehen.
Ich habe kein Problem damit, die DAC-Berechtigungen (dh Dateisystemberechtigungen) so zu ändern, dass sie weniger einschränkend sind, als dies im Rahmen eines Tests standardmäßig der Fall wäre.
Antworten:
Um das SELinux-Hilfsprogramm zur Fehlererkennung für Code von Drittanbietern / Entwicklern zu demonstrieren , sehen Sie sich hier einen Speicherschutz-Test an (das erste Codebeispiel hier ändern ):
Kompilieren und Standard anzeigen (nicht abgefangen)Ändern Sie die Booleschen Werte, um das Problem zu beheben:
quelle
Dies zeigt deutlich eine MAC-Richtlinie, bei der ein äquivalenter DAC bei einer Basisinstallation von CentOS 7 umgangen werden könnte.
Standardmäßig (in CentOS zum Zeitpunkt des Schreibens) sind nichtprivilegierte Benutzer ohne Systemberechtigung als die Rolle "unconfined_u" angemeldet. Wir können jedoch unser System so ändern, dass unser nichtprivilegierter Benutzer 'alice' stattdessen in die Rolle 'user_u' versetzt wird. Die Standardrichtlinien können festgelegt werden, um diese Rolle mit nur wenigen zusätzlichen Konfigurationsschritten eindeutig einzuschränken.
Deaktivieren Sie jetzt die Möglichkeit für diese Benutzer, Dateien auszuführen, die sich in ihren Basisverzeichnissen und / tmp befinden. Wieder ist die Standardeinstellung, dieses Verhalten zuzulassen. Dieser Befehl kann einen Moment dauern .
Jetzt (mit unserem nicht privilegierten Benutzer) können wir uns anmelden und versuchen, etwas in einem dieser No-Go-Bereiche auszuführen. Wie Sie sehen, werden wir abgelehnt.
Schließlich können wir das AVC-Protokoll anzeigen, um unsere SELinux-Ablehnung zu sehen.
quelle
Sofern Sie Ihre Richtlinien nicht auf der Registerkarte Boolean von system-config-selinux (oder in / etc / selinux / policy) geändert haben, sollte die Standardeinstellung auf Folgendes reagieren (Hinweis: Möglicherweise möchten Sie auch eine Fehlerbehebung für einen tieferen Tauchgang installieren). :
Starten Sie dann Ihren Webserver neu und versuchen Sie, mit Ihrem Webbrowser auf http: // localhost / ks zuzugreifen . Sie sollten eine "Verbotene" Meldung sehen. Wenn Sie verfolgen
/var/log/audit/audit.log
oder rennenausearch -m avc -ts recent
, sollte die folgende Meldung angezeigt werden:type=AVC msg=audit(1391277951.222:266): avc: denied { read } for pid=1731 comm="httpd" name="ks" dev=sda1 ino=22351 scontext=system_u:system_r:httpd_t:s0 tcontext=unconfined u:object r:default t:s0 tclass=dir
Sie können dann den SELinux-Kontext mit ändern,
chcon -Rv --reference /var/www/html /install/ks
wenn Sie SELinux nicht deaktivieren, aber auf die Ressource zugreifen möchten.EDIT: sorry, hab nicht gesehen, dass du "kein webserver" gesagt hast. Versuchen Sie
chcon -u fake_u <filename>
, ein nicht privilegiertes Konto für eine Systemdatei zu verwenden.quelle
Installieren Sie zwei kleine Pakete - keine Abhängigkeiten
Starten Sie einen FTP-Server
erstelle eine Datei in root's home
Wechseln Sie vom Stammverzeichnis in das FTP-Verzeichnis.
hinweis: verschieben, nicht kopieren, sonst ändert sich der fkontext der datei
Melden Sie sich bei Ihrem FTP-Server als FTP-Client-Benutzer an und versuchen Sie, auf die neue Datei zuzugreifen.
Hinweis: Die automatische Vervollständigung von Registerkarten funktioniert hier nicht
Zeigen Sie die Ablehnung in den Rohprotokollen an
oder wenn du
setroubleshoot*
installiert hastquelle