LFCA: Com millorar la seguretat del sistema Linux - Part 20


Com tots sabem, l'usuari root és el rei i té privilegis il·limitats sobre el sistema Linux. Tanmateix, els usuaris no root es limiten a les tasques bàsiques. A més, als usuaris de sudo només se'ls concedeix un cert grau de privilegis root segons ho consideri adequat per realitzar tasques elevades específiques.

Els problemes sorgeixen quan els usuaris habituals tenen accés incontrolat als recursos o s'escriuen a root sense voler. Es tracta d'un greu risc de seguretat que podria provocar incompliments, modificacions no desitjades i, en el pitjor dels casos, fallades del sistema. Un altre risc potencial és quan els fitxers tenen permisos de fitxer menys segurs. Per exemple, els fitxers d'arrencada amb permisos d'escriptura per a usuaris globals es podrien modificar o danyar fàcilment, donant lloc a un sistema trencat.

[ També us pot agradar: Consells útils per protegir les dades i Linux ]

Tot i que podem implementar seguretat física, de xarxa i de dades, un usuari maliciós pot eludir les mesures de seguretat i aprofitar aquestes llacunes de seguretat. És per aquest motiu que la seguretat del sistema de fitxers s'ha de prendre seriosament. Proporciona una capa addicional de defensa davant atacs o amenaces internes d'empleats maliciosos que no han de fer el treball pesat per eludir les mesures de seguretat per accedir als fitxers.

En la seguretat del sistema, ens centrarem en els següents punts clau:

  • Drets d'accés: permisos d'usuari i de grup.
  • Aplica les polítiques de contrasenya amb el mòdul PAM.

Drets d'accés - Separació d'usuaris i grups

Segurament haureu d'haver sentit que tot a Linux es considera un fitxer. I si no ho és, és un procés. Cada fitxer en un sistema Linux és propietat d'un usuari i d'un usuari de grup. També té permisos de fitxer per a 3 categories d'usuaris: Usuari (u), Grup (g) i Altres (o). Els permisos es representen en lectura, escriptura i execució (rwx) per a cada categoria d'usuari.

rwx        rwx	     rwx
User       Group     Others

Com s'ha vist abans, a l'ordre ls com es mostra.

$ ls -l

Només per resumir, els permisos solen estar representats per nou caràcters. Els tres primers caràcters representen els drets d'accés de l'usuari real propietari del fitxer. El segon conjunt de caràcters representen els permisos del propietari del grup del fitxer. Finalment, l'últim conjunt per a altres usuaris o globals. Aquests caràcters estan perpètuament en l'ordre de lectura, escriptura i execució (rwx).

Després dels permisos, tenim les propietats d'usuari i grup, seguides de la mida del fitxer o del directori, la data de modificació i, finalment, el nom del fitxer.

Canviar els permisos i les propietats de fitxers/directoris

Els permisos d'usuari dels fitxers i directoris es poden modificar segons es consideri convenient. La regla general és utilitzar el principi de seguretat amb el mínim privilegi. En poques paraules, assegureu-vos que els usuaris tinguin els drets d'accés o els permisos mínims necessaris per fer la feina.

El principi dels mínims privilegis restringeix els usuaris a determinats rols només i, en fer-ho, minimitza el risc que els atacants accedeixin i modifiquin dades crítiques aprofitant un compte d'usuari de palanca baixa. També redueix la superfície d'atac i limita la propagació de programari maliciós en cas que l'atacant pren el control del vostre sistema.

Per tant, si un usuari només necessita veure el contingut d'un fitxer o directori, no se li ha de concedir permisos d'execució o escriptura. Al nivell molt bàsic, només concediu els permisos i propietats mínims que requereix l'usuari per dur a terme les tasques. Hem abordat com modificar els permisos i les propietats dels usuaris en fitxers/directoris mitjançant ordres chmod i chown al tema de les ordres bàsiques de Linux.

Perquè l'administrador del sistema tingui més facilitat per gestionar els permisos, es poden concedir permisos especials o drets d'accés a directoris sencers. Un dels permisos especials que es poden aplicar per restringir la supressió i la modificació d'un fitxer o directori és el bit adhesiu.

En un escenari en què tots els usuaris del sistema o de la xarxa poden accedir a un directori compartit, hi ha un risc potencial que alguns usuaris puguin suprimir o modificar els fitxers dins del directori. Això no és desitjable si voleu mantenir la integritat del contingut del directori. I aquí és on entra el tros enganxós.

Un bit enganxós és un permís de fitxer especial establert en un fitxer o directori sencer. Atorga només al propietari d'aquest fitxer/directori el permís per suprimir o fer canvis al contingut del fitxer o del directori. Cap altre usuari pot esborrar o modificar el fitxer/directori. Té el valor simbòlic de t i un valor numèric de 1000.

Per activar un bit enganxós en un directori, utilitzeu l'ordre chmod de la següent manera:

$ chmod +t directory_name

A l'exemple següent, hem aplicat un bit enganxós al directori anomenat prova. En el cas d'un directori, tots els continguts heretaran els permisos de bits adhesius. Podeu verificar els permisos de bits adhesius mitjançant l'ordre ls -ld. Assegureu-vos de notar el símbol t al final dels permisos del fitxer.

$ ls -ld test

Si un altre usuari intenta suprimir el directori o modificar el fitxer dins del directori, se'ls saluda amb un error Permís denegat.

I aquesta és l'essència del permís del fitxer stick bit.

El SUID (Set User ID) és un altre permís de fitxer especial que permet a un altre usuari habitual executar un fitxer amb els permisos del fitxer del propietari. Normalment es denota amb un valor simbòlic s a la part de l'usuari dels permisos de fitxer en lloc d'un x que representa els permisos d'execució. El SUID té un valor numèric de 4000.

El SGID (Estableix l'identificador de grup) permet que un usuari habitual hereti els permisos del grup del propietari del grup de fitxers. En lloc de la x per als permisos d'execució, veureu un s a la part del grup dels permisos del fitxer. El SGID té un valor numèric de 2000.

Per molt còmodes que resultin, els permisos SUID i SGID estan associats a riscos de seguretat i s'han d'evitar a tota costa. Això es deu al fet que atorguen privilegis especials als usuaris habituals. Si un intrús que es fa passar per un usuari normal es troba amb un fitxer executable propietat de l'usuari root amb un bit SUID establert, pot utilitzar aquesta bretxa i explotar el sistema.

Per trobar tots els fitxers amb el bit SUID establert a Linux, executeu l'ordre find com a usuari root.

$ find / -perm -4000 type -f

Per als directoris executar:

$ find / -perm -4000 type -d

Per trobar tots els fitxers amb un conjunt de bits SGID, executeu:

$ find / -perm -2000 type -f

Per als directoris executeu:

$ find / -perm -2000 type -d

Per eliminar el bit SUID d'un fitxer, executeu l'ordre chmod tal com es mostra:

$ chmod u-s /path/to/file

Per eliminar el bit SGID d'un fitxer, executeu l'ordre:

$ chmod g-s filename /path/to/file

No és estrany que els usuaris estableixin contrasenyes febles. Un bon nombre establert contrasenyes breus, senzilles i fàcilment endevinables per evitar oblidar-les durant l'inici de sessió. Tot i que és convenient, les contrasenyes febles es poden trencar fàcilment mitjançant scripts d'atac de força bruta.

El mòdul PAM (Mòdul d'autenticació connectable) és un mòdul que permet als administradors del sistema aplicar polítiques de contrasenya als sistemes Linux. Per aconseguir-ho, necessiteu el mòdul pam_pwquality que proporciona la biblioteca libpam_pwquality. El mòdul pam_pwquality comprova la força d'una contrasenya amb un conjunt de regles i un diccionari del sistema i identifica les opcions de contrasenya febles.

Per instal·lar el mòdul pam_pwquality a Ubuntu 18.04 i versions posteriors, executeu:

$ sudo apt install libpam_pwquality

Per a RHEL/CentOS 8, executeu l'ordre:

$ sudo dnf install libpwquality

El fitxer de configuració es troba a la següent ubicació:

  • A Debian-Systems – /etc/pam.d/common-password
  • Als sistemes RedHat: /etc/pam.d/system-auth

Abans de començar a modificar el fitxer de configuració PAM, primer considerem recopilar informació sobre els controls d'envelliment de la contrasenya.

Es poden trobar al fitxer /etc/login.defs.

El fitxer conté els següents controls clau de contrasenya:

  • PASS_MAX_DAYS: nombre màxim de dies que es pot utilitzar una contrasenya.
  • PASS_MIN_DAYS: nombre mínim. de dies permesos entre canvis de contrasenya.
  • PASS_WARN_AGE: nombre de dies d'advertència abans que caduqui una contrasenya.

Els valors per defecte s'indiquen a continuació.

L'atribut PASS_MAX_DAYS limita el nombre de dies que un usuari pot utilitzar la seva contrasenya. Quan s'aconsegueix aquest valor o la contrasenya caduca, l'usuari es veu obligat a canviar la seva contrasenya per iniciar sessió al sistema. De manera predeterminada, aquest valor s'estableix en 99999, que es tradueix en 273 anys. Això no té gaire sentit pel que fa a la seguretat, ja que l'usuari pot continuar utilitzant la seva contrasenya durant tota la seva vida.

Podeu definir-ho en un valor significatiu, per exemple, 30 dies com es mostra.

PASS_MAX_DAYS  30

Passats 30 dies, l'usuari es veurà obligat a canviar la seva contrasenya per una altra.

L'atribut PASS_MIN_DAYS indica la durada mínima que els usuaris poden utilitzar la seva contrasenya abans de canviar-la. Què vol dir això? Si, per exemple, aquest valor s'estableix en 15 dies, l'usuari no podrà tornar a canviar la seva contrasenya abans que passin 15 dies.

PASS_MAX_DAYS  15

L'atribut PASS_WARN_AGE especifica el nombre de dies que un usuari rebrà un avís sobre la caducitat imminent de la seva contrasenya abans que caduqui. Per exemple, podeu establir-ho en 7 dies tal com es mostra.

PASS_MAX_DAYS  7

NOTA: Aquests controls de contrasenya no funcionen amb comptes preexistents. Només s'apliquen als comptes nous creats després de definir les regles.

Abans d'editar el fitxer /etc/pam.d/common-password, creeu una còpia de seguretat. En aquest exemple, hem creat el fitxer de còpia de seguretat common-password.bak.

$ sudo cp /etc/pam.d/common-password /etc/pam.d/common-password.bak

A continuació, obriu el fitxer.

$ sudo vim /etc/pam.d/common-password 

Localitzeu la línia que es mostra a continuació.

password        requisite          pam_pwquality.so retry=3

L'opció de tornar a intentar estableix el nombre màxim de vegades que cal que introduïu la contrasenya correcta abans d'obtenir un error. Per defecte, s'estableix en 3. Aquesta és només una opció i inclourem diverses opcions.

Afegiu els atributs següents a la línia:

minlen=10 difok=3 lcredit=-1 ucredit=-1 dcredit=-1 ocredit=-1 reject_username 

Desenvolupem aquests atributs.

  • minlen=10: estableix la mida mínima acceptable per a la contrasenya. En aquest cas, 10 caràcters.
  • difok=3: aquest és el nombre màxim de caràcters que hi ha a la contrasenya anterior.
  • lcredit=-1: aquest és el nombre mínim de caràcters en minúscules que hauria d'estar present a la contrasenya.
  • ucredit=-1: és el nombre màxim de caràcters en minúscules que haurien d'estar presents a la contrasenya.
  • dcredit=-1: el nombre mínim de caràcters numèrics que s'han de definir a la contrasenya.
  • ocredit=-1: el nombre mínim de caràcters especials, p. ex. @, # i que s'han de definir a la contrasenya.
  • reject_username: aquesta opció activa el rebuig de la contrasenya si la contrasenya és el nom d'usuari en format directe o invers.

Si proveu de crear un usuari nou que no compleix les polítiques de contrasenya, trobareu errors com es mostra.

Això conclou el tema sobre la seguretat del sistema i els fonaments de seguretat en general. En tot el capítol, hem posat llum sobre les mesures de seguretat bàsiques que podeu implementar per protegir el vostre sistema Linux d'usuaris maliciosos com ara pirates informàtics o empleats descontents.