ubuntuusers.de

Prozesse whitelisten

Status: Ungelöst | Ubuntu-Version: Ubuntu 16.04 (Xenial Xerus)
Antworten |

mercolo85

Anmeldungsdatum:
1. März 2017

Beiträge: Zähle...

Hallo,

ich habe folgende Fragen (zur besseren Übersicht, numerisch sortiert) :

1) Gibt es eine Liste für systemrelevante Prozesse, d.h. alle Prozesse die zum Laufen von Ubuntu zwingend notwendig sind, damit Ubuntu überhaupt läuft?

2)

a) Gibt es Prozesse, die selbst mit sudo nicht zu beenden sind, mit z.B. durch " ( sudo) kill " etc. ?

b) Falls ja, gibt es eine Liste von diesen Prozessen?

3) Kann man dann automatisch alle nicht systemrelevanten Prozesse zunächst einmal für immer sperren, sodass jeder einzelne Prozess zuerst freigeschaltet werden muss, falls man diesen Prozess in Zukunft benötigt? Oder anders gefragt: Kann man alle bekannten und brauchbaren Prozesse whitelisten, sodass alle neuen Prozesse automatisch kein Recht zur Ausführung haben, bevor sie nicht in der Whitelist eingetragen sind?

Ziel: Sicherheit erhöhen, indem den für die Benutzung unrelevanten Prozessen die Ausführung von Anfang an und automatisch verboten wird. Je mehr Prozesse laufen, desto mehr Angriffsfläche.

PS: Ich bin ein Newbie, also bitte in Newbie-Sprache, wenn es geht. Danke ☺

MFG

Into_the_Pit Team-Icon

Ehemalige
Avatar von Into_the_Pit

Anmeldungsdatum:
25. Juni 2008

Beiträge: 9490

Wohnort: Bochum

mercolo85 schrieb:

1) Gibt es eine Liste für systemrelevante Prozesse, d.h. alle Prozesse die zum Laufen von Ubuntu zwingend notwendig sind, damit Ubuntu überhaupt läuft?

Rechner booten, anmelden, top im Terminal ausführen.

3) Kann man dann automatisch alle nicht systemrelevanten Prozesse zunächst einmal für immer sperren, sodass jeder einzelne Prozess zuerst freigeschaltet werden muss, falls man diesen Prozess in Zukunft benötigt? Oder anders gefragt: Kann man alle bekannten und brauchbaren Prozesse whitelisten, sodass alle neuen Prozesse automatisch kein Recht zur Ausführung haben, bevor sie nicht in der Whitelist eingetragen sind?

Nicht Systemrelevante Prozesse laufen schlicht und ergreifend nicht, warum auch. Sie sind ja nicht Systemrelevant.

Ziel: Sicherheit erhöhen, indem den für die Benutzung unrelevanten Prozessen die Ausführung von Anfang an und automatisch verboten wird. Je mehr Prozesse laufen, desto mehr Angriffsfläche.

Security through Obscurity? Was versprichst Du Dir dadurch?

Vegeta

Avatar von Vegeta

Anmeldungsdatum:
29. April 2006

Beiträge: 7943

Wenn es darum geht möglichst wenig Prozesse im Hintergrund laufen zu haben, würde ich Ubuntu runterschmeißen und durch was Minimales wie Lubuntu ersetzen oder halt eine dieser Lightweight Distributionen nehmen, wo wirklich nur das Nötigste installiert ist. Die beste Vorsorge ist aber immer noch sein System aktuell zu halten.

mercolo85

(Themenstarter)

Anmeldungsdatum:
1. März 2017

Beiträge: 4

Vegeta schrieb:

Wenn es darum geht möglichst wenig Prozesse im Hintergrund laufen zu haben, würde ich Ubuntu runterschmeißen und durch was Minimales wie Lubuntu ersetzen oder halt eine dieser Lightweight Distributionen nehmen, wo wirklich nur das Nötigste installiert ist. Die beste Vorsorge ist aber immer noch sein System aktuell zu halten.

+

Into_the_Pit schrieb:

Nicht Systemrelevante Prozesse laufen schlicht und ergreifend nicht, warum auch. Sie sind ja nicht Systemrelevant.

Ich glaube, ihr versteht nicht was ich meine. Hier ein Beispiel und Präzisierung: Der Befehl und Prozess "top" ist erst einmal nicht systemrelevant. Jedoch wird dieser bei Eingabe von "top" im Terminal ausgeführt. Der Befehl bezw. Prozess "top" soll aber nur ausführbar sein, wenn ich ihn in einer Whitelist oder Ähnlichem eingetragen habe. "top" ist hier natürlich nur ein Beispiel. Dieses Prinzip soll für ALLE möglichen Prozesse gelten.

Ich möchte sozusagen das restriktivste System schaffen, das möglich ist. Später vor allem zum Einsatz in Servern.

PS: Bitte zuerst Lösungen anbieten und dann fragen stellen wie z.B. "Warum brauchst du das?". Erfahrungsgemäß tendieren "einige" Leute immer zu langen Diskussion, ohne Lösungen anzubieten.

Gruß und Danke im Voraus ☺

Vegeta

Avatar von Vegeta

Anmeldungsdatum:
29. April 2006

Beiträge: 7943

Hört sich so an, als ob du dich mit SELinux und AppArmor beschäftigen möchtest.

Into_the_Pit Team-Icon

Ehemalige
Avatar von Into_the_Pit

Anmeldungsdatum:
25. Juni 2008

Beiträge: 9490

Wohnort: Bochum

mercolo85 schrieb:

Ich möchte sozusagen das restriktivste System schaffen, das möglich ist. Später vor allem zum Einsatz in Servern.

Und Du meinst, Du bist der erste mit diesem Gedanken? Es gibt durchaus Systeme, die darauf ausgelegt sind, besonders gesichert zu sein (Hardened ist das Stichwort). Dazu kommt noch der Punkt, dass es, wenn es praktikabel wäre, es mit Sicherheit schon vorhanden wäre. Woher weißt Du denn, ob der Prozess auf die White- oder Blacklist kommen soll, nur weil er beim Start nicht genutzt wird. Vielleicht wird er es ja im späteren Verlauf und dann musst Du Hand anlegen. Administrativ gesehen ist das ein Obergau.

Erfahrungsgemäß tendieren "einige" Leute immer zu langen Diskussion, ohne Lösungen anzubieten.

Erfahrungsgemäß haben diese Leute mehr Erfahrung und versuchen nur, denjenigen vor unnützen Dingen zu bewahren.

mercolo85

(Themenstarter)

Anmeldungsdatum:
1. März 2017

Beiträge: 4

Vegeta schrieb:

Hört sich so an, als ob du dich mit SELinux und AppArmor beschäftigen möchtest.

Vielleicht in ein paar Jahren ☺ . Ich möchte nicht an fertige Systeme gehen, sondern (so weit möglich) mein eigenes schaffen (auch wenn es lange dauert). Schließlich lerne ich viel dabei, wenn ich mein eigenes System schaffe. Klar ist Bequemlichkeit super, aber Wissen first ☺


Into_the_Pit schrieb:

Dazu kommt noch der Punkt, dass es, wenn es praktikabel wäre, es mit Sicherheit schon vorhanden wäre. Woher weißt Du denn, ob der Prozess auf die White- oder Blacklist kommen soll, nur weil er beim Start nicht genutzt wird. Vielleicht wird er es ja im späteren Verlauf und dann musst Du Hand anlegen. Administrativ gesehen ist das ein Obergau.

Kann mir nicht vorstellen, dass es keine Möglichkeit dafür gibt, da wie du selbst sagtest, ich bestimmt nicht der erste mit dieser Idee bin. Und bezüglich dem, was auf die Whitelist und Blacklist soll:

1) Alles Prozesse, die nicht in der Whitelist sind, sollen automatisch in der Blacklist sein.

2) Natürlich weiß ich zuerst nicht, welche Prozesse auf die Whitelist sollen. Aber ich weiß, das mindestens die systemrelevanten Prozesse da rein müssen, weil ja sonst gar nichts läuft. Deshalb suche ich ja eine offizielle Liste mit diesen. Vielleicht sogar von Ubuntu/Canonical selbst.

3) Hand anlegen, ist genau das, was ich will. Das dabei erworbene Wissen ist schon fast wichtiger als die Sicherheit, die damit entsteht.

4) Wichtig ist dabei, dass ich keine bereits fertigen Systeme benutze, sondern so weit möglich im "Low Level" (nein, nicht so weit, dass ich bei Einsen und Nullen bin ☺ ) anfange und mich "hocharbeite".

Into_the_Pit schrieb:

Erfahrungsgemäß haben diese Leute mehr Erfahrung und versuchen nur, denjenigen vor unnützen Dingen zu bewahren.

Normalerweise unterscheide ich sachliche Fragen und Fragen, die aus reiner egoistischer Neugier gestellt werden und keinen Lösungsbezug zum Thema haben. Sachliche Fragen, die zur guten Beantwortung/Hilfestellung notwendig sind, sind gerne willkommen. Oft werden aber aus Langeweile oder egoistischer Neugier Diskussion gestartet, die dann in viele Seiten voller Posts ohne einer Lösung, manchmal sogar ohne einem Lösungsansatz, enden. Aber bitte dazu jetzt keine Diskussion ☺

encbladexp Team-Icon

Ehemaliger
Avatar von encbladexp

Anmeldungsdatum:
16. Februar 2007

Beiträge: 17524

Da ich mich sehr für Sicherheit interessiere finde ich deinen Ansatz wirklich interessant. Allerdings stelle ich dort einige Mängel an der Wirkung deiner Idee fest.

Ein kleines Beispiel: Du findest das /usr/bin/unsecure ein unsicheres Programm ist. Was hält mich davon ab mit /usr/bin/python, /usr/bin/perl, /usr/bin/tcl oder einfach nur /bin/bash (alle auf der Whitelist, da Interpreter gängiger Programmiersprachen!) dessen Funktion zu reimplementieren?

Vor allem was ist ein Prozess? Doch nur die Instanz einer Binary. Oder ist es keine Binary? Wenn du /usr/bin/ls als sicheres Programm definierst, erhöht es dann die Sicherheit wenn ich /usr/bin/ls durch ein anderes, z.B. Malware, ersetze?

Deine Lösung wirft mehr Fragen auf als sie bringt, stellt aber nicht die Frage die du wirklich im Kopf hast. Den für diese Frage haben Menschen AppArmor, SELinux, TOMOYO und viele andere Systeme entwickelt.

tl;dr: Dein Vorhaben scheitert, hat nichts mit Security zu tun, und gehört in den Bereich der Metadiskussionen.

mfg Stefan

mercolo85

(Themenstarter)

Anmeldungsdatum:
1. März 2017

Beiträge: 4

encbladexp schrieb:

Da ich mich sehr für Sicherheit interessiere finde ich deinen Ansatz wirklich interessant. Allerdings stelle ich dort einige Mängel an der Wirkung deiner Idee fest.

Ein kleines Beispiel: Du findest das /usr/bin/unsecure ein unsicheres Programm ist. Was hält mich davon ab mit /usr/bin/python, /usr/bin/perl, /usr/bin/tcl oder einfach nur /bin/bash (alle auf der Whitelist, da Interpreter gängiger Programmiersprachen!) dessen Funktion zu reimplementieren?

Vor allem was ist ein Prozess? Doch nur die Instanz einer Binary. Oder ist es keine Binary? Wenn du /usr/bin/ls als sicheres Programm definierst, erhöht es dann die Sicherheit wenn ich /usr/bin/ls durch ein anderes, z.B. Malware, ersetze?

Deine Lösung wirft mehr Fragen auf als sie bringt, stellt aber nicht die Frage die du wirklich im Kopf hast. Den für diese Frage haben Menschen AppArmor, SELinux, TOMOYO und viele andere Systeme entwickelt.

tl;dr: Dein Vorhaben scheitert, hat nichts mit Security zu tun, und gehört in den Bereich der Metadiskussionen.

mfg Stefan

Also ich weiß ja nicht, was für Intelligenzbestien sich hier auf dem Forum anmelden, aber eigentlich war mein Thread und diese Idee, nur eine Idee, bei der ich Hilfe mit der Umsetzung brauche. Grundsätzlich bin ich davon überzeugt, dass eine solche Idee, wenn auch komplexer über Umwege, zu realisieren ist, oder wahrscheinlich sogar schon lange realisiert wurde und bloß Teil eines viel größeren Pakets ist und daher wohl von den Meisten nicht wahrgenommen wird. Welche Administrator schaut sich denn z.B. den Quellcode jedes Pakets durch, um sicher zu gehen, dass auch alles sicher ist? Mal abgesehen davon, dass das für eine Person zeitlich gar nicht möglich ist....

Mein Ziel ist es, eines Tages einen Ubuntu Server alleine sicher betreiben zu können. Da Prozesse ein fundamentaler Baustein des Systems sind, wollte ich bei denen anfangen. Wer also eine Idee zur Umsetzung hat, darf sich hier gerne austoben ☺ Fertige Systeme nehme ich deshalb ungerne, weil fertige Systeme meist viel mehr liefern als benötigt wird. Und wo mehr ist, da ist auch mehr Angriffsfläche. Zudem wird dann meistens von Außen nach Innen gelernt. Ich würde jedoch gerne vom kleinen (Fundament) aufs große hinarbeiten. Das verringert das Risiko, dass ich etwas auf dem Weg übersehe.

engheneiro

Anmeldungsdatum:
13. August 2009

Beiträge: 2080

Wohnort: Nähe München

Du widersprichst dir irgendwie ...

Mein Ziel ist es, eines Tages einen Ubuntu Server alleine sicher betreiben zu können.

das sollte zu erreichen sein (das können viele andere auch). Da nimmt man eine Ubuntu-Server Version oder eine alternative Installation mit Minimalsystem (da laufen sowieso schon viel weniger Services als bei einem Desktop) und richtet den nach "best practice" security-Richtlinien ein.

Willst du wirklich am Prozessmodell grundsätzlich was ändern, dann müsstest du an den Kernel ran und wahrscheinlich deine komplett eigene Distro bauen. Möglich aber schon sehr aufwendig. Linus hat auch mal klein angefangen, weil er verstehen wollte wie es funktioniert 😉

Ich komme aus der Solaris-Welt, dort gibt es eine "trusted" Version. Der Grund, warum das häufig nicht verwendet wird (bzw. nur im militärischen Bereich) ist, dass es je sicherer desto unbenutzbarer wird. Wenn man alle Schrauben anzieht, kann man mit dem System nichts mehr machen. Es wird also immer Kompromisse geben und nie 100%.

Into_the_Pit Team-Icon

Ehemalige
Avatar von Into_the_Pit

Anmeldungsdatum:
25. Juni 2008

Beiträge: 9490

Wohnort: Bochum

mercolo85 schrieb:

Mein Ziel ist es, eines Tages einen Ubuntu Server alleine sicher betreiben zu können. Da Prozesse ein fundamentaler Baustein des Systems sind, wollte ich bei denen anfangen.

Wäre es da nicht sinnvoller, sich erstmal mit der Struktur und den einzelnen Prozessen zu beschäftigen, zu verstehen und zu wissen, was sie machen, bevor man sich Ideen macht, wie man diese einschränken kann?

Ich würde jedoch gerne vom kleinen (Fundament) aufs große hinarbeiten. Das verringert das Risiko, dass ich etwas auf dem Weg übersehe.

http://www.linuxfromscratch.org/

Also ich weiß ja nicht, was für Intelligenzbestien sich hier auf dem Forum anmelden, aber eigentlich war mein Thread und diese Idee, nur eine Idee, bei der ich Hilfe mit der Umsetzung brauche.

Du hast bereits Tipps bekommen, wie z.B. top oder eben SELinux/AppArmor usw. Was hindert Dich also nun daran, Dein Vorhaben mit den Tipps in die Tat umzusetzen? Schnapp Dir eine Server-Installation und schau Dir an, welche Prozesse nach der Installation standardmäßig laufen. Entscheide dann, welche Prozesse für Dich relevant sind und versuche Dein Vorhaben mit der Whitelist umzusetzen. Oder erwartest Du von den Intelligenzbestien in diesem Forum, dass sich jemand Deiner Idee annimmt und Dir dabei hilft?

hakel

Anmeldungsdatum:
13. August 2009

Beiträge: 23336

Diese "bizzare" Diskussion sollte im Subforum "Sicherheit fortgeführt werden.

Du könntest dir übrigens mal ein Angriffszenario, für deine Umgebung überlegen.

Bei mir laufen Serverdienste mit Internet z.B. in einer Minimalinstallation in einer VM.

jug Team-Icon

Ehemalige
Avatar von jug

Anmeldungsdatum:
19. März 2007

Beiträge: 12335

Wohnort: Berlin

mercolo85 schrieb:

Grundsätzlich bin ich davon überzeugt, dass eine solche Idee, wenn auch komplexer über Umwege, zu realisieren ist, oder wahrscheinlich sogar schon lange realisiert wurde und bloß Teil eines viel größeren Pakets ist und daher wohl von den Meisten nicht wahrgenommen wird. Welche Administrator schaut sich denn z.B. den Quellcode jedes Pakets durch, um sicher zu gehen, dass auch alles sicher ist?

Dafür ist Linux (und Ubuntu) Open Source und wird von einer großen Community gepflegt. Da sind sowohl bezahlte Entwickler (von Canonical) dabei und halt auch viele Ehrenamtliche.

Letztendlich ist das mit der Sicherheit so, dass die immer auch mit Vertrauen verbunden ist. Irgendwann musst du irgendjemandem vertrauen. Glaube mir, das ist in der OpenSource-Welt deutlich einfacher als bei einem proprietären geschlossenen Betriebssystem. In dem Moment in dem du Ubuntu installierst, vertraust du den Entwicklern, dass die Software die in den Paketquellen liegt sauber ist und ihre Standardkonfiguration nach der Installation ebenfalls sicher™ (nach derzeitigem Stand der Kenntnis) ist. Wenn dieses Vertrauen fehlt – was bei dir der Fall zu sein scheint – dann nimm eine andere Distribution, oder bau deine eigene.

Mal abgesehen davon, dass das für eine Person zeitlich gar nicht möglich ist....

Eben, deshalb ist es wichtig an einem Punkt auch mal Vertrauen zu haben. Dein System wird in der Standardkonfiguration direkt nach der Installation keinen Mist machen. Punkt.

Interessant wird es, wenn du Dienste bereit stellst, die vom Internet aus erreichbar sein sollen, wie das bei einem Server oft der Fall ist. Da gibt es berechtigten Grund sich ein wenig zu sorgen und diesen Diensten nicht uneingeschränkt zu trauen. Schließlich empfangen und verarbeiten solche Serverdienste ja Daten von Fremden aus dem Internet. Oh wunder, da gibt es einige Möglichkeiten diese einzuschränken und diese abzusichern.

  • Eingeschränkter Benutzerkontext – Dienst läuft nicht als root-Benutzer, kann also nur auf bestimmte Verzeichnisse zugreifen. Quasi in der Standardkonfiguration schon so.

  • SELinux – genauere Kontrolle auf welche Daten ein Prozess zugreifen kann.

  • chroot jails – man sperrt den Dienst in ein eigenes Verzeichnis aus dem der Dienst (hoffentlich) nicht raus kann.

  • Cgroups, Namespaces – siehe Containervirtualisierung

  • LXC – ein chroot auf Steroiden, nutzt Cgroups und Namespaces.

  • Docker, systemd-nspawn, … – diverse "Container"-Manager die es erlauben einzelne Programme/Dienste in solchen geschlossenen Containern auszuführen und zu verwalten.

  • tatsächliche Virtualisierung mit QEMU/KVM/VMware/VirtualBox, … – noch einen Schritt weiter und isolierter, braucht aber auch deutlich mehr Resourcen.

Mein Ziel ist es, eines Tages einen Ubuntu Server alleine sicher betreiben zu können. Da Prozesse ein fundamentaler Baustein des Systems sind, wollte ich bei denen anfangen.

Ich glaube du vermischst „Prozesse“ mit „Dienste“. Dienste sind die Dinge die ein Server öffentlich bereit stellt und die müssen natürlich sicher konfiguriert werden, weil dort Fremde über das Internet Daten rein werfen können. Die kann man schön abschotten, diverse Möglichkeiten habe ich oben genannt, problematisch wird das natürlich wenn die Dienste miteinander interagieren sollen – der Webserver mit der dynamischen Webapp über fastcgi, die Webapp mit der Datenbank, die Webapp mit dem Netzwerkspeicher …

Im Gegensatz zu den Diensten, die dein Server anbietet, beinhaltet „Prozesse“ aber jede ausführbare Datei die gestartet wird, und die kannst du nicht alle kontrollieren, jedenfalls nicht ohne das System unbenutzbar zu machen. Deshalb ist dein Vorhaben meiner Meinung nach (und wie du siehst bin ich damit nicht alleine) eher Unsinn. Das ist der Punkt wo du vertrauen musst. Sowohl unserer Einschätzung hier als auch der Distribution und der Software die du installiert hast. 😉

Fertige Systeme nehme ich deshalb ungerne, weil fertige Systeme meist viel mehr liefern als benötigt wird. Und wo mehr ist, da ist auch mehr Angriffsfläche. Zudem wird dann meistens von Außen nach Innen gelernt. Ich würde jedoch gerne vom kleinen (Fundament) aufs große hinarbeiten. Das verringert das Risiko, dass ich etwas auf dem Weg übersehe.

LinuxFromScratch wurde schon erwähnt, in etwas geringerem Maße würde ich auch Archlinux in Betracht ziehen. Mach dir eine VirtualBox und bau dir mal eine minimale Distribution zusammen. Lernt man viel bei.

~jug

Antworten |