Ausführbare Dateien über acls verhindern

Warum Debian und/oder eine seiner Spielarten? Was muss ich vorher wissen? Wo geht es nach der Installation weiter?
Antworten
wow
Beiträge: 124
Registriert: 29.01.2004 17:17:17
Lizenz eigener Beiträge: neue BSD Lizenz
Wohnort: 12355 Berlin

Ausführbare Dateien über acls verhindern

Beitrag von wow » 09.06.2007 04:19:25

Hallo,

aus Sicherheitsgründen möchte ich in Homeverzeichnissen und anderen Verzeichnissen, in die User schreiben dürfen, das Anlegen von ausführbaren Dateien verhindern.

Dazu gibt es die Möglichkeit durch die Mountoption noexec (s. auch diesen Thread:

http://www.debianforum.de/forum/viewtop ... 908#529908 ).

Eine andere Möglichkeit wären, wenn ich es richtig verstanden habe, die acls.

Hier verstehe ich nicht so ganz, wie ich für zukünftige Dateien die Rechte so setzen kann, daß neu angelegte Dateien nie ausführbar sein können. Geht das überhaupt mit den acls oder unterliege ich einem Irrtum?

Beispiele, die ich mir angeschaut habe (u.a. die Manpage) gehen immer von vorhandenen Dateien aus. Und das nützt ja für zukünftige Dateien nichts. Oder werden zukünftige Dateien mit erfaßt, wenn ich anstatt des Dateienamen einen Asterisk angebe?

MfG

Wolfram

Methusalix

Ausführbare Dateien über acls verhindern

Beitrag von Methusalix » 09.06.2007 22:53:09

Hallo,
die Rechte neu angelegter Dateien werden ja über die umask-Maske eingestellt.
Da würde ich erst mal ansetzen.

Code: Alles auswählen

man umask
Gruß
Matthias

Benutzeravatar
herrchen
Beiträge: 3257
Registriert: 15.08.2005 20:45:28
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Berlin

Re: Ausführbare Dateien über acls verhindern

Beitrag von herrchen » 09.06.2007 23:13:34

Matthias-GE hat geschrieben: die Rechte neu angelegter Dateien werden ja über die umask-Maske eingestellt.
richtig, allerdings kann man die rechte als "besitzer" nachträglich ändern.

herrchen

Benutzeravatar
KBDCALLS
Moderator
Beiträge: 22456
Registriert: 24.12.2003 21:26:55
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Dortmund
Kontaktdaten:

Re: Ausführbare Dateien über acls verhindern

Beitrag von KBDCALLS » 09.06.2007 23:35:30

herrchen hat geschrieben:
Matthias-GE hat geschrieben: die Rechte neu angelegter Dateien werden ja über die umask-Maske eingestellt.
richtig, allerdings kann man die rechte als "besitzer" nachträglich ändern.

herrchen
Das müßte sich mit sudo verhindern lassen.
Was haben Windows und ein Uboot gemeinsam?
Kaum macht man ein Fenster auf, gehen die Probleme los.

EDV ist die Abkürzung für: Ende der Vernunft

Bevor du einen Beitrag postest:
  • Kennst du unsere Verhaltensregeln
  • Lange Codezeilen/Logs gehören nach NoPaste, in Deinen Beitrag dann der passende Link dazu.

Benutzeravatar
meandtheshell
Beiträge: 4054
Registriert: 14.01.2005 17:51:30

Re: Ausführbare Dateien über acls verhindern

Beitrag von meandtheshell » 10.06.2007 00:32:04

wow hat geschrieben: aus Sicherheitsgründen möchte ich in Homeverzeichnissen und anderen Verzeichnissen, in die User schreiben dürfen, das Anlegen von ausführbaren Dateien verhindern.
Warum?

Das ist aus meiner Sicht nicht notwendig denn ein "normaler" User ist ohnehin nicht in der Lage über sein /home hinaus Schaden anzurichten. Auch ein ausführbares Skript das er dort ablegt läuft ja mit seiner UID und kann genausowenig "mehr" machen als der User wenn der z.B. per ssh in die Maschine geht.

Warum möchtest du das machen bzw. warum denkst du das ein out-of-the-box Debian zu wenig ist?
Das ist es nicht zumindest was exekutierbaren User Code angeht.

Ich denke du bist evtl. eher daran interessiert Usern ein /home zu geben in dem Sie arbeiten können, wo diese aber nicht die vorhandene default Struktur verändern können:
- Verzeichnislayout
- gewisse files
- etc.
wo sie aber sehrwohl in der Lage sind eigene Dinge (files etc.) anzulegen, diese zu editieren und evtl. wieder zu löschen aber eben nicht mehr als diese d.h. das Layout das du Ihnen gibst ist immer der Punkt an dem Sie nicht weiterkommen.
Das kannst du mit

Code: Alles auswählen

chattr
erreichen indem du
- das Layout der homdirs für die User anlegst
- dann rekursiv chattr anwendest z.B. chattr -Ridu /home/<user>
dann lässt du die User darauf los und bist sicher das Sie den "harten Kern" ihres /home nicht verändern können.


Markus

wow
Beiträge: 124
Registriert: 29.01.2004 17:17:17
Lizenz eigener Beiträge: neue BSD Lizenz
Wohnort: 12355 Berlin

Beitrag von wow » 10.06.2007 01:43:24

@meandtheshell

Warum will ich das Ausführen von Dateien im Homeverzeichnis und anderen Verzeichnissen verhindern?

Vielleicht bin ich paranoid. Aber angeregt durch Meldungen über den Bundestrojaner halte ich es auch unter Linux nicht für abwegig, daß einem User bspw. über den Browser ein Schnüffelprogramm untergejubelt wird. Dieses Programm könnte ja dann Informationen über den Inhalt der Platte, soweit für ihn lesbar, übermitteln. Wenn dieses Programm jedoch nicht ausgeführt werden dürfte, dann ginge dieses Programm ins Leere. Entsprechendes gilt eben auch für Verzeichnisse, in die der User schreiben darf (bspw. /tmp oder /var/tmp). Das ist mein Gedanke.

Chattr kommt wohl für mich nicht in Betracht, da ich jfs nutze.

Mit freundlichen Grüßej

Wolfram

Benutzeravatar
meandtheshell
Beiträge: 4054
Registriert: 14.01.2005 17:51:30

Beitrag von meandtheshell » 10.06.2007 03:09:09

Gut dann

Code: Alles auswählen

mount -o noexec -rbind /home /home_noexec
Ob das auch für jfs funktioniert kann ich nicht prüfen.

btw - ich denke nicht das wir die einzigen sind die dem Bundestrojaner die Möglichkeit nehmen wollen seine Nase in die Privatangelegenheiten der Bürger zu stecken. Ich bin mir sicher dazu ist schon mehr im Netz - hat dazu jemand schon was gefunden?

Markus

wow
Beiträge: 124
Registriert: 29.01.2004 17:17:17
Lizenz eigener Beiträge: neue BSD Lizenz
Wohnort: 12355 Berlin

Beitrag von wow » 10.06.2007 03:16:37

Hallo Marcus,

die Idee mit dem noexec hatte ich auch. Aber dann habe ich aber vor ein Paar im Web gelesen -den Link habe ich leider verloren-, daß dieses umgangen werden kann. Man ruft die passende Library in Kombination mit dem Programm auf und schon ist es im noexec Directory ausführbar.

Benutzeravatar
meandtheshell
Beiträge: 4054
Registriert: 14.01.2005 17:51:30

Beitrag von meandtheshell » 10.06.2007 03:51:47

Der Link muss her bzw. andere Lösungsansätze für das Problem.
Happy googling :D



Beste aber sicher aufwändigste Lösung:
Schlußendlich kann man sich einen grsecurity [0] Kernel installieren und secure path execution verwenden.
Im Grunde funktioniert das so, dass jedes exekutierbare Programm einer Bestätigung des Users Bedarf bevor es das erstemal ausgeführt (bzw. vor jeder ausführung = einstellbar) wird. So hat man Kontrolle über was passiert und das auf Kernelebene. Alles ist mittel Paketmanagementsystem zu bekommen - kompilieren muss man den Kernel aber (es gibt kein fertiges binary).

Code: Alles auswählen

markusgattol@pc1:~$ acs 'grsecurity|gradm2'
chpax - user-space utility to control PaX flags
gradm - Administration program for the GrSecurity ACL system
gradm2 - Administration program for the grsecurity2 RBAC based ACL system
kernel-patch-grsecurity2 - grsecurity kernel patch - new major upstream version
paxctl - user-space utility to control PaX flags - new major upstream version
paxtest - Test suite for the PaX kernel patch
markusgattol@pc1:~$ 

Nachteil:
- das ist im Grunde whitelising und am Anfang auf einem Desktopsystem wird man sicher 2-3 Tage nichts anderes machen als jeden kleinen Spass zu bestätigen - an ernsthaftes arbeiten ist während dieser Phase wohl nicht zu denken.
-Desweiteren, einmal eingerichtet, ist der Zeitaufwand um ein solches System zu betreuen und zu administrieren sicher um den Faktor 3-5 höher als bei normalen Systemen.
- nicht sorgfältig gemacht ist alles nichts wert - dazu muss man sich die ganze docu durchlesen und alles verstehen
- imho ist das sogar für den fortgeschrittenen User zu anspruchsvoll (nicht das Einrichten aber das wissen was eigenlich im System passiert wenn man das Zeug verwendet fehlt)

Ich habe das bei Servern im Einsatz - kostet mindestens einen Tag bis man die Programme und Dienste die da laufen (und das sind ~ 10% von dem was auf Desktops an ausführbaren Programmen läuft) gewhitelistet hat.

Vorteil:
das ist eine grundsolide, allesumfassende Lösung die, wenn sorgfältig gemacht eigentlich keine Risiken offen lassen sollte

Am Desktop habe ich das noch nicht, da ich aber paranoid++ bin wird das wohl bald gemacht werden. Muss ich eben einmal ein paar Tage zum Enter drücken, nachforschen und lesen einplanen ;)

[0]
http://en.wikipedia.org/wiki/GrSecurity
http://debian.linux-systeme.com/
http://www.grsecurity.net/confighelp.php
http://silentwire.net/~lobo/files/grsec.txt <--- davon (gradm) redete ich oben - das benötigt Zeit, viel Zeit und Sorgfalt
http://www.c3a.de/wiki/index.php/Grsecurity
http://forums.grsecurity.net/viewtopic. ... c61856dc0a
http://forums.grsecurity.net/viewtopic. ... f4433226ef
http://forums.grsecurity.net/viewtopic. ... 47867dc205
http://forums.grsecurity.net/viewtopic.php?p=5566&
http://forums.grsecurity.net/viewtopic. ... 13636a40dc
Teils sind die Links nicht mehr so aktuell aber das Prinzip bleibt ja das gleiche - die neuen Softwareversionen muss man eben nehmen.

Und weil so oft von Anfänger zu grsec bzw. pax gefragt: Nein, es gibt keine fertig kompilierten Kernelpakete weil man sein System eben "trainieren" muss (siehe oben).


Markus

Benutzeravatar
Savar
Beiträge: 7174
Registriert: 30.07.2004 09:28:58
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Berlin

Beitrag von Savar » 10.06.2007 09:25:10

wow hat geschrieben:Vielleicht bin ich paranoid. Aber angeregt durch Meldungen über den Bundestrojaner halte ich es auch unter Linux nicht für abwegig, daß einem User bspw. über den Browser ein Schnüffelprogramm untergejubelt wird. Dieses Programm könnte ja dann Informationen über den Inhalt der Platte, soweit für ihn lesbar, übermitteln.
vielleicht interessiert dich ja https://www.debianforum.de/forum/viewtopic.php?t=85150
wenn du dann die Kritischen Sachen wie Online-Banking und Einkaufen nur über fest definierte Seiten machst und das dann als dein normaler User, dann bist du ziemlich sicher (behaupte ich einfach mal)..
MODVOICE/MYVOICE
Debianforum Verhaltensregeln
Log Dateien? -> NoPaste

wow
Beiträge: 124
Registriert: 29.01.2004 17:17:17
Lizenz eigener Beiträge: neue BSD Lizenz
Wohnort: 12355 Berlin

Beitrag von wow » 11.06.2007 11:13:18

@savar

Dein Lösungsvorschlag ist auch ein gangbarer Weg, wenn man diesen User für Standardsurfen oder nur sicheres Surfen benutzt; je nach dem wie man an die Sache herangeht. Allerdings ist ein Nachteil damit noch nicht aus dem Wege geräumt:

Programme können immer noch immer überall ausgeführt werden. Obwohl natürlich bei restriktiver Bestimmung der Leserechte die wirklich privaten Daten des anderen Users nicht gelesen werden können. Aber kann ich mir sicher sein, daß dieses wie auch immer installierte Programm den Netzwerkverkehr nicht ausschnüffelt?

@meandtheshell

Das grsecurity habe ich zwischenzeitlich installiert. Eine zugegebenermaßen quick and dirty Installation -insbes. mit dem Trusted Path- hat schon erste Verbesserungen gebracht. Nunmehr kann der einfache User nicht mehr in Verzeichnissen wie /tmp usw. Programme, die dort liegen, ausführen. Das Problem mit seinem Homeverzeichnis bleibt bislang noch bestehen. Hier kann er nach wie vor Anwendungen ausführen, die in seinem Verzeichnis liegen. Aber vielleicht liegt das im Moment an meiner quick und dirty Konfiguration, die in den nächsten Tagen selbstverständlich verfeinert werden muß.

MfG

Wolfram

Benutzeravatar
KBDCALLS
Moderator
Beiträge: 22456
Registriert: 24.12.2003 21:26:55
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Dortmund
Kontaktdaten:

Beitrag von KBDCALLS » 11.06.2007 13:03:08

Da hilft dann /home /tmp usw. jeweils auf eine extra Partition . Und die mit noexec mounten.
Was haben Windows und ein Uboot gemeinsam?
Kaum macht man ein Fenster auf, gehen die Probleme los.

EDV ist die Abkürzung für: Ende der Vernunft

Bevor du einen Beitrag postest:
  • Kennst du unsere Verhaltensregeln
  • Lange Codezeilen/Logs gehören nach NoPaste, in Deinen Beitrag dann der passende Link dazu.

wow
Beiträge: 124
Registriert: 29.01.2004 17:17:17
Lizenz eigener Beiträge: neue BSD Lizenz
Wohnort: 12355 Berlin

Beitrag von wow » 11.06.2007 13:25:15

@kbdcalls

Leider hilft das nicht.

Wenn in ein noexec gemountetes Verzeichnis eine Anwendung kopiert und diese direkt in diesem Verzeichnis aufgerufen wird, funktioniert das noexec.

Aber rufe mal die Anwendung in dem "eingeschrängten" Verzeichnis wie folgt auf:

Code: Alles auswählen

 bash ./<Anwendung> 
Die Anwendung wird gnadenlos ausgeführt. Und schon sind wichtige Sicherheitsbemühungen außer Kraft gesetzt.

Das Problem mit der bereits erwähnten Library ist zum Glück mittlerweile beseitigt.

MfG

Wolfram

Benutzeravatar
meandtheshell
Beiträge: 4054
Registriert: 14.01.2005 17:51:30

Beitrag von meandtheshell » 11.06.2007 16:54:53

- das ganze noexec mounten ist ohnehin imho nicht gut - so unterbindet man Dinge die man evtl. doch ausführen lassen möchte
- @wow: nein, richtig konfiguriert kann auch root nicht mehr alles machen; es gibt einer neuen User (lesen!) welcher mächtiger ist als root; deine Leute in ihren /home dirs kannst du zu 100% kontrollieren (lesen!)

Markus

wow
Beiträge: 124
Registriert: 29.01.2004 17:17:17
Lizenz eigener Beiträge: neue BSD Lizenz
Wohnort: 12355 Berlin

Beitrag von wow » 11.06.2007 17:20:10

@meandtheshell

Mittlerweile ist es mir über grsecurity auch gelungen, den User meinen Anforderungen entsprechend einzuschränken. Er kann in seinem eigenen Verzeichnis und in den anderen, in denen er schreiben darf, keine Anwendung mehr ausführen.

Ohne selbstherrlich zu sein zu wollen, ist das schon aus Sicht des Bundestrojaners ein großer Schritt, um Stasi2 das Leben schwerer zu machen. Denn jetzt kann ich -aus Nachlässigkeit oder warum auch immer- versehentlich ein Programm abspeichern lassen; und der Browser soll meinetwegen versuchen, das Programm auszuführen. Es wird nicht gehen.

Die anderen Dinge bzgl. von grsecurity werden natürlich jetzt auch in Angriff genommen.

MfG

Wolfram

Benutzeravatar
Saxman
Beiträge: 4233
Registriert: 02.05.2005 21:53:52
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: localhost

Beitrag von Saxman » 11.06.2007 17:36:06

wow hat geschrieben:@kbdcalls

Leider hilft das nicht.

Wenn in ein noexec gemountetes Verzeichnis eine Anwendung kopiert und diese direkt in diesem Verzeichnis aufgerufen wird, funktioniert das noexec.

Aber rufe mal die Anwendung in dem "eingeschrängten" Verzeichnis wie folgt auf:

Code: Alles auswählen

 bash ./<Anwendung> 
Die Anwendung wird gnadenlos ausgeführt. Und schon sind wichtige Sicherheitsbemühungen außer Kraft gesetzt.

Das Problem mit der bereits erwähnten Library ist zum Glück mittlerweile beseitigt.

MfG

Wolfram
Was du schreibst kann Ich bei mir nicht nachvollziehen.
Hab mein /home ,noexec gemountet.

Rufe ich eine Anwendung direkt auf

Code: Alles auswählen

 $ ./google-earth/googleearth-bin 
bash: ./google-earth/googleearth-bin: Keine Berechtigung
und auch mit deinem Befehl:

Code: Alles auswählen

 bash ./google-earth/googleearth-bin 
./google-earth/googleearth-bin: ./google-earth/googleearth-bin: cannot execute binary file
???
"Unix is simple. It just takes a genius to understand its simplicity." - Dennis Ritchie

Debian GNU/Linux Anwenderhandbuch | df.de Verhaltensregeln | Anleitungen zum Review und zum Verfassen von Wiki Artikeln.

Antworten