Sistemul de operare Linux moștenit sistem de securitate Unix dezvoltat în 70-e, avansat la momentul creației, dar nu este în mod evident suficient pentru ziua de azi. Fiecare utilizator are libertate deplină de acțiune în cadrul autorității sale pe principiul „totul sau nimic“. Aceasta conduce la faptul că, pentru anumite sarcini utilizatorul este adesea mult mai multe drepturi decât este, de fapt necesar. Prin urmare, accesul la utilizatorul obține drepturile contului de sistem, se poate realiza un control aproape complet asupra sistemului.
Ce avem?
În timpul funcționării, orice aplicație poate fi diverse abateri, ceea ce duce în cele din urmă pentru a rula sale anormale. Acesta poate fi la fel de erori de sistem, erori în programare, sau situație indusă artificial. Și ultimul este departe de a fi mai puțin frecvente. Hacker pentru a găsi pe care le poate influența performanța programului, desigur, va încerca să profite de ea în anumite condiții.
Prezice comportamentul programului este practic imposibilă în stare degradată. Un exemplu în acest sens este software-ul anti-virus, care acum lucrează în „catch-up“, ritmul, nu oferă protecție împotriva atacurilor 0-day. Dar comportamentul normal al programului poate fi descrisă de reguli relativ simple. Ca urmare, au existat mai multe proiecte care implementează conceptul de protecție preempțiune. Printre ei LIDS. Grsecurity. AppArmor și SELinux. Dar cele mai populare sunt ultimele două.
proiectul AppArmor
AppArmor pentru a determina ce resurse de sistem și cu ce privilegii pot avea acces la o anumită aplicație care utilizează politici de securitate, numite profile (profile). Cu ajutorul lor, la modelul standard de securitate Unix-DAC (Access Control Discreționare) adaugă un mai puternic - MAC (Mandatory Access Control). Spre deosebire de SELinux și CAPACE. în care setările sunt globale pentru întregul sistem, profile AppArmor sunt dezvoltate în mod individual pentru fiecare aplicație (în SELinux, de asemenea, încet începe să folosească această abordare).
Pentru a simplifica setările din AppArmor include deja un set de profiluri standard, executați după instalare. Separat profilurile disponibile pentru multe aplicații populare și servere. Dacă nu puteți găsi un profil gata în crearea sa va ajuta la instrumente speciale (genprof și logprof). Pentru utilizatorii de OpenSUSE are o interfață grafică cu utilizatorul acestor instrumente, puse în aplicare în YaST2. Astfel, întreaga filozofie de lucru cu AppArmor vine în jos pentru a alege aplicațiile potrivite, care necesită privilegii limitate, și de a crea profiluri de securitate / editare.
Instalarea AppArmor în Ubuntu
Începând cu versiunea 7.04 AppArmor inclusă oficial în depozitul de Ubuntu. și probleme cu instalarea acolo:
$ Sudo apt-get install AppArmor AppArmor-docs AppArmor-module-source AppArmor-profile AppArmor-utils
Apoi, script-ul se va plânge că nu poate termina configurarea din cauza lipsei modulelor de kernel. Prin urmare, vom introduce mai întâi pregătirea echipei pentru a construi, deci vom verifica disponibilitatea tuturor pachetelor necesare și încărcați lipsă:
$ Sudo m-un -v -t pregăti
În general vorbind, aproape toate lucrările sale se reduce la sudo standard de apt-get install build-essential. Acum asambla modulul:
$ Sudo m-un -V -t -f construi AppArmor-module
$ Sudo m-un -V -t -f install AppArmor-module
După asamblarea manuală a recomanda încărca un modul kernel, care controlează politica stabilită, pentru a verifica corectitudinea lucrării:
$ Sudo modprobe AppArmor
FATAL: Eroare AppArmor inserarea (/lib/modules/2.6.20-15-generic/apparmor/apparmor.ko): Resource temporar indisponibil
Hopa, care nu sunt încărcate ... Potrivit rapoartelor în diverse forumuri, o astfel de eroare a avut loc nu numai la mine. Pe OpenSUSE forumuri au reușit să găsească un indiciu. AppArmor nu este compatibil cu SELinux și capabilități. În cazul în care acestea sunt construite in miezul, kernel-ul va trebui să reconstruiască, setați următoarele opțiuni în .config.
$ Sudo mcedit /usr/src/linux/.config
În caz contrar, se adaugă cei doi parametri sunt trecute la kernel la boot: «capability.disable = 1» și «SELinux = 0" . Cu toate acestea, în cazul meu, prima opțiune a fost oarecum ignorată:
$ Dmesg | capacitatea grep
[19.543828] opțiune de boot Necunoscut `capability.disable = 1„: ignorarea
Prin urmare, pur și simplu descărcați modulul de kernel:
capacitatea de $ Sudo rmmod
Și încercați din nou:
$ Sudo modprobe AppArmor
$ Lsmod | grep AppArmor
AppArmor 55836 0
aamatch_pcre 16896 1 AppArmor
commoncap 8192 1 AppArmor
În plus, modulul AppArmor nu poate fi prieteni cu Dazuko. care este utilizat în mod normal pentru scanare la accesare a fișierelor Antivirus ClamAV. Acum, rulați întregul sistem:
Start $ Sudo /etc/init.d/apparmor
securityfs pe / sys / kernel / securitate montare: făcut.
Se încarcă profile AppArmor: făcut.
Dacă totul merge bine, în această setare AppArmor poate fi considerată completă. Următorul pas - setarea profilurilor.
profile AppArmor
După ce a început sarcinile Daemon toate profilurile din spatele directorul /etc/apparmor.d. Pentru modul de comandă utilizează un securityfs sistem de fișiere, acesta poate ajuta pentru a obține informații despre profilurile încărcate:
$ Sudo mount -tsecurityfs securityfs / sys / kernel / securitate
$ Sudo pisica / sys / kernel / securitate / AppArmor / profile
/ Usr / sbin / traceroute (executa)
/ Usr / sbin / ntpd (executa)
/ Usr / sbin / nscd (executa)
/ Usr / sbin / numit (executa)
/ Usr / sbin / mdnsd (executa)
/ Usr / sbin / identd (executa)
/ Usr / sbin / porumbar (plâng)
/ Sbin / syslogd (executa)
/ Sbin / syslog-ng (executa)
/ Sbin / klogd (executa)
/ Bin / ping (executa)
AppArmor se pot ocupa de profiluri în două moduri:
- pune în aplicare - modul de executare, serviciul funcționează exclusiv în cadrul profilului, toate încercările de a încălca regulile sunt înregistrate în syslog;
- se plâng - de intrare care economisesc regim (studiu), în acest caz, activitatea de serviciu controlate, pur și simplu este creat cu încălcarea profilului. Acest mod este util atunci când crearea de noi profiluri și setările de profil pe un anumit sistem.
Pentru a schimba profilul, pur și simplu deschide fișierul și în fața fișierul executabil pentru a adăuga linia de «steaguri = (se plâng)»:
La nivel global toate profilurile traduce în modul se plâng, folosiți comanda:
$ Sudo echo 1> / sys / kernel / securitate / AppArmor / de control / plâng
După formare, o aplicație separată fără a reporni toate profilurile pot fi convertite în modul de greu cu o utilitate specială pune în aplicare:
Impunere $ Dovecot
Setarea / usr / sbin / porumbar în modul de aplicare.
Alte profiluri sunt în directorul / usr / share / doc / AppArmor profilurile / extra-uri. Fiecare profil are un nume care constă din calea completă către fișierul executabil, dar utilizează în punctul slash. De exemplu, usr.lib.firefox.firefox.sh. O descriere tipica a profilului este după cum urmează:
$ Cat /usr/share/doc/apparmor-profiles/extras/usr.lib.firefox.firefox.sh
#include
/usr/lib/firefox/firefox.sh ...
/ Bin / basename mixr,
/ Usr / bin / AOSS Ux,
/ Usr / lib / firefox / * r,
/ Usr / lib / px firefox / firefox-bin,
...
>
Pentru a conecta profilul finit la AppArmor. este suficient pentru a copia directorul /etc/apparmor.d. De exemplu, pentru Postfix efectuează următoarele:
$ Cd / etc / AppArmor / profile / extra-uri
$ Sudo mv * postfixat * usr.sbin.post * /etc/apparmor.d
$ Mv usr.bin.procmail usr.sbin.sendmail /etc/apparmor.d
Și pentru prima dată a rula în modul de formare:
Plânge $ /etc/apparmor.d/*postfix*
Plânge $ /etc/apparmor.d/usr.sbin.post*
Plânge $ /etc/apparmor.d/usr.bin.procmail
Plânge $ /etc/apparmor.d/usr.sbin.sendmail
În continuare, vom folosi Postfix, ca de obicei, cu ajutorul politicii logprof utilitatea avansată și traduce în modul de executare. Pentru a face acest lucru, în exemplul anterior, vom schimba toate se plâng de a pune în aplicare. Ca o opțiune - în schimb, puteți specifica imediat profilul fișierului executabil în sine, atunci politica corespunzătoare va fi preluat automat.
Crearea unui profil
Acum vom încerca să creați un profil nou și verificați activitatea AppArmor. Pentru a testa toate alege programul preferat pentru a crea parole / usr / bin / passwd. Pentru a crea un nou profil folosind utilitarul genprof (de altfel, toate utilitatile sunt porecle AppArmor incepand cu «AA-»):
$ Sudo genprof / usr / bin / passwd
Acesta scrie profilul / usr / bin / passwd actualizat. Setarea / usr / bin / passwd merge blând. Rulați aplicația care a creat profilul. În acest caz, puteți crea / șterge utilizator, schimba parola:
$ Sudo adduser Sergej
Adăugarea utilizatorului `Sergej“ ...
Adăugarea de grup nou `Sergej„(1001) ...
Adăugarea de utilizator nou `Sergej '(1001), cu Sergej group`' ...
Introduceți noua parolă UNIX:
Rescrieți parola nouă UNIX:
passwd: parola actualizate cu succes
Modificarea informațiilor de utilizator pentru Sergej
După o perioadă de timp, apăsați tasta de pe tastatură . Acest lucru se va citi toate mesajele din dosarul de audit / var / log / mesaje și să actualizeze secțiunile corespunzătoare din /etc/apparmor.d. Iată câteva evenimente care se încadrează în revista:
După un timp, apăsați tasta
/ Usr / bin / #include passwd
mr /lib/tls/i686/cmov/libc-*.so,
mr /lib/tls/i686/cmov/libcrypt-*.so,
mr /lib/tls/i686/cmov/libdl-*.so,
/ Usr / bin / mr passwd,
>
Acum eliminăm „m“ pavilion de profil de utilități passwd. Pe zbor puteți face acest lucru folosind utilitarul apparmor_parser:
$ Sudo echo „/ usr / bin / passwd „| Apparmor_parser -ad
Din nou, încercați să adăugați un utilizator nou:
$ Sudo adduser Sergej
Adăugarea utilizatorului `Sergej“ ...
Adăugarea de grup nou `Sergej„(1001) ...
Adăugarea de utilizator nou `Sergej '(1001), cu Sergej group`' ...
passwd: Nu se poate determina numele de utilizator.
Permisiune refuzată
Încercați din nou? [Y / n] y
$ Grep Sergej / etc / passwd
Sergej: x: 1001: 1001. / Home / Sergej: / bin / bash
Utilitarul nu poate crea o parolă pentru noul utilizator.
Dar asta nu e tot. Profilul nou creat continuă să funcționeze în modul de economisire a energiei. După ceva timp, ar trebui să re-examineze / var / log / mesaje și setările de profil de actualizare. Pentru a face acest lucru, utilizați un logprof de utilitate:
În continuare se vor afișa profiluri încălcările constatate cu numele profilului, programelor și acțiunilor. Toate întrebările sunt împărțite în blocuri. În primul control copil specificat de procese controlate de profil.
Profil: / usr / sbin / Dovecot
Programul: Dovecot
Rulați: / usr / lib / Dovecot / IMAP
Severitatea: Necunoscut
[(I) nherit] / (P) rofile / (U) nconfined / (D) eny / Abo (r) t / (F) Inish
Făcând clic pe
1. Moștenire - descendent rulează cu același profil ca părinte.
2. Profil - un descendent al unui profil
3. unconfined - descendent rulează fără profil.
4. Deny - interdicția de lansare a proceselor copilului.
Aceasta este urmată de o cerere de acces la funcțiile POSIX:
Profil: / usr / sbin / Dovecot
Posibilitatea: chown
Severitatea: 9
[(A) llow] / (D) eny / Abo (r) t / (F) Inish
Aici sunt câteva mai ușor. apăsare de tastă <А> sau
Profil: / usr / sbin / Dovecot
Cale: /
Mod: r
Severitatea: Necunoscut
[(A) llow] / (D) eny / (G) lob / w Glob / (E) xt / (N) ew / Abo (r) t / (F) Inish
De asemenea, parametrii familiare, se poate apăsa
Dar asta nu-i toate secretele AppArmor. Pentru a determina prezența profilului de protecție, precum și conformitatea pentru a asculta rețea TCP / UDP-porturi servicii care rulează folosind utilitarul unconfined:
$ Sudo-aa unconfined
5194 / usr / sbin / Avahi-daemon nu este limitat
5266 / usr / sbin / cupsd nu este limitat
5290 / usr / sbin / hpiod fără a se limita
5293 /usr/bin/python2.5 fără a se limita
5391 / usr / sbin / mysqld nu este limitat
5621 / usr / lib / postfix / master limitat
5750 / usr / sbin / Dovecot fără a se limita
5890 / usr / sbin / apache2 fără a se limita
Acest lucru creează o listă neagră a software-ului, iar administratorul poate determina în prealabil potențial periculoase aplicații și închide gaura.
Deci, este timpul să încheie. Sistemul propus de Novell, are un nivel ridicat de protecție și este mult mai ușor de configurat decât SELinux. Un relativ simplu, în punerea în aplicare a posibilității de creare independentă a profilului adaugă numai avantajele acestui sistem.
Arată acest articol unui prieten: