Linux Secure a doua parte

1. O privi înapoi

Intr-un articol anterior (a se vedea. „Resurse“ secțiune), am investigat funcționalitatea de bază și de a folosi de-a gata profile AppArmor. Înainte de a trece la subiectul principal al acestui articol - pentru a crea propriile profiluri, amintim pe scurt ceea ce știm deja:

  • AppArmor pune în aplicare controlul accesului obligatoriu bazat pe principiul „interzise tot ceea ce nu este permis în mod expres“;
  • AppArmor monitorizează numai acele programe pentru care există, de asemenea, încărcate profil (activ);
  • AppArmor este important pentru calea absolută la programul controlat - el diferențiază o cerere de la o alta;
  • AppArmor permite doar acele acțiuni care sunt listate în profilul regulile programului, interzicerea tuturor celorlalți;
  • Există două moduri de bază de control: modul de testare se plâng în care acțiunile nu sunt interzise (acesta este modul de învățare), dar fișierul jurnal este scris la o notificare privind politica de programe de profil, și pune în aplicare - modul de funcționare în care programele disponibile de acțiune sunt limitate în funcție de profilul;
  • au raportat încercări de a încălca regulile scrise în fișierul /var/log/audit/audit.log profil sau / var / log / mesaje (în funcție de setările).

2. Profile AppArmor

Securitatea oferită de AppArmor, pe baza profilului programului. De fapt, profilul este un fișier de configurare cu sintaxa. Acesta a fost mult timp acceptat faptul că, în * fișiere de configurare sistem Nix sunt stocate în text simplu; nu sunt profiluri de excepție și AppArmor. Luați în considerare unele dintre profilurile existente:

2.1. Acesta include profile si variabile predefinite

Crearea de profiluri pentru noi programe - nu este întotdeauna ușor, care necesită o atenție deosebită pentru detaliu. Facilitarea procesului de creare a unui profil conceput pentru regulile de bază, care poate fi o parte integrantă a oricărui profil.

Componența AppArmor include o colecție mare de seturi de reguli de bază care pot fi incluse în #include profil de directivă. Acestea sunt conținute în directorul /etc/apparmor.d/abstractions. Noi numim astfel de reguli set include profile, așa cum este acesta este scopul lor - acestea sunt, de fapt, sunt profilele, dar sunt utilizate numai în celelalte profiluri. Fiecare dintre profilurile incluse permite o funcționalitate specifică, de exemplu, efectuarea de autentificare, utilizarea serviciilor de rezolvare de nume, Kerberos, și așa mai departe. De obicei scop - funcționalitate care permite profilul inclus - este clar din numele fișierelor:

În plus față de regulile care permit funcționalitatea, AppArmor are, de asemenea, un set de variabile predefinite (fișiere, ale căror descrieri sunt cuprinse în /etc/apparmor.d/tunables catalog) de tip @, @, și altele. Cu toate acestea, într-o varietate de variabile sunt foarte departe în spatele profilelor incluse:

Desigur, numărul de variabile pot fi completate în mod independent, (precum și împărtăși experiența lor cu comunitatea - a se vedea punctul 6 din secțiunea „Resurse“ ..).

2.2. POSIX-oportunități și drepturile de acces la fișiere și directoare

Ne întoarcem acum la regulile ei înșiși, permite programul pentru a efectua acțiuni specifice. Regulile sunt împărțite în a permite unele oportunități și drepturi de acces pentru fișiere și directoare.

Să începem cu un simplu: pentru a stabili drepturi de acces - aceasta este restrângerile cele mai naturale și răspândite impuse cererii. Drepturile Setarea de citire-scriere-executare poate fi util pentru orice program: vă puteți proteja fișierele de configurare a serverului de ștergerea accidentală, proprii de date private - din afară lectură programe. Mai mult decât atât, chiar și atunci când se stabilesc restricții de acces AppArmor oferă o gamă largă de opțiuni pentru a asigura flexibilitatea necesară pentru operarea confortabilă, inclusiv restricțiile privind procesele de copil (a se vedea tabelul 1).

Profilul dreapta, indicând fișierele de program disponibile și directoarele sunt scrise după cum urmează: "<путь к каталогу> <права доступа>“.

Tabelul 1. Moduri de acces AppArmor obiecta

Noul proces nu este controlat, dar AppArmor curăță variabile de mediu.

Așa cum este conceput de creatorii AppArmor, este un set de opțiuni oferă capacitatea necesară și suficientă a limita drepturile programelor de acces la fișiere și directoare. De asemenea, permite un control suplimentar procesele copil (evitarea chroot dezavantaje) nu produce un „Sandbox“ separat nu este doar cererea de funcționare originală, dar urmașii săi. Cu toate acestea, după cum nu fără motiv, se menționează în documentația (a se vedea. P. 4, în secțiunea „Resurse“), trebuie să evitați utilizarea ultimele două opțiuni, deoarece acestea provin din procesele copil sub controlul AppArmor. De asemenea, este ușor de ghicit, că anumite opțiuni se exclud reciproc (de exemplu, ix și px).

AppArmor este, de asemenea, posibilitatea de a controla alte caracteristici care nu sunt legate la o citire-scriere-fișier obiecte de drepturi de execuție. Regulile pot specifica profilul pentru a permite utilizarea acestor caracteristici în standardul POSIX (de exemplu, un proces de schimbare prioritățile de execuție).

Fiecare astfel de oportunitate este scris pentru capacitatea de cuvinte cheie, precum și o listă completă de caracteristici disponibile POSIX-pot fi văzute prin tastarea capabilități de om (nu uitați să creați o regulă pentru a elimina «CAP_» numele dacă este posibil). De exemplu, în exemplul de profil programe-sbin.syslog ng oferi oportunități chown (POSIX-oportunitate CAP_CHOWN) - schimbarea arbitrară UID și GID a fișierului; dac_override (standard - CAP_DAC_OVERRIDE) permite programelor care sunt conduse de către un utilizator privilegiat, nu iau în considerare accesul la dosar, și așa mai departe.

3. Crearea unui nou profil

comoditatea utilizatorului AppArmor nu se termina acolo clar profilul de sintaxă. Compoziția AppArmor include un set de instrumente pentru a vă ajuta să creați profiluri pentru diferite (inclusiv propriile lor) programe: autodep, genprof și logprof (în sistem există și un link simbolic la comenzile care au sufixul «AA-», arătând spre AppArmor afiliere: aa-autodep , aa-aa-genprof și logprof). Aceste instrumente sunt concepute pentru a simplifica foarte mult procesul de creare a unui profil. Să încercăm să le folosească pentru a crea un profil pentru utilități passwd (un profil pentru acest program este deja într-un set suplimentar de profiluri în directorul / etc / AppArmor / profile / figuranti si / usr / share / doc / AppArmor-profile / extra-uri de pe OpenSUSE și Ubuntu, respectiv - pentru mai bine atunci rezultatele pot fi comparate).

3.1. Creați un profil nou pe un program de passwd exemplu

Crearea unui nou profil necesită ceva timp și atenție. Cu toate acestea, nimic nu se poate face ireversibil distructive - puteți șterge oricând un profil de rău și de a reveni la primul pas.

Toate etapele ulterioare sunt descrise cu referire la OpenSUSE 11.1. Cu toate acestea, crearea de profiluri cu alte distribuții stabilite AppArmor (de exemplu, Ubuntu sau Mandrive) nu trebuie, de asemenea, provoca dificultăți.

Crearea unui profil de bază al programului cu ajutorul de utilitate autodep:

Iei cu amabilitate un interes, fie pentru a crea un profil nou, sau pur și simplu copiați nevoia existentă:

[1 - profile inactive pentru locale / usr / bin / passwd]

[(V) iew Profil] / (U) se Profil / (C) reate New Profile / Abo (r) t / (F) Inish

Apăsați «C» - pentru a crea un nou profil.

Zypisyvaetsya actualizat profilul / usr / bin / passwd.

Toate observat interpretul typo, dar iertat ei - toate acestea fac greșeli.

Uite ce sa întâmplat:

Bit. Mai degrabă se pare ca un șablon decât la profilul real. Dar profilul plasat automat în modul, care este util în următoarele etape se plâng.

Pornește utilitatea genprof profilare:

[(S) poate log sistem pentru evenimente sub-domen] / (F) Inish

La pornirea de utilitate genprof solicită - trebuie să într-o fereastră separată (fără a întrerupe munca genprof) rula aplicația profilată și „pentru a arăta programul“, adică să îndeplinească tot ceea ce faci în mod normal, și că este comun pentru program. Funcțiile îndeplinite de programul passwd nu este foarte diversă, astfel încât pur și simplu schimba parola utilizatorului:

În acest moment, AppArmor în fișierul jurnal înregistrează toate apelurile fiind programul profilate pentru fișiere și foldere, și înregistrează informații despre utilizarea capacităților POSIX:

Când ați terminat cu aplicația, faceți clic pe terminalul rulează genprof utilitate butonul «S», și apoi la rândul său, permite acțiunile realizate de program profilat:

[(A) llow] / (D) eny / (G) / w / (Glob E) / (N) ew / Abo (r) / (F) / (O) pts Inish LOB xt t

Adăugat /lib/security/pam_*.so profilul proprietarului mr.

Prezintă o selecție necesită un pic de explicație:

Permite - admiterea acțiunii;

Deny - neagă acțiunea;

Glob - permite acțiunea de la toate fișierele din directorul specificat;

GLOB w / Ext - permite acțiunea de la toate fișierele de acest tip (cu extensie) în directorul specificat;

Nou - modul de editare - puteți specifica o altă cale către fișierul / directorul în locul genprof propuse;

Abandonați - întrerupe munca ta, vei pierde toate modificările - profil vor rămâne așa cum a fost înainte de genprof de lansare;

Finish - completează utilitatea genprof. Aceasta salvează orice modificări efectuate în normele;

Opteazã - afișează opțiuni suplimentare de reguli.

Adesea genprof ofera utilizatorului posibilitatea de a alege din mai multe versiuni ale Regulamentului (care sunt numerotate, iar opțiunea propusă între paranteze drepte), care poate fi selectată prin apăsarea numărul care corespunde numărului. In exemplul de mai sus, următoarele exemple de realizare:

Se propune să se conecteze modelul de autentificare , sau a permite accesul la /lib/security/pam_deny.so fișier, sau să permită accesul la fișiere pe un /lib/security/pam_*.so șablon. Ultima opțiune este activă - selectați Permiteți, vă face la profilul să se pronunțe permițând accesul la toate fișierele de pe modelul specificat.

Profilul final va fi transferat la modul de aplicare. Performanțele sale pot fi verificate din nou prin rularea programului passwd: dacă parola este capabil de a schimba, atunci excesul nu ai interzis nimic.

Ca urmare, după câteva încercări nu foarte de succes, profilul final a fost obținut după cum urmează:

Dacă profilul rezultat dintr-un motiv pe care nu le place (prea multe reguli similare sau li sa permis ceva complet de programe care nu sunt necesare), puteți repeta procedura sau pentru a edita manual profilul. De exemplu, în cazul în care a fost creat de tine, pe baza propunerilor, în general, genprof

trebuie schimbată din:

(Sau, după cum veți vedea mai jos, puteți restrânge și mai mult domeniul de aplicare:

Programul passwd creează un fișier temporar, care este în numele shadow.tmp șir aleator (șase caractere), astfel încât dreptul de a citi și de a scrie ar trebui să fie furnizate pentru toate aceste fișiere.

În mod implicit, proprietarul opțiune va fi înregistrată regulile (pentru un motiv oarecare nu apare în documentele oficiale) - el subliniază faptul că accesul la fișierul / directorul este permis doar proprietarului. utilitate passwd pentru că este lipsit de relevanță, în timp ce este utilizat de către diferiți utilizatori ai programelor, aceasta este o ocazie foarte importantă. De exemplu, atunci când un acces browser-ul setările de permisiune pentru fișiere / istorie etc. Utilizați tipul de regulă

În acest caz, rulând Firefox, puteți fi siguri că programul poate accesa doar directorul home al utilizatorului subdirector .firefox, a lansa browser-ul (care este proprietarul tuturor fișierelor și subdirectoarele .firefox).

În ultimele două exemple, regulile pe care le-am aplicat șabloane substituții (globs). Din moment ce se poate specifica mai multe căi și nume de fișiere folosind aceste modele (Tabelul 2).

TABELUL 2. Șabloane permutări