Eine automatisierte Methode zum Auffinden von Netzwerkserver-Daemons, für die ein Profil erstellt werden sollte, ist der Einsatz des Werkzeugs unconfined. Sie können auch einfach einen Bericht dieser Informationen in der grafischen YaST-Benutzeroberfläche ansehen. (Anweisungen finden Sie in Abschnitt 4.3.1.1, „Anwendungsprüfbericht“ (↑ Novell AppArmor 2.0-Administrationshandbuch ).)
Das Werkzeug unconfined verwendet den Befehl netstat -nlp, um Ihre offenen Ports vom Computer aus zu inspizieren, die mit diesen Ports verbundenen Programme zu ermitteln und den geladenen Novell AppArmor-Profilsatz zu prüfen. Unconfined meldet dann diese Programme zusammen mit dem Novell AppArmor-Profil, das mit jedem Programm verbunden ist, oder es meldet „none“, wenn das Programm nicht eingeschränkt ist.
Anmerkung | |
---|---|
Wenn Sie ein neues Profil für ein Programm erstellen, müssen Sie das Programm neu starten, damit unconfined den neuen Status mit Profil erkennen und melden kann. |
Beispiel einer Ausgabe von unconfined:
2325 /sbin/portmap not confined 3702 /usr/sbin/sshd confined by '/usr/sbin/sshd (enforce)' 4040 /usr/sbin/ntpd confined by '/usr/sbin/ntpd (enforce)' 4373 /usr/lib/postfix/master confined by '/usr/lib/postfix/master (enforce)' 4505 /usr/sbin/httpd2-prefork confined by '/usr/sbin/httpd2-prefork (enforce)' 5274 /sbin/dhcpcd not confined 5592 /usr/bin/ssh not confined 7146 /usr/sbin/cupsd confined by '/usr/sbin/cupsd (complain)'
Anmerkung | |
---|---|
Unconfined benötigt root-Berechtigungen und sollte nicht von einer Shell ausgeführt werden, die durch ein AppArmor-Profil eingeschränkt ist. |
Unconfined unterscheidet nicht zwischen Netzwerkschnittstellen, daher meldet es alle uneingeschränkten Prozesse, selbst diejenigen, die an einer internen LAN-Schnittstelle lauschen.
Das Auffinden von Netzwerk-Client-Benutzeranwendungen hängt von Ihren Benutzereinstellungen ab. Das Werkzeug unconfined erkennt und meldet Netzwerkports, die von Client-Anwendungen geöffnet wurden, allerdings nur die Client-Anwendungen, die während der unconfined-Analyse ausgeführt werden. Dies ist ein Problem, da Netzwerkdienste eher ständig laufen, während Netzwerk-Client-Anwendungen nur dann ausgeführt werden, wenn sie den Benutzer interessieren.
Das Übernehmen von Novell AppArmor-Profilen für Netzwerk-Client-Benutzeranwendungen hängt auch von Benutzereinstellungen ab und Novell AppArmor ist eher für Server als für Arbeitsstationen konzipiert. Daher überlassen wir die Profilerstellung von Netzwerk-Client-Benutzeranwendungen dem Benutzer.
Für die aggressive Einschränkung von Desktop-Anwendungen unterstützt der Befehl unconfined die Option "Paranoid", die alle laufenden Prozesse und die entsprechenden AppArmor-Profile meldet, die eventuell mit jedem Prozess verbunden sein können. Der nicht eingeschränkte Benutzer kann dann entscheiden, ob jedes dieser Programme ein AppArmor-Profil benötigt.
Wenn Sie über neue oder geänderte Profile verfügen, können Sie sie zur Mailingliste apparmor-general@forge.novell.com hinzufügen und jeweils einen Anwendungsfall für das ausgeübte Anwendungsverhalten angeben. Das AppArmor-Team überprüft die Arbeit und übermittelt sie eventuell an openSUSE. Wir können nicht garantieren, dass alle Profile aufgenommen werden, aber wir bemühen uns nach Kräften, so viele wie möglich aufzunehmen, sodass die Endbenutzer zu den Sicherheitsprofilen in openSUSE beitragen können.
Für das Auffinden von Programmen, die von cron ausgeführt werden, müssen Sie Ihre lokale cron-Konfiguration prüfen. Leider ist die cron-Konfiguration ziemlich komplex, daher sind zahlreiche Dateien zu inspizieren. Regelmäßige Cron-Jobs werden von den folgenden Dateien ausgeführt:
/etc/crontab /etc/cron.d/* /etc/cron.daily/* /etc/cron.hourly/* /etc/cron.monthly/* /etc/cron.weekly/*
Für die Cron-Jobs von root können Sie die Aufgaben mit crontab -e bearbeiten und die Cron-Aufgaben von root mit crontab -l auflisten. Sie müssen root-Benutzer sein, damit diese Befehle funktionieren.
Sobald Sie diese Programme gefunden haben, können Sie den Abschnitt 3.3.1, „Hinzufügen eines Profils mit dem Assistenten“ (↑ Novell AppArmor 2.0-Administrationshandbuch ).
verwenden, um Profile für sie zu erstellen. Informationen finden Sie unter
Zum Auffinden von Webanwendungen sollten Sie Ihre Webserver-Konfiguration untersuchen. Der Apache-Webserver ist stark konfigurierbar und Webanwendungen können abhängig von Ihrer lokalen Konfiguration in vielen Verzeichnissen gespeichert sein. Standardmäßig speichert SUSE Linux Webanwendungen unter /srv/www/cgi-bin/
. Soweit irgend möglich, sollte jede Webanwendung durch ein Novell AppArmor-Profil abgesichert werden.
Sobald Sie diese Programme gefunden haben, können Sie den AppArmor-Abschnitt 3.3.1, „Hinzufügen eines Profils mit dem Assistenten“ (↑ Novell AppArmor 2.0-Administrationshandbuch ).
verwenden, um Profile für sie zu erstellen. Informationen finden Sie unter
Da CGI-Programme vom Apache-Webserver ausgeführt werden, muss das Profil für Apache usr.sbin.httpd2-prefork
(für Apache2 unter SUSE Linux) geändert werden, um Ausführungsberechtigungen für jedes dieser Programme hinzuzufügen. Beispiel: Das Hinzufügen der Zeile /srv/www/cgi-bin/my_hit_counter.pl rpx
gibt Apache die Berechtigung, das Perl-Skript my_hit_counter.pl
auszuführen, und verlangt, dass ein eigenes Profil für my_hit_counter.pl
vorhanden ist. Wenn mit my_hit_counter.pl
kein eigenes Profil verbunden ist, sollte die Regel /srv/www/cgi-bin/my_hit_counter.pl rix
lauten, damit my_hit_counter.pl
das Profil usr.sbin.httpd2-prefork
erbt.
Einige Benutzer finden es eventuell unbequem, für jedes CGI-Skript, das Apache aufrufen könnte, Ausführungsberechtigungen anzugeben. Stattdessen kann der Administrator kontrollierten Zugriff auf Sammlungen von CGI-Skripts gewähren. Beispiel: Durch Hinzufügen der Zeile /srv/www/cgi-bin/*.{pl,py,pyc} rix
kann Apache alle Dateien in /srv/www/cgi-bin/
ausführen, die auf .pl
(Perl-Skripts) und .py
oder .pyc
(Python-Skripts) enden. Der ix
-Teil der Regel sorgt dafür, dass die Python-Skripts das Apache-Profil erben, das geeignet ist, wenn Sie nicht für jedes Python-Skript ein eigenes Profil schreiben möchten.
Anmerkung | |
---|---|
Wenn Sie die Funktionalität des Moduls zur Einschränkung von Unterprozessen ( |
Die Profilerstellung für Webanwendungen, die mod_perl
und mod_php
verwenden, erfordert eine geringfügig andere Vorgehensweise. In diesem Fall ist das „Programm“ ein Skript, das direkt durch das Modul im Apache-Prozess interpretiert wird, daher findet kein exec-Systemaufruf statt. Stattdessen ruft die Novell AppArmor-Version von Apache change_hat() auf und gibt ein Unterprofil an (einen „Hat“), das dem Namen des angeforderten URI entspricht.
Anmerkung | |
---|---|
Der Name, den das auszuführende Skript erhält, ist eventuell nicht der URI, abhängig davon, wie Apache für die Suche nach Modulskripts konfiguriert wurde. Falls Sie Apache so konfiguriert haben, dass Skripts an einer anderen Stelle abgelegt werden, werden die anderen Namen im Syslog angezeigt, wenn Novell AppArmor Zugriffsverletzungen meldet. Siehe Kapitel 4, Verwalten von Anwendungen mit Profilen (↑ Novell AppArmor 2.0-Administrationshandbuch ). |
Für mod_perl
- und mod_php
-Skripts ist dies der Name des angeforderten Perl-Skripts bzw. der angeforderten PHP-Seite. Beispiel: Durch Hinzufügen dieses Unterprofils kann die Seite localtime.php ausgeführt werden und auf die lokale Systemzeit zugreifen:
/usr/sbin/httpd2-prefork^/cgi-bin localtime.php { /etc/localtime r, /srv/www/cgi-bin/localtime.php r, /usr/lib/locale/** r, }
Falls kein Unterprofil definiert wurde, wendet die Novell AppArmor-Version von Apache den Hat DEFAULT_URI
an. Dieses Unterprofil genügt im Prinzip, um eine HTML-Webseite anzuzeigen. Der Hat DEFAULT_URI
, den Novell AppArmor standardmäßig zur Verfügung stellt:
/usr/sbin/suexec2 ixr, /var/log/apache2/** rwl, /home/*/public_html/** r, /srv/www/htdocs/** r, /srv/www/icons/*.{gif,jpg,png} r, /usr/share/apache2/** r,
Wenn Sie ein einziges Novell AppArmor-Profil für alle Webseiten und CGI-Skripts wünschen, die Apache bereitstellt, ist es eine gute Lösung, das DEFAULT_URI
-Unterprofil zu bearbeiten.
Für das Auffinden von Netzwerkserver-Daemons, für die ein Profil erstellt werden sollte, prüfen Sie die offenen Ports auf Ihrem Rechner, beachten Sie die Programme, die auf diesen Ports reagieren, und stellen Sie Profile für möglichst viele dieser Programme zur Verfügung. Wenn Sie Profile für alle Programme mit offenen Netzwerkports bereitstellen, kann ein Angreifer nicht in das Dateisystem auf Ihrem Rechner gelangen, ohne eine Novell AppArmor-Profilrichtlinie zu durchlaufen.
Prüfen Sie Ihren Server manuell auf offene Netzwerkports von außerhalb des Rechners mithilfe eines Scanners wie nmap oder von innerhalb des Rechners mithilfe von netstat. Inspizieren Sie dann den Rechner, um zu bestimmen, welche Programme auf den entdeckten offenen Ports antworten.