Gentoo Logo

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

Actualizat la 31 Mai 2005

Versiunea originală a acestui document a fost actualizată ultima dată la 16 Septembrie 2006

Donate to support our development efforts.

Copyright 2001-2012 Gentoo Foundation, Inc. Questions, Comments? Contact us.