Beachtung von Dateirechten im SSH-Chroot

Rund um die Sicherheit des Systems und die Applikationen
bükkes
Posts: 23
Joined: 2003-05-20 00:04
Location: Aachen
 

Beachtung von Dateirechten im SSH-Chroot

Post by bükkes »

Hallo zusammen,

habe unter Woody den OpenSSH 3.4p1-1 mit diesem Patch (http://balu.kawo2.rwth-aachen.de/~mdobe ... -chroot.gz um Chroot-Funktionalität erweitert. Die beschränkten User verfügen über eine Strukur aus /bin, /etc, /lib und /usr. Notwendige Bibliotheken werden per ldd geprüft und ins Chroot kopiert, eine eingeschränkte passwd (und Konsorten) liegt ebenfalls vor. Soweit klappt auch alles prima :)

Eher zufällig ist mir aufgefallen, daß es Nutzern trotzdem möglich ist, innerhalb der Verzeichnisstruktur Dateien zu löschen, für welche eigentlich keine Schreibrechte vorliegen. Bei Verwendung von rm auf Dateien eines anderen Users innerhalb von Verzeichnissen, deren Besitzer der Nutzer ist, ist trotzdem eine Löschung möglich:

Code: Select all

bash-2.05a$ ls -al
total 5
drwxr-xr-x    2 scp-flor sshusers       72 Aug 30 12:33 .
drwxr-xr-x    9 scp-flor sshusers      256 Aug 30 12:32 ..
-rw-------    1 root     root            4 Aug 30 12:33 test.txt

bash-2.05a$ rm test.txt 
rm: remove write-protected file `test.txt'? y

bash-2.05a$ ls -al      
total 1
drwxr-xr-x    2 scp-flor sshusers       48 Aug 30 12:33 .
drwxr-xr-x    9 scp-flor sshusers      256 Aug 30 12:32 ..

bash-2.05a$
Ist der Inhaber des aktuellen Verzeichnisses jedoch ein anderer, werden die Rechte offensichtlich korrekt geprüft:

Code: Select all

bash-2.05a$ ls -al
total 5
drwxr-xr-x    2 root     root           72 Aug 30 12:34 .
drwxr-xr-x    9 scp-flor sshusers      256 Aug 30 12:32 ..
-rw-------    1 root     root            4 Aug 30 12:34 test.txt

bash-2.05a$ rm test.txt 
rm: remove write-protected file `test.txt'? y
rm: cannot unlink `test.txt': Permission denied
Das gleiche Verhalten tritt auch bei Verwendung von rmdir auf. Bei Nutzung von cat, chmod oder mkdir werden hingegen die vorliegenden Schreibrechte beachtet.

Habt Ihr eine Idee, wo ich die Ursache finden könnte?

Danke und viele Grüße,
Thorsten
sascha
Posts: 1325
Joined: 2002-04-22 23:08
 

Re: Beachtung von Dateirechten im SSH-Chroot

Post by sascha »

Dein User hat Schreibrechte in dem Verzeichnis. Daher kann er natürlich auch beliebig Dateien löschen. Egal wem diese gehören.
bükkes
Posts: 23
Joined: 2003-05-20 00:04
Location: Aachen
 

Re: Beachtung von Dateirechten im SSH-Chroot

Post by bükkes »

Sascha wrote:Dein User hat Schreibrechte in dem Verzeichnis. Daher kann er natürlich auch beliebig Dateien löschen. Egal wem diese gehören.
*grmpf* Danke, Sascha. Hüpf' von Schlauch herunter...

Damit hat sich auch der ursprüngliche Aufhänger gelöst: Nutzer sollen ihr Webalizer-Verzeichnis (gehört einem User webalizer) nicht löschen können, dieses liegt allerdings unterhalb von ~/htdocs. Dieses möchte also einfach mit einer Datei gefüllt werden :)

Bezüglich der im Chroot enthaltenen Binaries und Libraries sollte dies unkritisch sein. Diese können nicht ausgetauscht werden, da die zugehörigen Verzeichnisse root:root gehören. Ein vollständiges Löschen (und Neu-Anlegen) dieser Verzeichnisse sollte ausgeschlossen sein, weil dazu die enthaltenen Dateien gelöscht werden müßten:

Code: Select all

bash-2.05a$ ls -al
total 10
drwxr-xr-x    8 scp-flor sshusers      232 Aug 30 12:37 .
drwxr-xr-x    8 scp-flor sshusers      232 Aug 30 12:37 ..
-rw-------    1 scp-flor sshusers      331 Aug 30 06:56 .bash_history
drwxr-xr-x    2 root     root          312 Aug 30 14:44 bin
drwxr-xr-x    2 root     root           96 Aug 29 19:11 etc
drwxr-xr-x    2 scp-flor sshusers       48 Aug 29 19:11 htconfigs
drwxr-xr-x   10 scp-flor sshusers     1696 Aug 30 06:36 htdocs
drwxr-xr-x    2 root     root          384 Aug 29 19:11 lib
drwxr-xr-x    5 root     root          120 Aug 29 19:11 usr

bash-2.05a$ ls bin/ -al
total 705
drwxr-xr-x    2 root     root          312 Aug 30 14:44 .
drwxr-xr-x    8 scp-flor sshusers      232 Aug 30 12:37 ..
-rwxr-xr-x    1 root     root       511400 Aug 29 19:11 bash
-rwxr-xr-x    1 root     root        15816 Aug 29 19:11 chmod
-rwxr-xr-x    1 root     root         5118 Apr  8  2003 ldd
-rwxr-xr-x    1 root     root        43784 Aug 29 19:11 ls
-rwxr-xr-x    1 root     root        16520 Aug 29 19:11 mkdir
-rwxr-xr-x    1 root     root        42088 Aug 29 19:11 mv
-rwxr-xr-x    1 root     root         9916 Aug 29 19:11 pwd
-rwxr-xr-x    1 root     root        25352 Aug 29 19:11 rm
-rwxr-xr-x    1 root     root        10504 Mar 18  2002 rmdir

bash-2.05a$ rm -f bin/rm
rm: cannot unlink `bin/rm': Permission denied

bash-2.05a$ rm -Rf bin/
rm: cannot unlink `bin/ls': Permission denied
# [...]
rm: cannot remove directory `bin': Directory not empty

Oder übersehe ich in dieser Hinsicht einen Sicherheits-relevanten Aspekt?

vielen Dank für Tipps,
Thorsten