Kann Apparmor interpretierte Sprachen einschränken?


7

Kann für interpretierte / VM-Sprachen (z. B. Python, Java, Shell-Skripte) Apparmor so eingestellt werden, dass nur ein bestimmtes Skript oder Programm beschränkt wird? Wenn das so ist, wie?

Antworten:


2

Ja es ist möglich. Es wird auch in Ubuntu verwendet, insbesondere am Telefon.

Um ein grundlegendes Apparmor-Skript zu erhalten, können Sie aa-autodep aus dem apparmor-utils-Paket verwenden.

Schnelles Beispiel für Python:

cat >> ~/myapp << EOF
#! /usr/bin/python
EOF

sudo aa-autodep ~/myapp

cat /etc/apparmor.d/home.<user-name>.myapp

Dies gibt Ihnen so etwas wie:

# Last Modified: Mon Feb 24 18:31:50 2014
#include <tunables/global>

/home/sam/myapp flags=(complain) {
  #include <abstractions/base>
  #include <abstractions/python>

  /home/sam/myapp r,
  /usr/bin/python2.7 ix,

}

Dann können Sie das erweitern.



0

Die Verwendung von '/usr/bin/python2.7 ix' ist keine gute Idee. Da ausgenutzter Code Python aus der Shell ausführen kann, zum Beispiel: Python -c 'irgendein böser Code'.

Dies ist definitiv nicht das, was Sie wollen und bricht das Sandbox-Konzept (was Apparmor ist) völlig.

ixbedeutet, dieselben Einschränkungen wie das übergeordnete Profil zu erben. In diesem Fall bin ich mir nicht sicher, ob es eine gute Idee ist, externe Befehle unter denselben Einschränkungen wie / home / sam / myap auszuführen.

Da es sich um Sicherheit handelt, sollten wir uns fragen: Warum sollte der externe Befehl / Python, von dem aus aufgerufen wird /home/sam/myapp, auf Lese- / Schreib- / Löschdateien zugreifen können, die von /home/sam/myappoder systemweit vertraulichen Dateien erstellt wurden? oder sogar eine Verbindung zum externen System herstellen? (Erinnern Sie sich an den alten Fall, dass Skype unnötige Dateien unter / etc liest?)

Die sicherere Lösung ist daher die Verwendung eines untergeordneten Profils (Unterprofils) zum Ausführen eines externen Python-Programms

#include <tunables/global>

/home/sam/myapp flags=(complain) {
  #include <abstractions/base>


  /home/sam/myapp r,
  /usr/bin/python2.7 Cx -> trusted_domain,

  profile trusted_domain {

   #include <abstractions/....>

   #include <abstraction/python>
   /usr/bin/my-python-app r,
   ... your policy for data, logs, connections, python files...
  }

}

-1. Vielleicht könnten Sie Ihre Alternative etwas besser erklären? Sie haben erklärt, warum die andere Antwort schlecht ist, aber nicht, was Ihre Antwort anders macht - was diesen gefährlichen Schrank zu einer Nur-Code-Antwort macht.
Starbeamrainbowlabs

Entschuldigung für die verspätete Antwort ixbedeutet , dass Sie dieselben Einschränkungen wie das übergeordnete Profil erben. In diesem Fall bin ich mir nicht sicher, ob die Ausführung externer Befehle unter denselben Einschränkungen erfolgt, wie dies /home/sam/myapeine gute Idee ist.
Yurii Oleynikov

Da es sich um Sicherheit handelt, sollten wir uns fragen: Warum sollten externe Befehle / Pythons, von denen aus aufgerufen wird /home/sam/myapp, auf Lese- / Schreib- / Löschdateien zugreifen können, die von erstellt wurden /home/sam/myapp? oder sogar eine Verbindung zum externen System herstellen?
Yurii Oleynikov

Ah, ich verstehe - danke für die Erklärung! Vielleicht könnten Sie Ihre Antwort damit aktualisieren? Dann kann ich meine -1 umkehren.
Starbeamrainbowlabs
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.