Búsqueda de sitios web

20 consejos de seguridad para reforzar el servidor CentOS - Parte 1


Este tutorial solo cubre consejos de seguridad generales para CentOS 8/7 que pueden usarse para reforzar el sistema. Los consejos de la lista de verificación están destinados a usarse principalmente en varios tipos de servidores básicos 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, portátiles y computadoras de placa única del tamaño de una tarjeta (Raspberry Pi).

Requisitos

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

1. Protección física

Bloquee el acceso a sus salas de servidores, utilice bloqueo de racks y videovigilancia. Tenga en cuenta que cualquier acceso físico a las salas de servidores puede exponer su máquina a graves 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.), iniciar 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 altamente confidenciales, probablemente debería usar protección física avanzada, como colocar y bloquear el servidor en una jaula de Faraday o usar una solución militar TEMPEST para minimizar el impacto de espiar el sistema a través de radio o emanaciones de fugas eléctricas.

3. BIOS/UEFI seguro

Inicie el proceso de protección de su máquina asegurando la configuración de BIOS/UEFI, especialmente establezca una contraseña de BIOS/UEFI y deshabilite los dispositivos de arranque (CD, DVD, deshabilite la compatibilidad con USB) en para evitar que usuarios no autorizados modifiquen la configuración del BIOS del sistema o alteren la prioridad del dispositivo de inicio e inicien 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 GRUB para evitar que usuarios malintencionados alteren la secuencia de inicio del kernel o los niveles de ejecución, editen los parámetros del kernel o inicien el sistema en modo de usuario único para dañar su sistema y restablecer la raíz. contraseña para obtener control privilegiado.

5. Utilice particiones de disco separadas

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 lograr redundancia y 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, utilice 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 soportar grandes volúmenes. cantidades de datos. Para datos, redundancia, considere usar el diseño LVM encima del nivel RAID 1.

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

  1. Configurar 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 usando dos discos en Linux

7. Modifique 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 bits setuid en este tipo de particiones agregando las siguientes opciones al archivo fstab como se ilustra a continuación. extracto:

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

Para evitar la escalada de privilegios y la ejecución de scripts arbitrarios, 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. Cifrar los Discos Duros a nivel de bloque con LUKS

Para proteger el espionaje de datos confidenciales en caso de acceso físico a los discos duros de las máquinas. Le sugiero que aprenda cómo cifrar un disco leyendo nuestro artículo Cifrado de datos del 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 sólo la cantidad mínima de paquetes necesarios

Evite instalar programas, aplicaciones o servicios innecesarios o sin importancia para evitar vulnerabilidades en los paquetes. Esto puede disminuir 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 resultará en corrupción o pérdida de datos.

11. Actualice el sistema con frecuencia

Actualice el sistema periódicamente. 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 o mediante una aplicación de consola remota o una consola virtualizada (KVM, interfaz de software de virtualización), debe desactivar Ctrl+Alt. Secuencia de teclas +Supr 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 desde repositorios oficiales u confiables. Utilice una instalación mínima del sistema en caso de que la máquina esté destinada a funcionar toda su vida como servidor.

Verifique los paquetes instalados usando 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 Systemd Services después de las actualizaciones de Daemon

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

systemctl restart httpd.service

15. Eliminar servicios innecesarios

Identifique los servicios que escuchan en puertos específicos usando el siguiente comando ss.

ss -tulpn

Para enumerar todos los servicios instalados con su estado de salida, ejecute 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 forma 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 los datos transmitidos

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

Utilice sólo sftp, scp para transferencias de archivos y SSH o VNC sobre túneles SSH para conexiones de consola remota o acceso a GUI.

Para hacer un túnel de una consola VNC a través de SSH, utilice 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 establecer una conexión virtual con el punto final remoto.

vncviewer localhost:5902

17. Escaneo de puertos de red

Realice comprobaciones de puertos externos utilizando la herramienta Nmap desde un sistema remoto a través de la LAN. Este tipo de escaneo 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 los puertos conocidos (<1024).

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

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

19. Inspeccionar paquetes de protocolo con Tcpdump

Utilice la utilidad tcpdump para detectar 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 tcpdump capturado utilice un programa más avanzado como Wireshark.

tcpdump -i eno16777736 -w tcpdump.pcap

20. Prevenir ataques 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 nombres de dominio, para evitar ataques de hombre en el -ataques intermedios, tráfico innecesario para servidores DNS raíz, falsificación o creación de un ataque DOS.

Esta es sólo la primera parte. En la siguiente parte analizaremos otros consejos de seguridad para CentOS 8/7.