Fortalecimiento de Linux: Una lista de verificación de 15 pasos para un servidor Linux seguro

Gus Khawaja

La mayoría de la gente asume que Linux es seguro, y eso es una suposición falsa. Imagine que su computadora portátil es robada sin que primero se endurezca. Un ladrón probablemente asumiría que su nombre de usuario es » root «y su contraseña es» toor», ya que es la contraseña predeterminada en Kali y la mayoría de la gente continúa usándola. ¿Y tú? Espero que no.

Las implicaciones profesionales negativas de elegir no endurecer su host Linux de Kali son graves, por lo que compartiré los pasos necesarios para hacer que su host Linux sea seguro, incluida la forma en que uso las pruebas de penetración y Kali Linux para hacer el trabajo. Es importante tener en cuenta que, si bien son muchas distribuciones (también conocidas como distribuciones) de Linux y cada una difiere desde la perspectiva de la línea de comandos, la lógica es la misma. Utilice los siguientes consejos para endurecer su propia caja Linux.

1-Documente la información del host

Cada vez que trabaje en un nuevo trabajo de endurecimiento de Linux, debe crear un nuevo documento que tenga todos los elementos de la lista de verificación enumerados en esta publicación, y debe marcar cada elemento que haya aplicado. Además, en la parte superior del documento, debe incluir la información del host de Linux:

  • Nombre de la máquina
  • Dirección IP
  • Dirección mac
  • Nombre de la persona que está haciendo el endurecimiento (lo más probable es que usted)
  • Fecha
  • Número de activo (Si trabaja para una empresa, debe incluir el número de activo que su empresa utiliza para etiquetar hosts.)

2-Protección del BIOS

Debe proteger el BIOS del host con una contraseña para que el usuario final no pueda cambiar y anular la configuración de seguridad del BIOS; es importante mantener esta área protegida de cualquier cambio. Cada fabricante de computadoras tiene un conjunto diferente de claves para ingresar al modo BIOS, luego es cuestión de encontrar la configuración donde se establece la contraseña administrativa.

A continuación, debe deshabilitar el arranque desde dispositivos multimedia externos (USB / CD / DVD). Si omite cambiar esta configuración, cualquiera puede usar una memoria USB que contenga un sistema operativo de arranque y acceder a los datos de su sistema operativo.

+ ¿Quieres saber más sobre Linux? Obtenga más información con Pluralsight, una plataforma de aprendizaje tecnológico. Aprende Linux ahora. +

Las placas base de los últimos servidores tienen un servidor web interno donde puede acceder a ellas de forma remota. Asegúrate de cambiar la contraseña predeterminada de la página de administración o deshabilitarla si es posible.

3-Cifrado de disco duro (confidencialidad)

La mayoría de las distribuciones de Linux le permitirán cifrar sus discos antes de la instalación. El cifrado de disco es importante en caso de robo porque la persona que robó su computadora no podrá leer sus datos si conecta el disco duro a su máquina.

En la imagen de abajo, elija la tercera opción de la lista: Guiado: use todo el disco y configure LVM cifrado (LVM significa administrador de volúmenes lógicos).)

Si su distribución Linux no admite cifrado, puede optar por un software como TrueCrypt.

4-Protección de disco (disponibilidad)

Las copias de seguridad tienen muchas ventajas en caso de un sistema dañado, errores en la actualización del sistema operativo. Para servidores importantes, la copia de seguridad debe transferirse fuera del sitio en caso de desastre. La copia de seguridad también debe gestionarse. Por ejemplo, ¿por cuánto tiempo conservará las copias de seguridad antiguas? ¿Cuándo necesita hacer una copia de seguridad de su sistema (todos los días, todas las semanas?)?

sistemas Críticos deben ser separados en diferentes particiones para:

  • /
  • /boot
  • /usr
  • /home
  • /tmp
  • /var
  • /opt

Porcionado discos le da la oportunidad de rendimiento y la seguridad en caso de un error del sistema. En la imagen de abajo, puede ver la opción de cómo separar particiones en Kali Linux durante la instalación.

5-Bloquear el directorio de arranque

El directorio de arranque contiene archivos importantes relacionados con el núcleo Linux, por lo que debe asegurarse de que este directorio esté bloqueado con permisos de solo lectura siguiendo los siguientes pasos simples. Primero, abra el archivo «fstab».

Luego, agregue la última línea resaltada en la parte inferior.

Cuando termine de editar el archivo, debe establecer el propietario ejecutando el siguiente comando:

#chown root:root /etc/fstab

A continuación, establecí algunos permisos para asegurar la configuración de arranque:

  • Establece el propietario y el grupo de /etc/grub.conf al usuario root:

#chown root:root /etc/grub.conf

  • Establezca permisos en /etc / grub.archivo de configuración para leer y escribir solo para root:

#chmod og-rwx /etc/grub.conf

  • Requerir autenticación para el modo de usuario único:

#sed -i "/SINGLE/s/sushell/sulogin/" /etc/sysconfig/init

#sed -i "/PROMPT/s/yes/no/" /etc/sysconfig/init

6-Deshabilitar el uso de USB

Dependiendo de lo crítico que sea su sistema, a veces es necesario deshabilitar el uso de memorias USB en el host de Linux. Hay varias formas de negar el uso de almacenamiento USB; aquí hay una popular:

Abra la «lista negra».archivo de configuración con su editor de texto favorito:

#nano /etc/modprobe.d/blacklist.conf

Cuando el archivo se abra, agregue la siguiente línea al final del archivo (guardar y cerrar):

blacklist usb_storage

Después de esto, abre el rc.archivo local:

#nano /etc/rc.local

Por último, agregue las dos líneas siguientes:

modprobe -r usb_storage

exit 0

7-Actualización del sistema

Lo primero que debe hacer después del primer arranque es actualizar el sistema; este debe ser un paso fácil. Generalmente, abres la ventana de tu terminal y ejecutas los comandos apropiados. En Kali Linux, puede lograr esto ejecutando los comandos de la siguiente imagen:

8-Compruebe los paquetes instalados

Enumere todos los paquetes instalados en su sistema operativo Linux y elimine los innecesarios. Debe ser muy estricto si el host que está tratando de endurecer es un servidor porque los servidores necesitan el menor número de aplicaciones y servicios instalados en ellos. Este es un ejemplo de cómo listar los paquetes instalados en Kali Linux:

Recuerde que deshabilitar los servicios innecesarios reducirá la superficie de ataque, por lo que es importante eliminar los siguientes servicios heredados si los encontró instalados en el servidor Linux:

  • Servidor Telnet
  • Servidor RSH
  • Servidor NIS
  • Servidor TFTP
  • Servidor de conversación

9-Comprobar si hay puertos abiertos

Identificar conexiones abiertas a Internet es una misión crítica. En Kali Linux, utilizo el siguiente comando para detectar cualquier puerto abierto oculto:

10-SSH seguro

Sí, de hecho, SSH es seguro, pero también debe endurecer este servicio. En primer lugar, si puede deshabilitar SSH, es un problema resuelto. Sin embargo, si desea usarlo, debe cambiar la configuración predeterminada de SSH. Para hacerlo, busque en /etc / ssh y abra el archivo «sshd_config» utilizando su editor de texto favorito.

  • Cambie el número de puerto predeterminado 22 a otra cosa, por ejemplo, 99.
  • Asegúrese de que root no pueda iniciar sesión de forma remota a través de SSH:

PermitRootLogin no

  • Permitir que algunos usuarios específicos:

AllowUsers

La lista puede seguir y seguir, pero debe ser suficiente para empezar. Por ejemplo, algunas empresas agregan pancartas para disuadir a los atacantes y disuadirlos de seguir adelante. Le animo a consultar el manual del SSH para comprender todas las configuraciones de este archivo, o puede visitar este sitio para obtener más información.

Aquí hay algunas opciones adicionales que debe asegurarse de que existan en el archivo» sshd_config»:

  • Protocolo2
  • IgnoreRhosts a sí
  • HostbasedAuthentication no
  • PermitEmptyPasswords no
  • x11para el no de asignación
  • MaxAuthTries 5
  • Cifrados aes128-ctr,aes192-ctr,aes256-ctr
  • ClientAliveInterval 900
  • ClientAliveCountMax 0
  • UsePAM sí

Finalmente, establezca los permisos en el archivo sshd_config para que solo los usuarios root puedan cambiar su contenido:

#chown root:root /etc/ssh/sshd_config

#chmod 600 /etc/ssh/sshd_config

11- Habilitar SELinux

Seguridad mejorada Linux es un mecanismo de seguridad del núcleo para admitir la política de seguridad de control de acceso. El SELinux tiene tres modos de configuración:

  • Desactivado: Desactivado
  • Permisivo: Imprime advertencias
  • Cumplimiento: Se aplica la política

Con un editor de texto, abra el archivo de configuración:

#nano /etc/selinux/config

Y asegúrese de que la política se aplique:

SELINUX=enforcing

12- Parámetros de red

Asegurar sus actividades de red de host Linux es una tarea esencial. No siempre asuma que su firewall se encargará de todo. Estas son algunas características importantes a considerar para proteger su red host:

– Deshabilite el reenvío de IP configurando la red.ipv4.parámetro ip_forward a 0 en «/etc / sysctl.conf»

– Habilite la Protección de Mensajes de Error Erróneos configurando la red.ipv4.icmp_ignore_bogus_error_responses parámetro a 1 en » / etc / sysctl.conf »

Recomiendo encarecidamente usar el Firewall de Linux aplicando las reglas iptables y filtrando todos los paquetes entrantes, salientes y reenviados. Configurar las reglas de iptables llevará algún tiempo, pero vale la pena.

13- Políticas de contraseñas

Las personas a menudo reutilizan sus contraseñas, lo que es una mala práctica de seguridad. Las contraseñas antiguas se almacenan en el archivo «/etc/security/opasswd». Vamos a usar el módulo PAM para administrar las políticas de seguridad del host Linux. En una distribución debian, abra el archivo » / etc / pam.d / common-password » utilizando un editor de texto y añadir las dos líneas siguientes:

auth sufficient pam_unix.so likeauth nullok

password sufficient pam_unix.so remember=4 (No permitirá a los usuarios reutilizar las últimas cuatro contraseñas.)

Otra política de contraseñas que debe forzarse son las contraseñas seguras. El módulo PAM ofrece un pam_cracklib que protege su servidor de ataques de diccionario y de fuerza bruta. Para realizar esta tarea, abra el archivo /etc/pam.d / system-auth usando cualquier editor de texto y añadir la siguiente línea:

/lib/security/$ISA/pam_cracklib.so retry=3 minlen=8 lcredit=-1 ucredit=-2 dcredit=-2 ocredit=-1

Linux hará un hash de la contraseña para evitar guardarla en texto claro, por lo que debe asegurarse de definir un algoritmo de hash de contraseña seguro SHA512.

Otra funcionalidad interesante es bloquear la cuenta después de cinco intentos fallidos. Para que esto suceda, debe abrir el archivo » / etc / pam.d/contraseña-auth» y agregar las siguientes líneas:

auth required pam_env.so

auth required pam_faillock.so preauth audit silent deny=5 unlock_time=604800

auth pam_unix.so

auth pam_faillock.so authfail audit deny=5 unlock_time=604800

auth sufficient pam_faillock.so authsucc audit deny=5 unlock_time=604800

auth required pam_deny.so

no Hemos terminado todavía; un paso adicional es necesario. Abra el archivo » / etc / pam.d / system-auth » y asegúrese de que ha añadido las siguientes líneas:

auth required pam_env.so

auth required pam_faillock.so preauth audit silent deny=5 unlock_time=604800

auth pam_unix.so

auth pam_faillock.so authfail audit deny=5 unlock_time=604800

auth sufficient pam_faillock.so authsucc audit deny=5 unlock_time=604800

auth required pam_deny.so

Después de cinco intentos fallidos, solo un administrador puede desbloquear la cuenta utilizando el siguiente comando:

# / usr / sbin / faillock user user < userlocked>reset reset

Además, otra buena práctica es establecer que la contraseña caduque después de 90 días, para realizar esta tarea debe:

  • Establezca el parámetro PASS_MAX_DAYS en 90 en » / etc / login.defs «
  • Cambiar el usuario activo ejecutando el siguiente comando :

#chage --maxdays 90 <user>

El siguiente consejo para mejorar las políticas de contraseñas es restringir el acceso al comando su configurando pam_wheel.so parámetros en » / etc / pam.d / su»:

se requiere autorización pam_wheel.so use_uid

El consejo final para la política de contraseñas es deshabilitar las cuentas del sistema para usuarios no root mediante el siguiente script bash:

#!/bin/bash

for user in `awk -F: '( < 500) {print }' /etc/passwd`; do

if

then

/usr/sbin/usermod -L $user

if && &&

then /usr/sbin/usermod -s /sbin/nologin $user

fi

fi

done

14-Permisos y verificaciones

Prepararse mentalmente porque esto va a ser una larga lista. Sin embargo, los permisos son una de las tareas más importantes y críticas para lograr el objetivo de seguridad en un host Linux.

#chown root:root /etc/anacrontab

#chmod og-rwx /etc/anacrontab

#chown root:root /etc/crontab

#chmod og-rwx /etc/crontab

#chown root:root /etc/cron.hourly

#chmod og-rwx /etc/cron.hourly

#chown root:root /etc/cron.daily

#chmod og-rwx /etc/cron.daily

#chown root:root /etc/cron.weekly

#chmod og-rwx /etc/cron.weekly

#chown root:root /etc/cron.monthly

#chmod og-rwx /etc/cron.monthly

#chown root:root /etc/cron.d

#chmod og-rwx /etc/cron.d

Establecer el derecho y permisos en «/var/spool/cron» para «crontab de root»

#chown root:root <crontabfile>

#chmod og-rwx <crontabfile>

el Usuario/Propietario del Grupo y los Permisos de la «passwd» archivo

#chmod 644 /etc/passwd

#chown root:root /etc/passwd

el Usuario/Propietario del Grupo y el Permiso en el archivo «grupo»

#chmod 644 /etc/group

#chown root:root /etc/group

Establecer el Propietario del Usuario / Grupo y el Permiso en el archivo «sombra»

#chmod 600 /etc/shadow

#chown root:root /etc/shadow

Establecer el Propietario del Usuario / Grupo y el permiso en el archivo «gshadow»

#chmod 600 /etc/gshadow

#chown root:root /etc/gshadow

15- Endurecimiento adicional del proceso

Para este último elemento de la lista, incluyo algunos consejos adicionales que deben tenerse en cuenta al endurecer un host Linux.

Primero, restringir los volcados de núcleo por:

  • Añadiendo el núcleo duro 0 al » /etc/security / limits.archivo de configuración
  • Añadiendo fs.suid_dumpable = 0 al » /etc / sysctl.archivo de configuración

En segundo lugar, configure Exec Shield por:

  • Añadiendo núcleo.exec-shield = 1 al » /etc / sysctl.archivo conf »

En tercer Lugar, habilite la Colocación aleatoria de Regiones de Memoria Virtual mediante:

  • Añadiendo núcleo.randomize_va_space = 2 al » /etc / sysctl.archivo de configuración

Palabras finales

En esta breve publicación, cubrimos muchas configuraciones importantes para la seguridad de Linux. Pero, acabamos de arañar la superficie del endurecimiento de Linux: hay muchas configuraciones complejas y arenosas. Para obtener más información sobre cómo endurecer sus servidores Linux para una mejor seguridad, consulte mis cursos en Pluralsight.

Gus Khawaja es consultor de seguridad y autor en Pluralsight. Trabaja en seguridad, TI y desarrollo de aplicaciones web y crea cursos para Pluralsight. Gus ha entregado y desarrollado con éxito soluciones de TI para empresas de todo Canadá. Después de muchos años de experiencia en informática, ha centrado su atención en la ciberseguridad y la importancia que la seguridad aporta a este campo minado. Su pasión por el hacking ético se mezcló con su experiencia en programación y lo convierten en un sabio profesional de la Navaja Suiza en el campo de la informática.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.