Ş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

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