|
1.
File leggibili da tutti
Gli utenti normali non dovrebbero avere accesso ai file di configurazione e alle
password. Un aggressore può rubare le password da un database o da un sito web,
utilizzandole poi per danneggiare, o ancora peggio per distruggere, dei dati.
Ecco perché è importante che i permessi sui file siano impostati correttamente.
Se si è sicuri che un file è utilizzato solo da root, assegnargli i permessi
0600 e assegnare il file al giusto utente con chown.
1.
File scrivibili da tutti o da un gruppo
Codice 1.1: Trovare file e directory scrivibili da tutti |
# 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
|
Questi comandi creeranno un lungo file con i permessi di tutti i file aventi il
permesso di scrittura impostato per un gruppo o per tutti. Controllare i
permessi ed eliminare i file scrivibili da tutti, eseguendo il comando
/bin/chmod o-w sui file in questione.
1.
Files SUID/SGID
I file con il bit SUID o SGID impostato vengono eseguiti con i privilegi
dell'utente proprietario o del suo gruppo, e non con quelli dell'utente
che esegue il file. Normalmente questi bit vengono usati sui file che devono
essere eseguiti come root per poter fare ciò per cui vengono eseguiti. Questi
file possono compromettere la radice locale (se contengono buchi nella
sicurezza). Ciò è pericoloso, e per questo i file con bit SUID o SGID impostati
dovrebbero essere evitati ad ogni costo. Se non si usano questi file, usare
chmod 0 su di essi o eseguire l'unmerge del pacchetto da cui essi
provengono (controllare a quale pacchetto appartengono usando equery; se
non lo si ha già installato digitare emerge gentoolkit). Altrimenti
disattivare semplicemente il bit SUID con chmod -s.
Codice 1.1: Trovare files con SUID |
# find / -type f \( -perm -004000 -o -perm -002000 \) \ -exec ls -lg {} \;2>/dev/null
>suidfiles.txt
|
Questo comando creerà un file contenente una lista di tutti i file SUID/SGID.
Codice 1.1: Lista dei binari SUID |
/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
|
Come impostazione predefinita Gentoo Linux non ha molti file SUID (sebbene
questo dipenda da che cosa si ha installato), è comunque possibile ottenere una
lista come quella sopraelencata. La maggior parte dei comandi non dovrebbero
essere eseguiti da utenti normali, ma solo da root. Togliere il SUID bit da
ping, mount, umount, chfn, chsh,
newgrp, suidperl, pt_chown e traceroute, eseguendo
chmod -s su ogni file. Non rimuovere il bit da su,
qmail-queue o unix_chkpwd. Rimuovere setuid da questi file
impedirà di eseguire su e di ricevere la posta. Rimuovendo il bit (dove è
sicuro farlo) si rimuove la possibilità che un utente normale (o un aggressore)
conquisti i privilegi di root attraverso uno di questi file.
Gli unici file SUID che si hanno sul sistema di esempio sono su,
passwd, gpasswd, qmail-queue, unix_chkpwd e
pwdb_chkpwd. Tuttavia, se si sta eseguendo X se ne potrebbero trovare
anche altri, dato che X ha bisogno dell'accesso elevato reso possibile da
SUID.
1.
Binari SUID/SGID e hard link
Un file è considerato cancellato solo quando non ci sono più link che puntano
ad esso. Questo potrebbe sembrare strano, ma si consideri che un filename
come /usr/bin/perl è in realtà un collegamento all'inode dove i
dati sono memorizzati. Un numero potenzialmente infinito di link può puntare
al file, e finché tutti questi non sono spariti, il file continua ad
esistere.
Se gli utenti hanno accesso a una partizione che non è montata con nosuid
o noexec (per esempio, se /tmp, /home, o
/var/tmp non sono su partizioni separate) assicurarsi che gli
utenti non creino hard links a binari SUID o SGID, altrimenti dopo gli
aggiornamenti di Portage essi avranno ancora accesso alle vecchie versioni dei
programmi.
Avvertenza:
Se si è ricevuto un avviso da Portage riguardante degli hard link residui, e se
gli utenti possono scrivere su una partizione che consente di eseguire file
SUID/SGID, allora si deve leggere attentamente questa sezione. Uno degli
utenti potrebbe tentare di eludere un aggiornamento tenendo la versione datata
di un programma. Se gli utenti non possono creare files SUID, oppure se
possono eseguire programmi solo utilizzando il caricatore dinamico (partizioni
montate con noexec), allora non preoccuparsi.
|
Nota:
Gli utenti non hanno bisogno dell'accesso in lettura a un file per creare un
link ad esso, hanno bisogno solo dei permessi di lettura sulla directory che lo
contiene.
|
Per verificare quanti link ha un file, si usa il comando stat.
Codice 1.1: Comando stat |
$ 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
|
Per trovare i file SUID e SGID con collegamenti multipli, si usa find.
Codice 1.1: Trovare binari suid/sgid con collegamenti multipli |
$ find / -type f \( -perm -004000 -o -perm -002000 \) -links +1 -ls
|
|