23 Consells de seguretat per a l'enduriment del servidor CentOS - Part 2


Continuant amb el tutorial anterior sobre Com protegir i endurir el servidor CentOS, en aquest article parlarem d'altres consells de seguretat que es presentaran a la llista de verificació següent.

  1. 20 consells de seguretat per reforçar el servidor CentOS - Part 1

21. Desactiveu les ordres SUID i SGID inútils

Si els bits setuid i setgid s'estableixen en programes binaris, aquestes ordres poden executar tasques amb altres drets d'usuari o grup, com ara privilegis d'arrel que poden exposar greus problemes de seguretat.

Sovint, els atacs d'excés de memòria intermèdia poden explotar aquests binaris executables per executar codi no autoritzat amb els drets d'un usuari root.

# find /  -path /proc -prune -o -type f \( -perm -4000 -o -perm -2000 \) -exec ls -l {} \;

Per desactivar el bit setuid, executeu l'ordre següent:

# chmod u-s /path/to/binary_file

Per desactivar el bit setgid, executeu l'ordre següent:

# chmod g-s /path/to/binary_file

22. Comproveu si hi ha fitxers i directoris no propietaris

Els fitxers o directoris que no pertanyen a un compte vàlid s'han de suprimir o assignar-los amb els permisos d'un usuari i grup.

Emet l'ordre find a continuació per llistar fitxers o directoris sense usuari ni grup.

# find / -nouser -o -nogroup -exec ls -l {} \;

23. Llista els fitxers que es poden escriure al món

Mantenir un fitxer d'escriptura mundial al sistema pot ser perillós pel fet que qualsevol pot modificar-lo. Executeu l'ordre següent per mostrar fitxers que es poden escriure amb paraules, excepte els enllaços simbòlics, que sempre es poden escriure a tot el món.

# find / -path /proc -prune -o -perm -2 ! -type l –ls

24. Creeu contrasenyes fortes

Creeu una contrasenya d'un mínim de vuit caràcters. La contrasenya ha de contenir dígits, caràcters especials i lletres majúscules. Utilitzeu pwmake per generar una contrasenya de 128 bits des del fitxer /dev/urandom.

# pwmake 128

25. Aplicar una política de contrasenya segura

Força el sistema a utilitzar contrasenyes fortes afegint la línia següent al fitxer /etc/pam.d/passwd.

password required pam_pwquality.so retry=3

Afegint la línia anterior, la contrasenya introduïda no pot contenir més de 3 caràcters en una seqüència monòtona, com ara abcd, i més de 3 caràcters consecutius idèntics, com ara 1111.

Per obligar els usuaris a utilitzar una contrasenya amb una longitud mínima de 8 caràcters, incloses totes les classes de caràcters, comproveu la força de les seqüències de caràcters i els caràcters consecutius, afegiu les línies següents al fitxer /etc/security/pwquality.conf.

minlen = 8
minclass = 4
maxsequence = 3
maxrepeat = 3

26. Utilitzeu l'envelliment de la contrasenya

L'ordre chage es pot utilitzar per a l'envelliment de la contrasenya de l'usuari. Per configurar la contrasenya d'un usuari perquè caduqui en 45 dies, utilitzeu l'ordre següent:

# chage -M 45 username

Per desactivar el temps de caducitat de la contrasenya, utilitzeu l'ordre:

# chage -M -1 username

Força la caducitat immediata de la contrasenya (l'usuari ha de canviar la contrasenya el proper inici de sessió) executant l'ordre següent:

# chage -d 0 username

27. Bloquejar comptes

Els comptes d'usuari es poden bloquejar executant l'ordre passwd o usermod:

# passwd -l username
# usermod -L username

Per desbloquejar comptes, utilitzeu l'opció -u per a l'ordre passwd i l'opció -U per a usermod.

28. Impedir l'accés al Shell de comptes

Per evitar que un compte del sistema (compte normal o compte de servei) tingui accés a un shell bash, canvieu l'intèrpret d'ordres root a /usr/sbin/nologin o /bin/false al fitxer /etc/passwd emetent l'ordre següent:

# usermod -s /bin/false username

Per canviar l'intèrpret d'ordres quan es crea un usuari nou, emet l'ordre següent:

# useradd -s /usr/sbin/nologin username

29. Bloqueja la consola virtual d'usuaris amb vlock

vlock és un programa utilitzat per bloquejar una sessió múltiple a la consola Linux. Instal·leu el programa i comenceu a bloquejar la vostra sessió de terminal executant les ordres següents:

# yum install vlock
# vlock

30. Utilitzeu un sistema centralitzat per gestionar els comptes i l'autenticació

L'ús d'un sistema d'autenticació centralitzat pot simplificar molt la gestió i el control del compte. Els serveis que poden oferir aquest tipus de gestió de comptes són IPA Server, LDAP, Kerberos, Microsoft Active Directory, Nis, Samba ADS o Winbind.

Alguns d'aquests serveis estan per defecte altament segurs amb protocols criptogràfics i criptografia de clau simètrica, com ara Kerberos.

31. Força el muntatge de només lectura de suports USB

Amb la utilitat blockdev, podeu forçar que tots els mitjans extraïbles es muntin com a només de lectura. Per exemple, creeu un fitxer de configuració udev nou anomenat 80-readonly-usb.rules al directori /etc/udev/rules.d/ amb el contingut següent:

SUBSYSTEM=="block",ATTRS{removable}=="1",RUN{program}="/sbin/blockdev --setro %N"

A continuació, apliqueu la regla amb l'ordre següent:

# udevadm control -reload

32. Desactivació de l'accés arrel mitjançant TTY

Per evitar que el compte root realitzi l'inici de sessió al sistema a través de tots els dispositius de consola (TTY), esborreu el contingut del fitxer de seguretat escrivint el següent indicador del terminal d'ordres com a root.

# cp /etc/securetty /etc/securetty.bak
# cat /dev/null > /etc/securetty

Recordeu que aquesta regla no s'aplica a les sessions d'inici de sessió SSH
Per evitar l'inici de sessió root mitjançant SSH, editeu el fitxer /etc/ssh/sshd_config i afegiu la línia següent:

PermitRootLogin no

33. Utilitzeu ACL POSIX per ampliar els permisos del sistema

Les llistes de control d'accés poden definir drets d'accés per a més d'un sol usuari o grup i poden especificar drets per a programes, processos, fitxers i directoris. Si configureu ACL en un directori, els seus descendents heretaran els mateixos drets automàticament.

Per exemple,

# setfacl -m u:user:rw file
# getfacl file

34. Configura SELinux en mode Enforce

La millora de SELinux al nucli de Linux implementa la política de control d'accés obligatori (MAC), que permet als usuaris definir una política de seguretat que proporcioni permisos granulars per a tots els usuaris, programes, processos, fitxers i dispositius.

Les decisions de control d'accés del nucli es basen en tot el context rellevant per a la seguretat i no en la identitat de l'usuari autenticat.

Per obtenir l'estat de Selinux i fer complir la política, executeu les ordres següents:

# getenforce
# setenforce 1
# sestatus

35. Instal·leu les utilitats addicionals de SELinux

Instal·leu el paquet policycoreutils-python que proporciona utilitats addicionals de Python per operar SELinux: audit2allow, audit2why, chcat i semanage.

Per mostrar tots els valors booleans juntament amb una breu descripció, utilitzeu l'ordre següent:

# semanage boolean -l

Per exemple, per mostrar i establir el valor de httpd_enable_ftp_server, executeu l'ordre següent:

# getsebool httpd_enable_ftp_server

Per fer que el valor d'un booleà persisteixi durant els reinicis, especifiqueu l'opció -P a setsebool, tal com es mostra a l'exemple següent:

# setsebool -P httpd_enable_ftp_server on

36. Utilitzeu el servidor de registre centralitzat

Configureu el dimoni rsyslog per enviar missatges de registre d'utilitats sensibles a un servidor de registre centralitzat. A més, controleu els fitxers de registre amb l'ajuda de la utilitat logwatch.

L'enviament de missatges de registre a un servidor remot garanteix que, una vegada que el sistema s'ha vist compromès, els usuaris maliciosos no poden ocultar completament la seva activitat, deixant sempre rastres als fitxers de registre remots.

37. Activa la comptabilitat de processos

Habiliteu la comptabilitat de processos instal·lant la utilitat psacct i utilitzeu l'ordre lastcomm per mostrar informació sobre les ordres executades anteriorment tal com s'enregistra al fitxer de comptabilitat del sistema i sa per resumir la informació sobre les ordres executades anteriorment tal com es registra al fitxer de comptabilitat del sistema.

38. Enduriment de /etc/sysctl.conf

Utilitzeu les regles de paràmetres del nucli següents per protegir el sistema:

net.ipv4.conf.all.accept_source_route=0
ipv4.conf.all.forwarding=0
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1

Desactiveu l'acceptació i l'enviament de paquets redirigits ICMP tret que es requereixi específicament.

net.ipv4.conf.all.accept_redirects=0
net.ipv4.conf.all.secure_redirects=0
net.ipv4.conf.all.send_redirects=0
net.ipv4.conf.all.rp_filter=2

Ignoreu totes les sol·licituds d'eco ICMP (establir a 1 per habilitar)

net.ipv4.icmp_echo_ignore_all = 0

39. Utilitzeu els serveis VPN per accedir als vostres locals a través de xarxes públiques no protegides

Utilitzeu sempre els serveis VPN perquè els operadors accedeixin de manera remota a les instal·lacions de la LAN a través d'Internet. Aquest tipus de serveis es poden configurar mitjançant una solució gratuïta de codi obert, com ara els repositoris Epel).

40. Realitzeu una exploració del sistema extern

Avalueu la seguretat del vostre sistema per detectar vulnerabilitats escanejant el sistema des de punts remots de la vostra LAN mitjançant eines específiques com ara:

  1. Nmap: escàner de xarxa 29 Exemples d'ordres Nmap
  2. Nessus: escàner de seguretat
  3. OpenVAS: s'utilitza per buscar vulnerabilitats i per a una gestió integral de vulnerabilitats.
  4. Nikto: un excel·lent escàner d'scripts d'interfície de passarel·la comuna (CGI) per escanejar la vulnerabilitat web a Linux

41. Protegiu el sistema internament

Utilitzeu la protecció interna del sistema contra virus, rootkits, programari maliciós i, com a bona pràctica, instal·leu sistemes de detecció d'intrusions que puguin detectar activitats no autoritzades (atacs DDOS, exploracions de ports), com ara:

  1. AIDE: Entorn avançat de detecció d'intrusions: http://aide.sourceforge.net/
  2. ClamAV: escàner antivirus https://www.clamav.net
  3. Rkhunter: escàner de rootkit
  4. Lynis: eina d'auditoria i anàlisi de seguretat per a Linux
  5. Tripwire: seguretat i integritat de les dades http://www.tripwire.com/
  6. Fail2Ban: prevenció d'intrusions en xarxa
  7. OSSEC: sistema de detecció d'intrusions basat en host (HIDS) http://ossec.github.io/
  8. Mod_Security: protegeix els atacs de força bruta o DDoS

42. Modificar les variables d'entorn d'usuari

Afegiu el format de data i hora per emmagatzemar l'execució d'ordres emetent l'ordre següent:

# echo 'HISTTIMEFORMAT="%d/%m/%y  %T  "' >> .bashrc'

Força a gravar a l'instant HISTFILE cada vegada que s'escriu una ordre (en lloc de tancar la sessió):

# echo ‘PROMPT_COMMAND="history -a"’ >> .bashrc

Limiteu el temps d'espera de la sessió d'inici de sessió. Desmunta automàticament el shell quan no es realitza cap activitat durant un període de temps inactiu. Molt útil per desconnectar automàticament les sessions SSH.

# echo ‘TMOUT=120’ >> .bashrc

Aplica totes les regles executant:

# source .bashrc

43. Còpia de seguretat de dades

Utilitzeu instantànies de LVM, etc. per emmagatzemar una còpia del vostre sistema, preferiblement fora del lloc, en cas de fallada del sistema.

Si el sistema es veu compromès, podeu restaurar les dades de còpies de seguretat anteriors.

Finalment, no oblideu que, per moltes mesures de seguretat i contramesures que preneu per mantenir el vostre sistema segur, mai estareu segur al 100% sempre que la vostra màquina estigui endollada i engegada.