Eingeschränkte Shell mit Apparmor

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Artikel für fortgeschrittene Anwender

Dieser Artikel erfordert mehr Erfahrung im Umgang mit Linux und ist daher nur für fortgeschrittene Benutzer gedacht.

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

  1. Terminal bedienen

  2. Benutzerverwaltung

  3. Sudo konfigurieren

Inhaltsverzeichnis
  1. Anlegen der neuen Shell
  2. Benutzer mit neuer Shell anlegen
  3. Rechte einräumen
  4. Apparmor Profil anlegen
  5. Abschluss
  6. Links

Dieser Artikel beschreibt anhand eines einfachen Beispiels mit AppArmor wie man einen Benutzer mit Loginrechten auf wenige explizit definierte Systemaufrufe beschränken kann. Die hier vorgestellte Methodik steht keineswegs alleine. Als Alternativen sei an dieser Stelle auf die Verwendung von SELinux, Smack und eingeschränkte Shells verwiesen.

Anlegen der neuen Shell

Zunächst wird durch einen Hardlink eine neue Zugriffsmöglichkeit geschaffen. Voraussetzung dafür ist lediglich, dass sich der Link auf der selben Partition wie die ursprüngliche Shell befindet. Sofern möglich bietet sich /usr/local/bin als Zielpfad an.

sudo ln  /bin/bash /usr/local/bin/sicherheitsBash 

Die neue Shell wird anschließend in /etc/shells eingetragen und damit zur zugelassenen Loginshell.

Benutzer mit neuer Shell anlegen

Der Benutzer, dessen Rechte extrem eingeschränkt werden sollen, wird angelegt und ihm wird die neue Shell als Loginshell zugewiesen.

sudo adduser --shell /usr/local/bin/sicherheitsBash eingeschraenkt 

Rechte einräumen

Mittels visudo werden "eingeschraenkt" die Tätigkeiten ermöglicht, zu denen er in der Lage sein soll. In diesem Beispiel das Neuladen der Konfiguration des Apache Webservers.

eingeschraenkt ALL = NOPASSWD: /etc/init.d/apache2 reload

Apparmor Profil anlegen

Nun wird das AppArmor-Profil angelegt: /etc/apparmor.d/usr.local.bin.sicherheitsBash

/usr/local/bin/sicherheitsBash {
  /usr/bin/sudo pxr,
}

Hat man noch kein Profil für sudo, so kann zu Testzwecken "uxr" verwendet werden. Davon ist produktiv natürlich abzuraten.

Abschluss

Soll der neue Zugang für einen Menschen aus Fleisch und Blut und nicht für ein Skript dienen, so sollten nun noch einige Verschönerungsarbeiten durchgeführt werden. Meldungen wie

/etc/profile: Permission denied

sorgen nicht unbedingt für eine schöne Arbeitsumgebung. Mangels Autovervollständigung und History bietet es sich darüber hinaus an, sinnvolle Aliase oder Funktionen, je nach Shell, zu definieren.