|
1.
Accesibil tuturor pentru citire
Utilizatorii normali nu ar trebui să aibă acces la fişierele de configurare sau
parole. Un atacator poate sustrage parolele din bazele de date sau site-uri web
şi să le utilizeze pentru compromiterea -- sau chiar mai rău, pentru ştergerea
-- datelor. De aceea este important ca permisiunile fişierelor să fie corecte.
Dacă sunteţi sigur că un fişier este utilizat doar de root, atribuiţi-i
acestuia permisiunile 0600 şi utilizatorul corect cu chown.
1.
Accesibil pentru scriere tuturor/grupului
Cod 1.1: Găsirea fişierelor şi directoarelor accesibile pentru scriere tuturor |
# /usr/bin/find / -type f \( -perm -2 -o -perm -20 \) \
-exec ls -lg {} \; 2>/dev/null >writable.txt
# /usr/bin/find / -type d \( -perm -2 -o -perm -20 \) \
-exec ls -ldg {} \; 2>/dev/null >>writable.txt
|
Aceasta va crea un fişier imens cu permisiunile tuturor fişierelor ce au
permisiuni de scriere setate, fie pentru grup, fie pentru oricine. Verificaţi
aceste permisiuni şi eliminaţi fişierele accesibile pentru scriere tuturor,
prin execuţia /bin/chmod o-w pentru fişierele respective.
1.
Fişiere SUID/SGID
Fişierele cu bitul SUID sau SGID setat, execută cu privilegiile utilizatorului
sau grupului proprietar şi nu cu cele ale utilizatorului care execută
acel fişier. În mod normal, aceşti biţi sunt utilizaţi pe fişierele ce trebuie
să ruleze ca root pentru a îşi urma paşii de execuţie firesc. Aceste fişiere
pot conduce la compromiteri de root locale (dacă au probleme de securitate).
Aceasta este periculos şi fişierele cu biţii SUID sau SGID setaţi ar trebui să
fie evitate cu orice preţ. Dacă nu utilizaţi aceste fişiere, executaţi chmod
0 pe ele sau dezinstalaţi pachetul care le conţine (verificaţi cărui pachet
aparţin prin utilizarea equery; dacă nu îl aveţi deja instalat, tastaţi
emerge gentoolkit). Altfel, dezactivaţi bitul SUID cu chmod -s.
Cod 1.1: Găsirea fişierelor setuid |
# /usr/bin/find / -type f \( -perm -004000 -o -perm -002000 \) \
-exec ls -lg {} \; 2>/dev/null >suidfiles.txt
|
Aceasta va crea un fişier conţinând lista tuturor fişierelor cu bitul SUID/SGID
activ.
Cod 1.1: Lista cu binarele setuid |
/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
|
Implicit, Gentoo Linux nu are multe fişiere SUID (deşi acest lucru depinde de
pachetele instalate), dar aţi putea să vă creaţi o listă ca cea de mai sus.
Majoritatea comenzilor nu ar trebui să fie rulate de utilizatorii normali, ci
doar de root. Dezactivaţi botul SUID pentru ping, mount,
umount, chfn, chsh, newgrp, suidperl,
pt_chown şi traceroute prin execuţia comenzii chmod -s pe
fiecare fişier în parte. Nu dezactivaţi bitul pentru su,
qmail-queue sau unix_chkpwd. Dezactivarea setuid pentru aceste
fişiere vă va opri să mai puteţi rula su şi recepţionarea mesajelor
electronice. Prin dezactivarea bitului (în cazurile în care este sigur) opriţi
posibilitatea ca un utilizator de sistem normal (sau un atacator) să obţină
acces de root prin oricare din aceste fişiere.
Singurele fişiere SUID pe care le am pe sistemul propriu sunt su,
passwd, gpasswd, qmail-queue, unix_chkpwd şi
pwdb_chkpwd. Dar, dacă rulaţi aplicaţia X, este posibil să aveţi mai
multe, deoarece X are nevoie de acces superior ce îl poate obţine prin
intermediul SUID.
1.
Binare şi hardlink-uri SUID/SGID
Un fişier este considerat şters când nu mai există nici un link ce indică spre
acesta. Acest concept poate fi ciudat, dar luaţi în considerare un fişier ca
/usr/bin/perl care este, de fapt, un link către inod-ul unde este
stocată data. Orice număr de link-uri pot indica către acest fişier şi până
când toate acestea dispar, fişierul încă există.
Dacă utilizatorii dvs. au acces pe o partiţie ce nu este mount-ată cu
nosuid sau noexec (spre ex., dacă /tmp,
/home sau /var/tmp nu sunt partiţii separate) ar
trebui să vă asiguraţi că utilizatorii nu crează hardlink-uri indicând spre
binare SUID sau SGID, astfel încât, după ce Portage se actualizează, ei încă
mai au acces la vechile versiuni.
Atenţie:
Dacă aţi primit un avertisment de la portage despre unele hardlink-uri rămase
şi utilizatorii dvs. pot scrie pe o partiţie ce permite execuţia fişierelor
SUID/SGID, ar trebui să consultaţi această secţiune cu atenţie. Unul din
utilizatorii dvs. poate încerca să înşele procesul dvs. de actualizare prin
păstrarea unei versiuni vechi a programului. Dacă utilizatorii dvs. nu pot crea
fişierele lor proprii SUID, pot doar să execute programe utilizând modulul de
încărcare dinamică (partiţiile mount-ate noexec), atunci nu aveţi de ce
să vă îngrijoraţi.
|
Notă:
Utilizatorii nu au nevoie de acces de citire pentru un fişier pentru a crea un
link la acesta, ci doar de permisiuni de citire pentru directorul ce conţine
acel fişiere.
|
Pentru a verifica numărul de link-uri al unul fişier, puteţi utiliza comanda
stat.
Cod 1.1: Comanda 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
|
Pentru a găsi fişierele SUID şi SGID cu mai multe link-uri, puteţi utiliza
find.
Cod 1.1: Găsirea binarelor suid/sgid cu mai multe link-uri |
$ find / -type f \( -perm -004000 -o -perm -002000 \) -links +1 -ls
|
|