Cap. 4. Autentificare și controale de acces

# Cap. 4. Autentificare și controale de acces

Când o persoană (sau un program) solicită acces la sistem, autentificarea confirmă identitatea ca fiind una de încredere.

| Avertisment
Erorile de configurare ale PAM vă pot bloca accesul la propriul sistem. Trebuie să aveți la îndemână un CD de recuperare sau să configurați o partiție de pornire alternativă. Pentru a recupera sistemul, porniți-l cu ajutorul acestora și remediați problemele de acolo.

## 4.1. Autentificare normală Unix

Autentificarea normală Unix este asigurată de modulul `pam_unix`(8) din cadrul PAM (Pluggable Authentication Modules). Cele trei fișiere de configurare importante, cu intrări separate prin „`:`”, sunt următoarele.

Tabel 4.1. 3 fișiere de configurare importante pentru `pam_unix`(8)

fișier | permisiuni | utilizator | grupul | descriere
--- | --- | --- | --- | ---
`/etc/passwd` | `-rw-r--r--` | `root` | `root` | informații despre contul utilizatorului (curățate)
`/etc/shadow` | `-rw-r-----` | `root` | `shadow` | informații securizate despre contul utilizatorului
`/etc/group` | `-rw-r--r--` | `root` | `root` | informații despre grup

„`/etc/passwd`” conține următoarele.

     ...
    user1:x:1000:1000:User1 Name,,,:/home/user1:/bin/bash
    user2:x:1001:1001:User2 Name,,,:/home/user2:/bin/bash
     ...

Așa cum se explică în `passwd`(5), fiecare intrare separată prin „`:`” din acest fișier înseamnă următoarele.

- Nume de autentificare

- Intrarea specificării parolei

- ID-ul numeric al utilizatorului

- ID-ul numeric al grupului

- Nume utilizator sau câmp comentariu

- Directorul personal al utilizatorului

- Interpret opțional de comenzi pentru utilizator

A doua intrare din „`/etc/passwd`” a fost utilizată pentru introducerea parolei criptate. După introducerea „`/etc/shadow`”, această intrare este utilizată pentru introducerea specificațiilor parolei.

Tabel 4.2. Al doilea conținut al intrării „`/etc/passwd`”

conținut | semnificație
--- | ---
(gol) | cont fără parolă
x | parola criptată se află în „`/etc/shadow`”

Fișierul „`/etc/shadow`” conține următoarele câmpuri.

     ...
    user1:$1$Xop0FYH9$IfxyQwBe9b8tiyIkt2P4F/:13262:0:99999:7:::
    user2:$1$vXGZLVbS$ElyErNf/agUDsm1DehJMS/:13261:0:99999:7:::
     ...

După cum se explică în `shadow`(5), fiecare intrare separată prin „`:`” din acest fișier înseamnă următoarele.

- Nume de autentificare

- Parolă criptată (inițialele „`$1$`” indică utilizarea criptării MD5. Simbolul „*” indică faptul că nu există date de conectare.)

- Data ultimei modificări a parolei, exprimată ca număr de zile de la 1 ianuarie 1970

- Numărul de zile pe care utilizatorul va trebui să le aștepte înainte de a i se permite să își schimbe din nou parola

- Numărul de zile după care utilizatorul va trebui să își schimbe parola

- Numărul de zile înainte de expirarea parolei în care utilizatorul trebuie avertizat

- Numărul de zile după expirarea parolei în care parola ar trebui să fie încă acceptată

- Data expirării contului, exprimată ca număr de zile de la 1 ianuarie 1970

- …

Fișierul „`/etc/group`” conține următoarele câmpuri.

    group1:x:20:user1,user2

După cum se explică în `group`(5), fiecare intrare separată prin „`:`” din acest fișier are următoarea semnificație.

- Numele grupului

- Parolă criptată (nu este utilizată efectiv)

- ID-ul numeric al grupului

- Listă separată prin virgule a numelor de utilizatori

| Notă
„`/etc/gshadow`” oferă o funcție similară cu „`/etc/shadow`” pentru „`/etc/group`”, dar nu este utilizat în mod real.

| Notă
Apartenența efectivă a unui utilizator la un grup poate fi adăugată dinamic dacă se adaugă linia „`auth optional pam_group.so`” în „`/etc/pam.d/common-auth`” și se definește în „`/etc/security/group.conf`”. Consultați `pam_group`(8).

| Notă
Pachetul `base-passwd` conține o listă oficială a utilizatorilor și grupurilor: „`/usr/share/doc/base-passwd/users-and-groups.html`”.

## 4.2. Gestionarea informațiilor privind contul și parola

Iată câteva comenzi importante pentru gestionarea informațiilor contului.

Tabel 4.3. Lista comenzilor pentru gestionarea informațiilor contului

comanda | funcție
--- | ---
`getent passwd nune-utilizator` | răsfoiește informațiile contului „`nume-utilizator`”
`getent shadow nume-utilizator` | răsfoiește informațiile contului ascuns al „`nume-utilizator`”
`getent group nume-grup` | răsfoiește informațiile despre grupul „`nume-grup`”
`passwd` | gestionează parola pentru cont
`passwd -e` | definește o parolă unică pentru activarea contului
`chage` | gestionează informațiile privind expirarea parolelor

Este posibil să aveți nevoie de privilegii de root pentru ca unele funcții să funcționeze. Consultați `crypt`(3) pentru criptarea parolelor și a datelor.

| Notă
În sistemul configurat cu PAM și NSS ca mașină Debian salsa, conținutul local „`/etc/passwd`”, „`/etc/group`” și „`/etc/shadow`” poate să nu fie utilizat în mod activ de sistem. Comenzile de mai sus sunt valabile chiar și în astfel de medii.

## 4.3. Parolă bună

Când creați un cont în timpul instalării sistemului sau cu comanda `passwd`(1), ar trebui să alegeți o parolă bună care să conțină cel puțin 6-8 caractere, inclusiv unul sau mai multe caractere din fiecare dintre următoarele seturi, conform `passwd`(1).

- literele alfabetului în minusculă

- cifrele de la 0 la 9

- Semne de punctuație

| Avertisment
Nu alegeți cuvinte ușor de ghicit pentru parolă. Numele contului, numărul de asigurare socială, numărul de telefon, adresa, data nașterii, numele membrilor familiei sau al animalelor de companie, cuvinte din dicționar, secvențe simple de caractere precum „12345” sau „qwerty” etc. sunt toate alegeri nepotrivite pentru parolă.

## 4.4. Crearea unei parole criptate

Există instrumente independente pentru a genera parole criptate cu „salt” (sare).

Tabel 4.4. Lista instrumentelor pentru generarea parolei

pachet | popcon(popularitate) | dimensiune | comanda | funcție
--- | --- | --- | --- | ---
`whois` | V:22, I:209 | 384 | `mkpasswd` | interfață cu funcții excesive pentru biblioteca `crypt`(3)
`openssl` | V:834, I:995 | 2503 | `openssl passwd` | calculează rezumatele criptografice ale parolelor (OpenSSL). `passwd`(1ssl)

## 4.5. PAM și NSS

Sistemele moderne similare cu Unix precum sistemul Debian oferă PAM (Pluggable Authentication Modules -- Module de autentificare conectabile) și NSS (Name Service Switch -- Comutare servicii de nume) administratorului de sistem local pentru configurarea sistemului său. Rolul acestora poate fi rezumat după cum urmează.

- PAM oferă un mecanism flexibil de autentificare utilizat de software-ul aplicației, implicând astfel schimbul de date privind parolele.

- NSS oferă un mecanism flexibil de servicii de nume, care este frecvent utilizat de biblioteca standard C pentru a obține numele utilizatorului și al grupului pentru programe precum `ls`(1) și `id`(1).

Aceste sisteme PAM și NSS trebuie configurate în mod coerent.

Pachetele principale ale sistemelor PAM și NSS sunt următoarele.

Tabel 4.5. Lista pachetelor principale ale sistemelor PAM ți NSS

pachet | popcon(popularitate) | dimensiune | descriere
--- | --- | --- | ---
`libpam-modules` | V:922, I:999 | 917 | Module de autentificare conectabile (serviciul de bază)
`libpam-ldapd` | V:6, I:14 | 80 | Modul de autentificare conectabil care permite interfețe LDAP
`libpam-systemd` | V:701, I:963 | 739 | Modul de autentificare conectabil pentru înregistrarea sesiunilor utilizatorilor pentru `logind`
`libpam-doc` | I:6 | 1504 | Module de autentificare conectabile (documentație în format html și text)
`libc6` | V:922, I:999 | 5370 | Biblioteca GNU C: Biblioteci partajate care oferă de asemenea serviciul „Name Service Switch”
`glibc-doc` | I:5 | 3858 | Biblioteca GNU C: Pagini de manual
`glibc-doc-reference` | I:3 | 14261 | Biblioteca GNU C: Manual de referință în format info, pdf și html (non-free)
`libnss-mdns` | V:235, I:520 | 141 | Modul NSS pentru rezolvarea numelor DNS multicast
`libnss-ldapd` | V:7, I:17 | 131 | Modul NSS pentru utilizarea LDAP ca serviciu de denumire

- „The Linux-PAM System Administrators' Guide -- Ghidul administratorilor de sistem Linux-PAM” din `libpam-doc` este esențial pentru învățarea configurării PAM.

- Secțiunea „System Databases and Name Service Switch -- Baze de date de sistem și comutator de servicii de nume” din `glibc-doc-reference` este esențială pentru învățarea configurației NSS.

| Notă
Puteți vedea o listă mai extinsă și actualizată folosind comanda „`aptitude search «libpam-|libnss-»`”. Acronimul NSS poate însemna și „Network Security Service” (Serviciu de securitate rețea), care este diferit de „Name Service Switch” (Comutator serviciu de nume).

| Notă
PAM este cea mai simplă metodă de inițializare a variabilelor de mediu pentru fiecare program cu valoarea implicită la nivel de sistem.

În cadrul systemd, pachetul `libpam-systemd` este instalat pentru a gestiona autentificările utilizatorilor prin înregistrarea sesiunilor utilizatorilor în ierarhia grupului de control `systemd` pentru logind. Consultați `systemd-logind`(8), `logind.conf`(5) și `pam_systemd`(8).

### 4.5.1. Fișierele de configurare accesate de PAM și NSS

Iată câteva fișiere de configurare importante accesate de PAM și NSS.

Tabel 4.6. Lista fișierelor de configurare accesate de PAM și NSS

fișier de configurare | funcție
--- | ---
`/etc/pam.d/nume-program` | definește configurația PAM pentru programul „`nume-program`”; vedeți `pam`(7) și `pam.d`(5)
`/etc/nsswitch.conf` | definește configurația NSS cu intrarea pentru fiecare serviciu.; a se vedea `nsswitch.conf`(5)
`/etc/nologin` | limitează autentificarea utilizatorului prin modulul `pam_nologin`(8)
`/etc/securetty` | limitează tty pentru accesul root prin modulul `pam_securetty`(8)
`/etc/security/access.conf` | stabilește limita de acces prin modulul `pam_access`(8)
`/etc/security/group.conf` | definește restricția bazată pe grup prin modulul `pam_group`(8)
`/etc/security/pam_env.conf` | definește variabilele de mediu prin modulul `pam_env`(8)
`/etc/environment` | definește variabile de mediu suplimentare prin modulul `pam_env`(8) cu argumentul „`readenv=1`”
`/etc/default/locale` | definește configurația de limbă prin modulul `pam_env`(8) cu argumentul „`readenv=1 envfile=/etc/default/locale`” (Debian)
`/etc/security/limits.conf` | stabilește restricții de resurse (ulimit, core, …) prin modulul `pam_linits`(8)
`/etc/security/time.conf` | stabilește restricția de timp prin modulul `pam_time`(8)
`/etc/systemd/logind.conf` | definește configurația gestionarului de autentificare `systemd` (a se vedea `logind.conf`(5) și `systemd-logind.service`(8))

Limitarea selecției parolei este implementată de modulele PAM, `pam_unix`(8) și `pam_cracklib`(8). Acestea pot fi configurate prin argumentele lor.

| Indicație
Modulele PAM utilizează sufixul „`.so`” pentru numele fișierelor lor.

### 4.5.2. Sistemul modern de gestionare centralizată

Sistemul modern de gestionare centralizată poate fi implementat utilizând serverul centralizat Lightweight Directory Access Protocol (LDAP) pentru a administra numeroase sisteme de tip Unix și non-Unix din rețea. Implementarea de cod-sursă deschis a protocolului Lightweight Directory Access Protocol este OpenLDAP Software.

Serverul LDAP furnizează informațiile despre cont prin utilizarea PAM și NSS cu pachetele `libpam-ldapd` și `libnss-ldapd` pentru sistemul Debian. Pentru a activa această funcție sunt necesare mai multe acțiuni (nu am utilizat această configurare, iar informațiile următoare sunt pur secundare. Vă rugăm să citiți acest text în acest context.).

- Configurați un server LDAP centralizat rulând un program precum demonul LDAP autonom, `slapd`(8).

- Modificați fișierele de configurare PAM din directorul „`/etc/pam.d/`” pentru a utiliza „`pam_ldap.so`” în locul fișierului implicit „`pam_unix.so`”.

- Modificați configurația NSS din fișierul „`/etc/nsswitch.conf`” pentru a utiliza „`ldap`” în locul valorii implicite („`compat`” sau „`file`”).

- Trebuie să configurați `libpam-ldapd` pentru a utiliza conexiunea SSL (sau TLS) pentru securitatea parolei.

- Puteți configura `libnss-ldapd` să utilizeze conexiunea SSL (sau TLS) pentru a asigura integritatea datelor, cu prețul unei suprasarcini a rețelei LDAP.

- Ar trebui să rulați `nscd`(8) local pentru a stoca în cache orice rezultate ale căutării LDAP, în scopul de a reduce traficul de rețea LDAP.

Consultați documentația din `nsswitch.conf`(5), `pam.conf`(5), `ldap.conf`(5) și „`/usr/share/doc/libpam-doc/html/`” oferită de pachetul `libpam-doc` și „`info libc «Name Service Switch»`” oferită de pachetul `glibc-doc`.

În mod similar, puteți configura sisteme centralizate alternative cu alte metode.

- Integrarea utilizatorilor și grupurilor cu sistemul Windows.

  - Accesați serviciile domeniului Windows prin pachetele `winbind` și `libpam_winbind`.

  - Consultați `winbindd`(8) și Integrating MS Windows Networks with Samba -- Integrarea rețelelor MS Windows cu Samba.

- Integrarea utilizatorilor și grupurilor cu sistemul vechi de tip Unix.

  - Accesați NIS (denumit inițial YP) sau NIS+ prin pachetul `nis`.

  - Consultați The Linux NIS(YP)/NYS/NIS+ HOWTO.

### 4.5.3. „De ce comanda «su» a GNU nu acceptă grupul wheel”

Aceasta este celebra frază care apare în partea de jos a vechii pagini „`info su`” a lui Richard M. Stallman. Nu vă faceți griji: comanda actuală `su` din Debian utilizează PAM, astfel încât se poate restricționa utilizarea `su` la grupul `root` prin activarea liniei cu „`pam_wheel.so`” în „`/etc/pam.d/su`”.

### 4.5.4. Reguli mai stricte privind parolele

Instalarea pachetului `libpam-cracklib` vă permite să impuneți reguli mai stricte pentru parole.

Într-un sistem GNOME tipic, care instalează automat `libpam-gnome-keyring`, „`/etc/pam.d/common-password`” arată astfel:

    # here are the per-package modules (the "Primary" block)
    password	requisite			pam_cracklib.so retry=3 minlen=8 difok=3
    password	[success=1 default=ignore]	pam_unix.so obscure use_authtok try_first_pass yescrypt
    # here's the fallback if no module succeeds
    password	requisite			pam_deny.so
    # prime the stack with a positive return value if there isn't one already;
    # this avoids us returning an error just because nothing sets a success code
    # since the modules above will each just jump around
    password	required			pam_permit.so
    # and here are more per-package modules (the "Additional" block)
    password	optional	pam_gnome_keyring.so
    # end of pam-auth-update config

## 4.6. Securitatea autentificării

| Notă
Informațiile prezentate aici pot fi insuficiente pentru nevoile dvs. de securitate, dar ar trebui să constituie un bun început.

### 4.6.1. Parolă sigură în Internet

Multe servicii ale stratului de transport populare comunică mesaje, inclusiv autentificarea parolei, în text simplu. Este o idee foarte proastă să transmiteți parola în text simplu pe Internet, unde poate fi interceptată. Puteți rula aceste servicii prin „Transport Layer Security” (TLS) sau predecesorul său, „Secure Sockets Layer” (SSL), pentru a securiza întreaga comunicare, inclusiv parola, prin criptare.

Tabel 4.7. Lista serviciilor și porturilor nesigure și sigure

nume de serviciu nesigur | port | nume de serviciu sigur | port
--- | --- | --- | ---
www (http) | 80 | https | 443
smtp (poștă electronică) | 25 | ssmtp (smtps) | 465
ftp-data | 20 | ftps-data | 989
ftp | 21 | ftps | 990
telnet | 23 | telnets | 992
imap2 | 143 | imaps | 993
pop3 | 110 | pop3s | 995
ldap | 389 | ldaps | 636

Criptarea consumă timp de procesare. Ca alternativă care nu solicită procesorul, puteți păstra comunicarea în text simplu, securizând doar parola cu un protocol de autentificare securizat, cum ar fi „Authenticated Post Office Protocol” (APOP) pentru POP și „Challenge-Response Authentication Mechanism MD5” (CRAM-MD5) pentru SMTP și IMAP. (Pentru trimiterea mesajelor de poștă electronică prin Internet către serverul dvs. de poștă electronică de la clientul dvs. de poștă electronică, este popular în ultima vreme să se utilizeze noul port de trimitere a mesajelor 587 în locul portului SMTP tradițional 25, pentru a evita blocarea portului 25 de către furnizorul de rețea, în timp ce vă autentificați cu CRAM-MD5.)

### 4.6.2. Shell securizat

Programul Secure Shell (SSH) asigură comunicații criptate sigure între două gazde ce nu sunt de „încredere” într-o rețea nesigură, cu autentificare securizată. Acesta constă din clientul OpenSSH, `ssh`(1) și demonul OpenSSH, `sshd`(8). Acest SSH poate fi utilizat pentru a tunela o comunicare prin protocol nesigur, cum ar fi POP și X, în mod securizat pe Internet, cu ajutorul funcției de redirecționare a porturilor.

Clientul încearcă să se autentifice utilizând autentificarea bazată pe gazdă, autentificarea cu cheie publică, autentificarea cu provocare-răspuns sau autentificarea cu parolă. Utilizarea autentificării cu cheie publică permite conectarea la distanță fără parolă. Consultați Secțiune 6.3, „Serverul și instrumentele de acces la distanță (SSH)”.

### 4.6.3. Măsuri suplimentare de securitate pentru Internet

Chiar și atunci când utilizați servicii securizate, cum ar fi Secure Shell (SSH) și Point-to-point tunneling protocol (PPTP), există în continuare posibilitatea unor intruziuni prin atacuri de tip „forță brută” (brute force) pentru ghicirea parolelor etc. din Internet. Utilizarea politicii paravanului de protecție (a se vedea Secțiune 5.7, „Infrastructura netfilter”) împreună cu următoarele instrumente de securitate poate îmbunătăți situația de securitate.

Tabel 4.8. Lista instrumentelor care oferă măsuri suplimentare de securitate

pachet | popcon(popularitate) | dimensiune | descriere
--- | --- | --- | ---
`knockd` | V:0, I:1 | 110 | mic demon port-knock `knockd`(1) și client `knock`(1)
`fail2ban` | V:95, I:106 | 2191 | interzice adresele IP care provoacă erori multiple de autentificare
`libpam-shield` | V:0, I:0 | 115 | blochează atacatorii de la distanță care încearcă să ghicească parola

### 4.6.4. Securizarea parolei root

Pentru a împiedica accesul persoanelor la mașina dvs. cu privilegii de root, trebuie să efectuați următoarele acțiuni.

- Prevent physical access to the system storage device (HDD / SSD / ...)

- Blocați UEFI/BIOS și împiedicați pornirea de pe suportul amovibil

- Definiți o parolă pentru sesiunea interactivă GRUB

- Blocați meniul GRUB împotriva editării

With physical access to the system storage device, resetting the password is relatively easy with following steps.

1. Move the system storage device to a PC with USB bootable UEFI/BIOS.

2. Boot system with a rescue media (see Secțiune 3.2.2, „Linux live rescue system on USB”).

3. Montați partiția rădăcină cu acces de citire/scriere.

4. Editați fișierul „`/etc/passwd`” din partiția rădăcină și lăsați necompletată a doua intrare pentru contul `root`.

Dacă aveți acces de editare la intrarea din meniul GRUB (consultați Secțiune 3.1.2, „Etapa 2: încărcătorul de pornire”) pentru `grub-rescue-pc` la pornire, este și mai ușor să urmați pașii de mai jos.

1. Porniți sistemul cu parametrul de nucleu modificat în ceva precum „`root=/dev/sda6 rw init=/bin/sh`”.

2. Editați fișierul „`/etc/passwd`” și lăsați goală a doua intrare pentru contul `root`.

3. Reporniți sistemul.

Shell-ul root al sistemului este acum accesibil fără parolă.

| Notă

Odată ce cineva are acces la shell-ul root, poate accesa totul din sistem și poate reinițializa oricare dintre parolele din sistem. Mai mult, poate compromite parola pentru toate conturile de utilizator folosind instrumente de spargere a parolelor prin forță brută, cum ar fi pachetele `john` și `crack` (a se vedea Secțiune 9.5.11, „Verificarea securității și integrității sistemului”). Această parolă spartă poate duce la compromiterea altor sisteme.

Singura soluție software rezonabilă pentru a evita toate aceste probleme este utilizarea unei partiții rădăcină criptate software (sau partiția „`/etc`”) folosind dm-crypt și initramfs (vezi Secțiune 9.9, „Sfaturi pentru criptarea datelor”). Totuși, aveți întotdeauna nevoie de parolă pentru a porni sistemul.

## 4.7. Alte controale de acces

Există controale de acces la sistem, altele decât autentificarea bazată pe parolă și permisiunile de fișiere.

| Notă
Consultați Secțiune 9.4.16, „Tasta Alt-SysRq” pentru restricționarea caracteristicii nucleului tastă de atenție securizată „secure attention key”: (SAK).

### 4.7.1. Liste de control al accesului (ACL)

ACL-urile sunt un superset al permisiunilor obișnuite, așa cum se explică în Secțiune 1.2.3, „Permisiuni ale sistemului de fișiere”.

Întâlniți ACL-uri în acțiune în mediul grafic de birou modern. Când un dispozitiv de stocare USB formatat este montat automat ca, de exemplu, „`/media/penguin/USBSTICK`”, un utilizator normal `penguin` poate executa:

     $ cd /media/penguin
     $ ls -la
    total 16
    drwxr-x---+ 1 root    root    16 Jan 17 22:55 .
    drwxr-xr-x  1 root    root    28 Sep 17 19:03 ..
    drwxr-xr-x  1 penguin penguin 18 Jan  6 07:05 USBSTICK

„`+`” în coloana a 11-a indică faptul că ACL-urile sunt active. Fără ACL-uri, un utilizator normal `penguin` nu ar trebui să poată afișa această listă, deoarece `penguin` nu face parte din grupul `root`. Puteți vedea ACL-urile astfel:

     $ getfacl .
    # file: .
    # owner: root
    # group: root
    user::rwx
    user:penguin:r-x
    group::---
    mask::r-x
    other::---

Aici:

- „`user::rwx`”, „`group::---`” și „`other::---`” corespund permisiunilor obișnuite ale proprietarului, grupului și altor utilizatori.

- ACL „`user:penguin:r-x`” permite unui utilizator normal `penguin` să aibă permisiuni „`r-x`”. Acest lucru a permis „`ls -la`” să listeze conținutul directorului.

- ACL „`mask::r-x`” stabilește limita superioară a permisiunilor.

Pentru mai multe informații, consultați „POSIX Access Control Lists on Linux -- Liste de control al accesului POSIX în Linux”, `acl`(5), `getfacl`(1) și `setfacl`(1).

### 4.7.2. sudo

`sudo`(8) este un program conceput pentru a permite unui administrator de sistem să acorde privilegii root limitate utilizatorilor și să înregistreze activitatea root. `sudo` necesită doar parola unui utilizator obișnuit. Instalați pachetul `sudo` și activați-l configurând opțiunile din „`/etc/sudoers`”. Consultați exemplul de configurare din „`/usr/share/doc/sudo/examples/sudoers`” și Secțiune 1.1.12, „Configurarea «sudo»”.

Utilizarea mea a `sudo` pentru sistemul cu un singur utilizator (a se vedea Secțiune 1.1.12, „Configurarea «sudo»”) are scopul de a mă proteja de propria mea prostie. Personal, consider că utilizarea `sudo` este o alternativă mai bună decât utilizarea sistemului din contul root tot timpul. De exemplu, următoarea comandă schimbă proprietarul „`some_file`” în „`my_name`”.

    $ sudo chown my_name some_file

Desigur, dacă cunoașteți parola root (așa cum o cunosc utilizatorii Debian care au instalat singuri sistemul), orice comandă poate fi executată sub root din contul oricărui utilizator folosind „`su -c`”.

### 4.7.3. PolicyKit

PolicyKit este o componentă a sistemului de operare pentru controlul privilegiilor la nivel de sistem în sistemele de operare de tip Unix.

Aplicațiile GUI mai noi nu sunt concepute pentru a rula ca procese privilegiate. Acestea comunică cu procesele privilegiate prin intermediul PolicyKit pentru a efectua operații administrative.

PolicyKit limitează astfel de opereții la conturile de utilizator care aparțin grupului `sudo` din sistemul Debian.

A se vedea `polkit`(8).

### 4.7.4. Restricționarea accesului la anumite servicii ale serverului

Pentru securitatea sistemului, este recomandat să dezactivați cât mai multe programe de server posibil. Acest lucru devine esențial pentru serverele de rețea. Serverele neutilizate, activate fie direct ca daemon, fie prin programul super-server, sunt considerate riscuri de securitate.

Multe programe, cum ar fi `sshd`(8), utilizează controlul accesului bazat pe PAM. Există multe modalități de a restricționa accesul la anumite servicii ale serverului.

- fișiere de configurare: „`/etc/default/program_name`”

- configurația unității de serviciu systemd pentru daemon

- modulele de autentificare conectabile PAM (Pluggable Authentication Modules)

- „`/etc/inetd.conf`” pentru super-server

- „`/etc/hosts.deny`” și „`/etc/hosts.allow`” pentru TCP wrapper, `tcpd`(8)

- „`/etc/rpc.conf`” pentru Sun RPC

- „`/etc/at.allow`” și „`/etc/at.deny`” pentru `atd`(8)

- „`/etc/cron.allow`” și „`/etc/cron.deny`” pentru `crontab`(1)

- paravanul de protecție al rețelei din infrastructura netfilter

Consultați Secțiune 3.6, „Gestionarea sistemului”, Secțiune 4.5.1, „Fișierele de configurare accesate de PAM și NSS” și Secțiune 5.7, „Infrastructura netfilter”.

| Indicație
Serviciile Sun RPC trebuie să fie active pentru NFS și alte programe bazate pe RPC.

| Indicație
Dacă aveți probleme cu accesul la distanță într-un sistem Debian recent, comentați configurația problematică, cum ar fi „`ALL: PARANOID`” din „`/etc/hosts.deny`”, dacă există; (dar trebuie să fiți atenți la riscurile de securitate implicate de acest tip de acțiune).

### 4.7.5. Caracteristici de securitate Linux

Nucleul Linux a evoluat și oferă caracteristici de securitate care nu se regăsesc în implementările tradiționale UNIX.

Linux acceptă atribute extinse care extind atributele UNIX tradiționale (a se vedea `xattr`(7)).

Linux împarte privilegiile asociate în mod tradițional cu superutilizatorul în unități distincte, cunoscute sub numele de `capacități`(7), care pot fi activate și dezactivate independent. Capacitățile sunt un atribut per fir de execuție începând cu versiunea 2.2 a nucleului.

Infrastructura modulelor de securitate Linux („Linux Security Module”: LSM) oferă un mecanism pentru diverse verificări de securitate care pot fi conectate la noile extensii ale nucleului. De exemplu:

- AppArmor

- Security-Enhanced Linux (SELinux)

- Smack (Simplified Mandatory Access Control Kernel)

- Tomoyo Linux

Deoarece aceste extensii pot restricționa modelul de privilegii mai strict decât politicile obișnuite ale modelului de securitate de tip Unix, chiar și privilegiile root pot fi restricționate. Vă recomandăm să citiți documentul documentul infrastructurii „Linux Security Module (LSM)” la kernel.org.

Spatiile de nume Linux învăluiesc o resursă globală a sistemului într-o abstractizare care face ca procesele din cadrul spatiului de nume să pară că au propria instanță izolată a resursei globale. Modificările aduse resursei globale sunt vizibile pentru alte procese care sunt membre ale spațiului de nume, dar sunt invizibile pentru alte procese. Începând cu versiunea 5.6 a nucleului, există 8 tipuri de spații de nume (a se vedea `namespaces`(7), `unshare`(1), `nsenter`(1)).

Începând cu Debian 11 Bullseye (2021), Debian utilizează ierarhia cgroup unificată (cunoscută și sub numele de cgroups-v2).

Exemple de utilizare a spațiilor de nume cu cgroups pentru a izola procesele acestora și a permite controlul resurselor sunt:

- Systemd. A se vedea Secțiune 3.3.1, „Init systemd”.

- Mediul sandbox. A se vedea Secțiune 7.7, „Cutia cu nisip (sandbox)”.

- Containerele Linux precum Docker, LXC. A se vedea Secțiune 9.11, „Sistem virtualizat”.

Aceste funcționalități nu pot fi realizate prin Secțiune 4.1, „Autentificare normală Unix”. Aceste subiecte avansate sunt în mare parte în afara domeniului de aplicare al acestui document introductiv.

Cap. 3. Inițializarea sistemului |  | Cap. 5. Configurarea rețelei