Imbunatatirea securitatii sistemelor Linux cu ajutorul grsecurity
1. Şcoala de vară “Informatica la castel”, Macea, 29.08 – 03.09.2011
Imbunatatirea securitatii
sistemelor Linux cu
grsecurity
Dragoş Acostăchioaie
http://www.unixinside.org
dragos@unixinside.org
2. Şcoala de vară “Informatica la castel”, Macea, 29.08 – 03.09.2011
Ce este grsecurity?
✗ set de patch-uri pentru nucleul Linux care imbunatatesc securitatea sistemului
✗ componente:
- PaX – protectia paginilor de memorie
- RBAC - controlul accesului bazat pe roluri
- restrictii privind chroot
- servicii de auditare la nivel de nucleu
✗ se aplica ca patch la nucleul standard
✗ este inclus in cateva distributii (eg Hardened Gentoo)
✗ permite definirea de patru tipuri de niveluri de securitate: Low, Medium, High si Custom
✗ parametrii pot fi modificati prin intermediul sysctl
Dragoş Acostăchioaie - http://www.unixinside.org
3. Şcoala de vară “Informatica la castel”, Macea, 29.08 – 03.09.2011
Ce este PaX?
✗ se poate utiliza si independent de grsecurity
✗ asigura protectia spatiului de memorie executabil
✗ utilizeaza facilitatea NX oferita de majoritatea procesoarelor Intel recente. Pentru
procesoarele care nu suporta, aceasta este emulata
✗ nu permite aplicatiilor sa seteze zonele de cod ca writable si nici zonele de date ca
executabile; in acest mod nu se permite injectarea de cod in cadrul programelor
✗ anumite aplicatii (cum ar fi cele Java) pot intampina probleme atunci cand se foloseste PaX;
pentru acestea administratorul poate stabili exceptii
✗ asigura randomizarea structurii spatiului de adrese, pentru a preveni atacurile de tip
ret2libc (executia de cod rau intentionat)
✗ randomizeaza zonele unde sunt stocate datele din stiva sau heap, zonele alocate cu
mmap() sau zonele alocate codului executabil
✗ previne atacurile de tip buffer overflow, stack overflow, integer overflow etc. precum si
cele in care atacatorul cunoaste structura memoriei virtuale corespunzatoare aplicatiilor
✗ se administreaza cu ajutorul utilitarului paxctl
Dragoş Acostăchioaie - http://www.unixinside.org
4. Şcoala de vară “Informatica la castel”, Macea, 29.08 – 03.09.2011
PaX – randomizarea paginilor de memorie
Structura memoriei virtuale Randomizarea alocarii paginilor
a unei aplicatii de memorie
Dragoş Acostăchioaie - http://www.unixinside.org
5. Şcoala de vară “Informatica la castel”, Macea, 29.08 – 03.09.2011
Controlul accesului bazat pe roluri - RBAC
✗ permite restrictionarea accesului utilizatorilor si proceselor, pentru a avea privilegii minime,
✗ suplimentar fata de sistemul de control al accesului standard UNIX (utilizatori, grupuri,
drepturi de acces la fisiere)
✗ se administreaza cu ajutorul utilitarului gradm
✗ politica de securitate este alcatuita din roluri, subiecte si obiecte (/etc/grsec/policy)
- roluri = utilizatori si grupuri
- subiecte = procese sau directoare
- obiecte = fisiere, capabilitati, resurse, socket-uri, optiuni PaX, liste de acces de IP-uri
✗ alte facilitati oferite:
- accesul fara root la anumite roluri speciale
- roluri speciale care nu necesita autentificare
- posibilitatea de a utiliza variable in fisierul de configurare
- posibilitatea de a efectua operatii de SAU, SI, SAU EXCLUSIV intre variabile
- controlul atributelor SUID/SGID pentru fisiere executabile
- posibilitatea de a stabili implicit privilegii minime pentru intreg sistemul
- set pot stabili politici si pentru procese sau fisiere inexistente
- posibilitatea de a ascunde procesele nucleului
- mod de auto-invatare
- pot fi definite ierarhii de politici
Dragoş Acostăchioaie - http://www.unixinside.org
6. Şcoala de vară “Informatica la castel”, Macea, 29.08 – 03.09.2011
Restrictii privind chroot
✗ nu se pot atasa zone de memorie comuna din afara chroot
✗ nu poate fi utilizat apelul kill din afara chroot
✗ nu pot fi transmise semnale din afara chroot
✗ nu pot fi obtinute date despre procese din afara chroot, chiar daca sistemul /proc este
montat
✗ nu poate fi utilizat apelul mount
✗ restrictii pentru apelul chdir
✗ nu poate fi setat atributul SUID/SGID in interiorul chroot
Dragoş Acostăchioaie - http://www.unixinside.org
7. Şcoala de vară “Informatica la castel”, Macea, 29.08 – 03.09.2011
Servicii de auditare la nivel de nucleu
✗ se poate audita un anumit grup de utilizatori
✗ montarea/demontarea de dispozitive
✗ modificarea timpului sistemului
✗ apelul chdir si alte apeluri de sistem
✗ accesul neautorizat la resurse
✗ apelurile fork() nereusite
✗ crearea si stergerea de resurse IPC (zone de memorie comuna, semafoare, cozi de mesaje)
✗ apelurile exec()
Dragoş Acostăchioaie - http://www.unixinside.org
8. Şcoala de vară “Informatica la castel”, Macea, 29.08 – 03.09.2011
Alte facilitati
✗ optiunea de a interzice utilizatorilor executia de fisiere binare care nu sunt detinute de
root sau care au drept de scriere
✗ restrictionarea accesului utilizatorilor obisnuiti la comenzile dmesg si netstat
✗ nu permite identificarea utilizatorului proprietar al proceselor
✗ restrictii privind legaturile in directorul /tmp
Dragoş Acostăchioaie - http://www.unixinside.org
9. Şcoala de vară “Informatica la castel”, Macea, 29.08 – 03.09.2011
Exemplu
subject /bin/bash
/home rw
/dev
/mnt rwx
RLIMIT_NPROC 2 2
RLIMIT_FNUMBER 10 20
subject /usr/bin/ssh
connect 192.168.0.0/24:22 stream tcp
role admin
subject /
/home rwx
/bin rw
/dev
/dev/cdrom r
role sshd u
subject /
/ h
/var/run/sshd r
-CAP_ALL
bind disabled
connect disabled
Dragoş Acostăchioaie - http://www.unixinside.org