20 consejos de seguridad para el refuerzo del servidor CentOS - Parte 1


Este tutorial solo cubre consejos generales de seguridad para CentOS 8/7 que se pueden usar para fortalecer el sistema. Los consejos de la lista de verificación están pensados para usarse principalmente en varios tipos de servidores bare-metal o en máquinas (físicas o virtuales) que brindan servicios de red.

Sin embargo, algunos de los consejos también se pueden aplicar con éxito a máquinas de uso general, como computadoras de escritorio, computadoras portátiles y computadoras de placa única del tamaño de una tarjeta (Raspberry Pi).

  • Instalación mínima de CentOS 8
  • Instalación mínima de CentOS 7

1. Protección física

Cierre el acceso a las salas de servidores, use el bloqueo de los racks y la vigilancia por video. Tenga en cuenta que cualquier acceso físico a las salas de servidores puede exponer su máquina a serios problemas de seguridad.

Las contraseñas del BIOS se pueden cambiar restableciendo los puentes en la placa base o desconectando la batería CMOS. Además, un intruso puede robar los discos duros o conectar directamente nuevos discos duros a las interfaces de la placa base (SATA, SCSI, etc.), arrancar con una distribución en vivo de Linux y clonar o copiar datos sin dejar ningún rastro de software.

2. Reducir el impacto del espionaje

En el caso de datos muy sensibles, probablemente debería utilizar protección física avanzada, como colocar y bloquear el servidor en una solución TEMPEST para minimizar el impacto de espiar el sistema por radio o emanaciones con fugas eléctricas.

3. Asegure BIOS/UEFI

Inicie el proceso de endurecimiento de su máquina asegurando la configuración de BIOS/UEFI, especialmente establezca una contraseña de BIOS/UEFI y deshabilite los dispositivos de medios de arranque (CD, DVD, deshabilitar el soporte USB) para evitar que cualquier usuario no autorizado modifique la configuración del BIOS del sistema o altere la prioridad del dispositivo de arranque y el arranque de la máquina desde un medio alternativo.

Para aplicar este tipo de cambio a su máquina, debe consultar el manual del fabricante de la placa base para obtener instrucciones específicas.

4. Cargador de arranque seguro

Establezca una contraseña de GRUB para evitar que los usuarios malintencionados manipulen la secuencia de arranque del kernel o los niveles de ejecución, editen los parámetros del kernel o inicien el sistema en un modo de usuario único para dañar su sistema y restablecer la contraseña de root para obtener un control privilegiado.

5. Utilice particiones de disco independientes

Al instalar CentOS en sistemas destinados a servidores de producción, utilice particiones dedicadas o discos duros dedicados para las siguientes partes del sistema:

/(root) 
/boot  
/home  
/tmp 
/var 

6. Utilice LVM y RAID para la redundancia y el crecimiento del sistema de archivos

La partición/var es el lugar donde se escriben los mensajes de registro en el disco. Esta parte del sistema puede crecer exponencialmente en tamaño en servidores con mucho tráfico que exponen servicios de red como servidores web o servidores de archivos.

Por lo tanto, use una partición grande para/var o considere configurar esta partición usando volúmenes lógicos (LVM) o combine varios discos físicos en un dispositivo RAID 0 virtual más grande para mantener grandes cantidades de datos. Para los datos, considere la redundancia en el uso del diseño LVM en la parte superior del nivel RAID 1.

Para configurar LVM o RAID en los discos, siga nuestras guías útiles:

  1. Configure el almacenamiento en disco con LVM en Linux
  2. Cree discos LVM usando vgcreate, lvcreate y lvextend
  3. Combine varios discos en un gran almacenamiento virtual
  4. Cree RAID 1 con dos discos en Linux

7. Modificar las opciones de fstab para proteger las particiones de datos

Separe las particiones destinadas a almacenar datos y evite la ejecución de programas, archivos de dispositivo o setuid bit en este tipo de particiones agregando las siguientes opciones al archivo fstab como se ilustra en el siguiente extracto:

/dev/sda5 	 /nas          ext4    defaults,nosuid,nodev,noexec 1 2

Para evitar la escalada de privilegios y la ejecución arbitraria de scripts, cree una partición separada para/tmp y móntela como nosuid, nodev y noexec.

/dev/sda6  	/tmp         ext4    defaults,nosuid,nodev,noexec 0 0

8. Cifre los discos duros a nivel de bloque con LUKS

Con el fin de proteger la intrusión de datos confidenciales en caso de acceso físico a los discos duros de la máquina. Le sugiero que aprenda a cifrar un disco leyendo nuestro artículo Cifrado de datos de disco duro de Linux con LUKS.

9. Utilice PGP y criptografía de clave pública

Para cifrar discos, utilice PGP y criptografía de clave pública o el comando OpenSSL para cifrar y descifrar archivos confidenciales con una contraseña como se muestra en este artículo Configurar el almacenamiento cifrado del sistema Linux.

10. Instale solo la cantidad mínima de paquetes requeridos

Evite instalar programas, aplicaciones o servicios innecesarios o sin importancia para evitar vulnerabilidades de paquetes. Esto puede reducir el riesgo de que el compromiso de una pieza de software pueda comprometer otras aplicaciones, partes del sistema o incluso sistemas de archivos, lo que finalmente da como resultado la corrupción o la pérdida de datos.

11. Actualice el sistema con frecuencia

Actualice el sistema con regularidad. Mantenga el kernel de Linux sincronizado con los últimos parches de seguridad y todo el software instalado actualizado con las últimas versiones emitiendo el siguiente comando:

# yum update

12. Deshabilitar Ctrl + Alt + Supr

Para evitar que los usuarios reinicien el servidor una vez que tengan acceso físico a un teclado oa través de una aplicación de consola remota o una consola virtualizada (KVM, interfaz de software de virtualización), debe deshabilitar la tecla Ctrl + Alt + Del secuencia ejecutando el siguiente comando.

# systemctl mask ctrl-alt-del.target 

13. Eliminar paquetes de software innecesarios

Instale el software mínimo requerido para su máquina. Nunca instale programas o servicios adicionales. Instale paquetes solo de repositorios oficiales o de confianza. Utilice una instalación mínima del sistema en caso de que la máquina esté destinada a funcionar durante toda su vida como servidor.

Verifique los paquetes instalados mediante uno de los siguientes comandos:

# rpm -qa

Haga una lista local de todos los paquetes instalados.

# yum list installed >> installed.txt

Consulte la lista de software inútil y elimine un paquete emitiendo el siguiente comando:

# yum remove package_name

14. Reinicie los servicios de Systemd después de las actualizaciones de Daemon

Utilice el siguiente ejemplo de comando para reiniciar un servicio systemd con el fin de aplicar nuevas actualizaciones.

# systemctl restart httpd.service

15. Eliminar servicios innecesarios

Identifique los servicios que están escuchando en puertos específicos usando el siguiente comando ss.

# ss -tulpn

Para enumerar todos los servicios instalados con su estado de salida, emita el siguiente comando:

# systemctl list-units -t service

Por ejemplo, la instalación mínima predeterminada de CentOS viene con el demonio Postfix instalado de manera predeterminada que se ejecuta con el nombre de un maestro en el puerto 25. Elimine el servicio de red Postfix en caso de que su máquina no se utilice como servidor de correo.

# yum remove postfix

16. Cifrar datos transmitidos

No utilice protocolos no seguros para el acceso remoto o la transferencia de archivos como Telnet, FTP u otros protocolos de texto sin formato como SMTP, HTTP, NFS o SMB que, de forma predeterminada, no cifran las sesiones de autenticación o los datos enviados.

Use solo scp para transferencias de archivos y SSH o VNC sobre túneles SSH para conexiones de consola remota o acceso GUI.

Para tunelizar una consola VNC a través de SSH, use el siguiente ejemplo que reenvía el puerto VNC 5901 desde la máquina remota a su máquina local:

# ssh -L 5902:localhost:5901 remote_machine

En la máquina local, ejecute el siguiente comando para realizar una conexión virtual al punto final remoto.

# vncviewer localhost:5902

17. Escaneo de puertos de red

Realice verificaciones de puertos externos utilizando la herramienta Nmap desde un sistema remoto a través de la LAN. Este tipo de análisis se puede utilizar para verificar las vulnerabilidades de la red o probar las reglas del firewall.

# nmap -sT -O 192.168.1.10

18. Cortafuegos de filtrado de paquetes

Utilice la utilidad firewalld para proteger los puertos del sistema, abrir o cerrar puertos de servicios específicos, especialmente puertos conocidos (<1024).

Instale, inicie, habilite y enumere las reglas de firewall emitiendo los siguientes comandos:

# yum install firewalld
# systemctl start firewalld.service
# systemctl enable firewalld.service
# firewall-cmd --list-all

19. Inspeccione los paquetes de protocolo con Tcpdump

Utilice la utilidad tcpdump para rastrear paquetes de red localmente e inspeccionar su contenido en busca de tráfico sospechoso (puertos de origen-destino, protocolos TCP/IP, tráfico de capa dos, solicitudes ARP inusuales).

Para un mejor análisis del archivo capturado tcpdump, utilice un programa más avanzado como Wireshark.

# tcpdump -i eno16777736 -w tcpdump.pcap

20. Prevenir ataques de DNS

Inspeccione el contenido de su solucionador, generalmente el archivo /etc/resolv.conf, que define la dirección IP de los servidores DNS que debe usar para consultar los nombres de dominio, a fin de evitar ataques de intermediario, tráfico innecesario para servidores DNS raíz, falsificar o crear un ataque DOS.

Esta es solo la primera parte. En la siguiente parte, analizaremos otros consejos de seguridad para CentOS 8/7.