CentOS7 SELinux scheint sich nicht an MCS-Kategorien zu halten

CentOS7 SELinux scheint sich nicht an MCS-Kategorien zu halten

Problem

Eine Datei, die einer bestimmten SELinux MCS (Multi Category Security)-Kategorie zugeordnet ist, kann von einem Benutzer gelesen werden, der dieser Kategorie nicht zugeordnet ist, was darauf hinweist, dass MCS auf meinem System (mit CentOS7, einer minimalen Installation und SELinux-Forcing ingezieltPolitik ).

Hintergrund

Ich habe mir vor Kurzem einen kleinen virtuellen Server zugelegt, was mich dazu veranlasst hat, mich zum ersten Mal mit der sicheren Systemeinrichtung und dem Umgang mit SELinux zu befassen. Ich beabsichtige, die Anwendungen, die ich auf dem Server ausführen werde, zu trennen, indem ich sie in Docker-Containern ausführe (wobei der Host selbst auf CentOS7 läuft). Ich war erfreut zu erfahren, dass jedem Docker-Container beim Start (standardmäßig) zufällige SELinux-MCS-Kategorien zugewiesen werden, um eine zusätzliche Sicherheitsebene für die Trennung bereitzustellen. Um mich mit der Funktionsweise von SELinux im Allgemeinen und MCS im Besonderen vertraut zu machen, habe ich auf einem meiner Heimcomputer eine VM eingerichtet und ein wenig herumgespielt. Dabei ist mir aufgefallen, dass MCS nicht wie erwartet funktioniert. Entweder übersehe ich etwas Wichtiges oder es liegt irgendwo ein Konfigurationsproblem vor.

Was ich getan habe

Um MCS zu testen, folgte ich den Anweisungen in [0] und [1]. Zuerst stellte ich sicher, dass SELinux tatsächlich läuftStriktModus und mit demgezieltRichtlinie mit sestatus. Unter Einhaltung von [0] habe ich einemcsuser_uSELinux-Benutzer und CentOS-BenutzerJohn,Jana,Abonnieren, die ich dann abgebildet habe aufmcsuser_usemanage loginIch habe den Benutzern außerdem die in [0] aufgeführten Kategorien zugewiesen und bin zu folgendem Ergebnis gekommen :

Login Name | SELinux User | MLS/MCS Range

john | mcsuser_u | s0-s0:c122
jane | mcsuser_u | s0-s0:c123
johnjane | mcsuser_u | s0-s0:c122,123

von semanage login -lund

mcsuser_u | MLS/MCS Level: s0 | MLS/MCS Range: s0-s0:c0.c1023 | SELinux Roles: user_r

aus semanage user -l.

Ich habe das Home-Verzeichnis des BenutzersJohnweltweit lesbar ( chmod 707), angemeldet alsJohnund erstellte eine TextdateiAbonnierenIch habe dann die Kategoriec122zu dieser Datei (immer noch angemeldet alsJohn). Ich konnte auch Kategorie zuweisenc120zur Datei, obwohlJohnist nicht kategorisiert alsc120selbst, was laut [0] nicht möglich sein sollte (ich habe anschließendc120erneut). ls -lZ johntextzeigt die Ausgabe

-rw-rw-r-- john john mcsuser_u:object_r:user_home_t:s0:c122 johntext

Nach dem oben genannten habe ich mich als Benutzer angemeldetJanaund versuchte, die Datei zu lesenAbonnierenmithilfe des catBefehls, was mir auch gelang.

Dies ist für mich ein klares Anzeichen dafür, dass MCS nicht wie erwartet funktioniert (Zugriff auf Objekte einer bestimmten Kategorie wird nur dann gewährt, wenn der Benutzer, der den Zugriff anfordert, derselben Kategorie angehört).

Lösungen?

Ich bin jetzt etwas verwirrt und weiß nicht, wo der Fehler liegt, also wende ich mich an euch, um Rat zu bekommen. Es ist wahrscheinlich nur eine falsche Annahme oder ein Missverständnis meinerseits, aber ich komme im Moment nicht dahinter und es ergibt für mich keinen Sinn.Aus meiner Sicht gibt es folgende Möglichkeiten:

1. Ich muss MCS-Prüfungen manuell aktivieren oder eine andere Richtlinie verwenden

Ich habe keine Informationen darüber gefunden, ob ich die MCS-Unterstützung manuell aktivieren muss und gehe daher davon aus, dass es funktioniert, wenn ich Labels zuweise (basierend auf [1]). Andere Quellen [2] legen nahe, dass MCS aktiviert ist in dergezieltRichtlinie für (zumindest) Fedora und RHEL, woraus ich schließen würde, dass es für CentOS nicht anders ist.

2. Auf meiner Seite liegt eine Fehlkonfiguration vor

Möglicherweise habe ich beim Einrichten der Benutzerkategorien semanage loginoder beim Zuweisen von Kategorien zur Datei einen Fehler gemacht.

3. Es ist einfach kaputt

.. was schlecht wäre

Verweisende Links

0:https://selinux-mac.blogspot.de/2009/06/multi-category-security.html

1:https://www.centos.org/docs/5/html/Deployment_Guide-en-US/sec-mcs-getstarted.html

2:http://selinuxsymposium.org/2006/slides/08-mcs.pdf

Volle sestatusLeistung

SELinux status:                 enabled
SELinuxfs mount:                /sys/fs/selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted
Current mode:                   enforcing
Mode from config file:          enforcing
Policy MLS status:              enabled
Policy deny_unknown status:     allowed
Max kernel policy version:      28

[BEARBEITEN]:

Ich habe gerade dieselben Schritte auf einer VM mit CentOS 6.9 getestet, wo alles wie erwartet funktioniert. Im Moment würde ich daher davon ausgehen, dass entweder ein Fehler in Bezug auf MCS in SELinux unter CentOS vorliegt oder einige nicht dokumentierte Änderungen an der Richtlinie/Konfiguration, die angepasst werden müssten. Ich bin mir noch nicht sicher, welche nächsten Schritte sinnvoll wären, damit es wie erwartet funktioniert.

Antwort1

Anscheinend gab es eine Änderung der SELinux-Richtlinien von CentOS6 zu CentOS7, sodass MCS-Einschränkungen nicht mehr auf alle Typen angewendet werden. Damit ein bestimmter Typ MCS einhält, mcs_constrained_typemuss das Attribut diesem Typ über eine benutzerdefinierte Richtlinie hinzugefügt werden. Weitere Einzelheiten dazu (und welche Typen standardmäßig MCS-eingeschränkt sind (und warum)) finden Sie in einemBlogbeitrag von Dan Walsh.

verwandte Informationen