SlideShare une entreprise Scribd logo
1  sur  9
Télécharger pour lire hors ligne
Ş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
Ş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
Ş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
Ş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
Ş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
Ş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
Ş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
Ş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
Ş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

Contenu connexe

Plus de Dragos Tudor Acostachioaie (14)

Ce mai este nou in open-source si nu numai
Ce mai este nou in open-source si nu numaiCe mai este nou in open-source si nu numai
Ce mai este nou in open-source si nu numai
 
Qt Application Development
Qt Application DevelopmentQt Application Development
Qt Application Development
 
Realizarea de aplicatii pentru Android utilizand Qt
Realizarea de aplicatii pentru Android utilizand QtRealizarea de aplicatii pentru Android utilizand Qt
Realizarea de aplicatii pentru Android utilizand Qt
 
Introduction to Qt programming
Introduction to Qt programmingIntroduction to Qt programming
Introduction to Qt programming
 
Linux distributions. Ubuntu Server
Linux distributions. Ubuntu ServerLinux distributions. Ubuntu Server
Linux distributions. Ubuntu Server
 
Mediul de programare multiplatforma Qt
Mediul de programare multiplatforma QtMediul de programare multiplatforma Qt
Mediul de programare multiplatforma Qt
 
Dela e-mail la Social Web
Dela e-mail la Social WebDela e-mail la Social Web
Dela e-mail la Social Web
 
Remember
RememberRemember
Remember
 
Moodle patru ani de ectivitate în învăţământul
Moodle   patru ani de ectivitate în învăţământulMoodle   patru ani de ectivitate în învăţământul
Moodle patru ani de ectivitate în învăţământul
 
Programarea independenta de platforma in C++. Qt
Programarea independenta de platforma in C++. QtProgramarea independenta de platforma in C++. Qt
Programarea independenta de platforma in C++. Qt
 
Qt detaliu
Qt detaliuQt detaliu
Qt detaliu
 
Introducere in Flex si AIR
Introducere in Flex si AIRIntroducere in Flex si AIR
Introducere in Flex si AIR
 
Razboiul din fiecare birou
Razboiul din fiecare birouRazboiul din fiecare birou
Razboiul din fiecare birou
 
Linux ca platforma pentru dezvoltare
Linux ca platforma pentru dezvoltareLinux ca platforma pentru dezvoltare
Linux ca platforma pentru dezvoltare
 

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