Înregistrarea conferinței
Ce mecanisme sunt incluse când selectăm elementul de meniu "Securitate" din caseta de dialog Proprietăți fișier? În acest articol voi încerca să răspund la această întrebare. Ca un exemplu, să ia tehnologia o listă de partiții logice de disc, resurse partajate LAN, precum și despre două instrumente convenabile, una dintre care este inclus cu NT, iar al doilea - în Resource Kit.
În modelul de restricționare a accesului Win32, există două concepte de bază:
Token-uri de acces - jetoane de acces (MD) care conțin informații despre utilizator;
Descriptori de securitate - descriptorii de securitate care conțin informații despre drepturile anumitor conturi pentru a accesa obiectul.
Când un utilizator se conectează la sistem, după o verificare reușită a numelui și a parolei, se creează un jeton de acces. Pentru fiecare proces care urmează în contextul acestui utilizator, este creată o copie a MD. Indicele de acces conține un set de identificatori de securitate (SID) care definesc conturile de utilizator și grupurile din care aparțin. În plus, MD conține o listă de privilegii (privilegii) - drepturile de acces la anumite obiecte furnizate unui cont. Cu aceste informații, sistemul de operare determină accesul utilizatorului la resurse.
Atunci când creați un obiect protejat, sistemul de operare îl atribuie unui descriptor de securitate (SD), protecției pe care utilizatorul o creează obiectul sau cea stabilită în mod prestabilit. Aplicațiile Win32 pot utiliza funcțiile API pentru a prelua și schimba informații despre accesul la obiecte.
Descriptorul de securitate conține informații despre proprietarul obiectului și poate include, de asemenea, următoarele liste de control al accesului la Lista de acces-contol (ACL):
Lista de control a accesului discreționar (DACL) - liste de control al accesului la delimitare care conțin utilizatori și grupuri cu drepturi de acces adecvate la obiect;
Lista de control al accesului la sistem (SACL) - liste de control al accesului la sistem care determină modul în care auditurile încearcă să acceseze un obiect.
Lista de control al accesului conține o listă cu intrări de control acces (ACE). Fiecare intrare conține un set de steaguri de biți și SID ale mandatarului, utilizatorul sau grupul căruia i se aplică aceste drepturi.
Să ne ocupăm mai degrabă de aceste obiecte.
Descriptor de securitate
Aceste obiecte conțin informații de securitate asociate unui obiect protejat. Din punct de vedere fizic, acest obiect este o structură SECURITY_DESCRIPTOR descrisă în fișierul Windows.h:
Structura SECURITY_DESCRIPTOR este utilizată pentru a accesa informații despre securitatea obiectelor. Dar nu puteți schimba câmpurile direct în această structură. Pentru a face acest lucru, trebuie să utilizați funcții speciale (de exemplu, SetSecurityDescriptorOwner (...)). În plus, API-ul Win32 oferă o interfață pentru crearea și inițializarea unui mâner SD pentru obiecte noi.
Simbolul de acces
Tokenul de acces este un obiect al sistemului de operare care descrie contextul de restricționare a accesului la un proces sau un fir. Acesta conține privilegii care corespund contului de utilizator asociat procesului sau firului. Indicele de acces este creat după identificarea reușită a utilizatorului în sistem. După aceea, fiecare proces care este inițiat de acest utilizator într-un fel sau altul este însoțit de o copie a marker-ului său.
ID-ul de securitate SID
Un parametru unic de lungime variabilă care definește contul și este stocat în baza de date de securitate Windows NT - asta este SID. La începutul fiecărei sesiuni, odată ce utilizatorul este identificat în sistem, SID-ul său este preluat din baza de date și plasat în jetonul de acces. În plus, această valoare este utilizată de sistemul de operare pentru toate acțiunile utilizatorului cu obiecte protejate.
Există mai multe SID-uri standard utilizate pentru conturi:
NULL - S-1-0-0 - SID al grupului, care nu include utilizatorii. Folosit numai când SID este necunoscut;
World - S-1-1-0 - un grup care include toți utilizatorii;
Local - S-1-2-0 - utilizatori care au acces fizic direct la sistem;
ID proprietar de creator - S-1-3-0 - SID, care înlocuiește SID-ul utilizatorului care a creat obiectul. Acest cod SID este utilizat pentru înregistrările ACE vechi (a se vedea mai jos);
Creator Group ID - S-1-3-1 - o valoare care înlocuiește SID-ul grupului principal la care aparține utilizatorul care a creat obiectul. Acest SID, ca cel precedent, este utilizat pentru înregistrările ACE vechi.
Lista de control al accesului ACL
ACL este reprezentat de structura descrisă în Windows.h:
Pentru Windows NT 3.5, 3.51, 4.0, este definit numărul maxim de intrări de control al accesului specificat de lista de control al accesului (consultați articolul Q166348 din Baza de cunoștințe Microsoft). Ea este egală cu 1820.
Intrare control acces ACE
Primul câmp AceType definește tipul structurii. Evident, un pointer la orice structură _ACE poate fi convertit într-un pointer la ACE_HEAER, primiți un tip ACE, după care pointerul este convertit într-un pointer la structura de date corespunzătoare care este recepționată. Am observat că această tehnică este folosită pe scară largă în diferite produse API Microsoft.
Lista partițiilor dispozitivelor de disc
În codul din listare 1, funcția GetParti-tionTypeEx este scrisă pentru mine. Obține parametrii unității de disc, returnează numele sistemului de fișiere instalat pe acesta și verifică dacă sistemul de fișiere acceptă controlul accesului (a se vedea Listing 2).
API-ul Win32 utilizează funcția pentru a prelua informații despre partiția de disc
Parametrii săi sunt descriși în Tabelul 2. Să examinăm mai îndeaproape parametrul lpFileSystemFlags. Acesta este un set de steaguri de biți. Printre altele, este definit steagul FS_PERSISTENT_ACLS. Prezența acestui steag înseamnă că dosarele și fișierele de partiții sunt obiecte protejate. Înainte de a obține listele ACE pentru un obiect, este bine să vă asigurați că sistemul de fișiere le acceptă. Acum știm cum să o facem.
Lista înregistrărilor de control al accesului pentru obiectele protejate
Pentru a obține o structură ACL pentru un obiect numit, trebuie să utilizați funcția GetNmedSe-curityInfo. Printre alte valori, aceasta returnează indicii la DACL și SACL. Suntem interesați de primul dintre ei. Acum avem toate informațiile necesare pentru a crea o listă ACE. Funcția GetAce vă permite să treceți prin întreaga listă de anteturi ACE_HEADER corespunzătoare ACL. Trei parametri sunt trecuți la această funcție. Primul este pointerul către ACL, cel de-al doilea este numărul de secvență ACE, pointerul la care este returnat în al treilea parametru (a se vedea Listing 3).
Lista de resurse partajate și drepturi pentru aceștia
Ultima întrebare pe care vreau să o analizez în detaliu se referă la obținerea unei liste de acțiuni locale și a drepturilor lor de acces. Procedura de obținere a drepturilor la obiecte este identică cu procedura descrisă pentru obținerea drepturilor de accesare a obiectelor de fișier. Prin urmare, codul care o implementează este inclus în codul procedurii prezentate în Lista 4. și nu este discutat separat. Acest lucru este tipic API-ului de securitate, care oferă o interfață generică tuturor obiectelor protejate. Într-adevăr, din punctul de vedere al sistemului de restricționare a accesului la Windows, o resursă partajată este același obiect numit, cum ar fi un fișier. Prin urmare, algoritmii de lucru cu ei sunt aceiași.
Lista de resurse partajate este furnizată de funcție
Pentru a obține o resursă SD, utilizați funcția
Pentru a obține lista ACE, utilizați câmpul shi502_security_descriptor, care conține descriptorul de securitate necesar.
Restaurați setările de securitate
Parametrii comenzii sunt:
Numele fișierului - fără alți parametri, afișează lista de utilizatori și drepturile lor de a accesa obiectul Filename.
/ T - modifică lista de înregistrări de control al accesului la obiect, iar dacă acesta este un dosar, atunci toate subdosarele.
/ E - înlocuiește lista înregistrărilor de control al accesului.
/ C - vă permite să continuați să lucrați în cazul unei erori de acces refuzate.
/ User G: perm - stabilește permisiunile pentru utilizatorul definit de parametrul utilizatorului la permisiunile obiectului:
N nu este; Citirea R; W - înregistrare; C - schimbare; F - control complet.
/ Utilizator R - șterge accesul specificat de utilizator la obiect.
/ P user: perm - modifică permisiunile pentru obiectul specificat în parametrul utilizatorului la obiectul descris de parametrul perm și poate fi:
N nu este; Citirea R; W - înregistrare; C - schimbare; F - control complet.
/ Utilizator D - interzice accesul utilizatorului la obiectul specificat.
Utilitarul vă permite să utilizați măști, de exemplu *. *, În nume de fișiere și foldere și să specificați și mai mulți utilizatori în aceeași comandă. Baza de cunoștințe descrie o metodă de utilizare a utilitarului cacls.exe pentru a modifica drepturile de acces ale utilizatorilor, dar și ale grupurilor, la obiectele din sistemul de fișiere. În acest caz, sintaxa este păstrată, dar numele grupului sunt cotate (Q162786).
Active Directory și accesul la informații de securitate
Distribuiți materialul împreună cu colegii și prietenii