[ << ]
[ < ]
[ Hauptseite ]
[ > ]
[ >> ]
6. Dateibereichtigungen
Inhalt:
6.a. Welt-lesbar
Normale Benutzer sollten zu Konfigurationsdateien oder Passwörtern keinen Zugang
haben. Ein Angreifer kann Passwörter aus einer Datenbank oder von einer Webseite
stehlen und verunstalten oder noch schlimmer: Daten löschen. Deswegen ist es
notwendig, dass die Berechtigungen korrekt gesetzt sind. Wenn Sie sicher sind,
dass eine Datei nur von root benutzt wird, geben Sie dieser die Berechtigung
0600 und ordnen Sie diese mit chown dem richtigen Benutzer zu.
6.b. Welt/Gruppen-schreibbar
Befehlsauflistung 2.1: Auffinden von Dateien und Verzeichnissen, die Welt-schreibbar sind |
# find / -type f \( -perm -2 -o -perm -20 \) -exec ls -lg {} \; 2>/dev/null >writable.txt
# find / -type d \( -perm -2 -o -perm -20 \) -exec ls -ldg {} \; 2>/dev/null >>writable.txt
|
Dies schafft eine riesige Datei mit Berechtigungen von allen Dateien, die
entweder Schreibberechtigungen für alle oder eine Gruppe haben. Überprüfen Sie
die Berechtigungen und eliminieren Sie die für alle schreibbaren Dateien durch
das Ausführen von /bin/chmod o-w für die Dateien.
6.c. SUID/SGID Dateien
Dateien bei denen das SUID oder SGID Bit gesetzt ist, werden mit den Rechten des
Benutzers bzw. der Gruppe ausgeführt, der diese Datei gehört.
Normalerweise werden diese Bits bei Dateien verwendet, die als root ausgeführt
werden müssen um ihren Zweck zu erfüllen. Diese Dateien können zu lokalen root
Einbrüchen führen (falls Sie Sicherheitslücken enthalten). Dieses ist
gefährlich, daher sollten Dateien mit gesetztem SUID/SGID Bit auf jeden Fall
vermieden werden. Sollten Sie diese Dateien nicht verwenden, dann wenden Sie
chmod 0 auf diese an oder unmergen das Paket welches diese Dateien
mitgebracht hat (das zugehörige Paket können Sie mit equery finden;
sollte es noch nicht installiert sein, dann geben Sie einfach emerge
gentoolkit ein). Ansonsten schalten Sie das SUID Bit einfach mit
chmod -s aus.
Befehlsauflistung 3.1: Auffinden von setuid Dateien |
# find / -type f \( -perm -004000 -o -perm -002000 \) -exec ls -lg {} \; 2>/dev/null >suidfiles.txt
|
Dies erzeugt eine Datei mit einer Liste aller SUID/SGID Dateien.
Befehlsauflistung 3.2: Liste der setuid binären Dateien |
/bin/su
/bin/ping
/bin/mount
/bin/umount
/var/qmail/bin/qmail-queue
/usr/bin/chfn
/usr/bin/chsh
/usr/bin/crontab
/usr/bin/chage
/usr/bin/expiry
/usr/bin/sperl5.6.1
/usr/bin/newgrp
/usr/bin/passwd
/usr/bin/gpasswd
/usr/bin/procmail
/usr/bin/suidperl
/usr/lib/misc/pt_chown
/usr/sbin/unix_chkpwd
/usr/sbin/traceroute
/usr/sbin/pwdb_chkpwd
|
Standardmäßig hat Gentoo Linux nicht viele SUID Dateien (allerdings hängt es
davon ab, was Sie installiert haben), aber Sie könnten eine Liste wie die obige
erhalten. Viele dieser Befehle sollten nicht von normalen Benutzern benutzt
werden, sondern nur von root. Schalten Sie das suid bit bei ping,
mount, umount, umount, chfn, chsh,
newgrp, suidperl, pt_chown und traceroute aus. Sie
tun dies mit dem Befehl chmod -s bei jeder einzelnen Datei. Entfernen
Sie das Bit nicht von su, qmail-queue oder unix_chkpwd.
Dies würde dazu führen, dass Sie nicht mehr su benutzen könnten und
keine Mail empfangen würden. Durch Entfernen des Bits (wenn es sicher ist, dies
zu tun) beseitigen Sie die Möglichkeit, dass ein normaler User (oder Angreifer)
root-Zugriff durch eine dieser Dateien erlangen kann.
Die einzigen SUID Dateien die ich auf meinem System habe sind su,
passwd, gpasswd, qmail-queue, unix_chkpwd und
pwdb_chkpwd. Aber wenn Sie X benutzen, könnten Sie einige mehr haben,
denn X benötigt diesen erweiterten Zugriff via SUID.
6.d. SUID/SGID Binärdateien und Hardlinks
Eine Datei wird nur als gelöscht angesehen, falls keine Links mehr auf sie
zeigen. Dies mag nach einem merkwürdigen Konzept klingen, aber bedenken Sie,
dass ein Dateiname wie /usr/bin/perl eigentlich nur ein Link auf
einen Inode ist, wo die Daten gespeichert sind. Eine beliebige Zahl von Links
kann auf eine Datei verweisen und solange noch einer existiert, existiert auch
die Datei.
Wenn Ihre Benutzer Zugang zu einer Partition haben, die nicht mit nosuid
oder noexec eingebunden sind (z. B. falls /tmp,
/home, oder /var/tmp nicht auf unterschiedlichen
Partitionen liegen), sollten Sie darauf achten, dass Benutzer keine Hardlinks
auf SUID oder SGID Binaries erstellen, so dass Sie nach einem Update durch
Portage immer noch Zugang zu alten Versionen haben.
Warnung:
Wenn Portage eine Warnung über verbliebene Hardlinks ausgegeben hat und Benutzer
Schreibrechte auf einer Partition haben, welche die Ausführung von SUID/SGID
Dateien erlaubt, dann sollten Sie diesen Abschnitt aufmerksam lesen. Einer der
Benutzer könnte versuchen das Update zu umgehen indem er eine alte Version eines
Programmes behält. Falls Benutzer keine eigenen SUID Dateien erstellen können
oder falls Sie Programme nur über den dynamischen Loader ausführen können
(Partitionen mit noexec eingebunden), dann brauchen Sie sich keine Sorgen
zu machen.
|
Notiz:
Benutzer brauchen keinen Lesezugriff auf eine Datei um einen Link zu ihr zu
erstellen; es werden lediglich Leserechte für das Verzeichnis benötigt in dem
diese sich befindet.
|
Um herauszufinden wie viele Links eine Datei hat, kann der stat Befehl
verwendet werden.
Befehlsauflistung 4.1: Stat Befehl |
$ stat /bin/su
File: `/bin/su'
Size: 29350 Blocks: 64 IO Block: 131072 regular file
Device: 900h/2304d Inode: 2057419 Links: 1
Access: (4711/-rws--x--x) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2005-02-07 01:59:35.000000000 +0000
Modify: 2004-11-04 01:46:17.000000000 +0000
Change: 2004-11-04 01:46:17.000000000 +0000
|
Um SUID und GUID Dateien mit mehreren Links zu finden, kann find
verwendet werden.
Befehlsauflistung 4.2: Finden von mehrfach verlinkten SUID/SGID Binärdateien |
$ find / -type f \( -perm -004000 -o -perm -002000 \) -links +1 -ls
|
[ << ]
[ < ]
[ Hauptseite ]
[ > ]
[ >> ]
Die Inhalte dieses Dokuments sind, sofern nicht explizit
anders genannt, unter der Creative Commons -
Namensnennung / Weitergabe Lizenz lizenziert. Die Gentoo Name and Logo
Usage Guidelines treffen zu.
|