Saltar al contenido

Los 50 Mejores Consejos ara Aumentar la Seguridad de tu Sistema Linux

May 25, 2020
Los 50 mejores consejos para aumentar la seguridad de tu sistema Linux

Linux alimenta la mayoría de la web y una cantidad considerable de estaciones de trabajo en todo el mundo. Una de las principales razones detrás de la popularidad cada vez mayor de los sistemas Linux y BSD son sus políticas sólidas con respecto a la seguridad. Los sistemas Linux son inherentemente difíciles de descifrar debido a sus principios de diseño subyacentes.

Sin embargo, ningún sistema es irrompible, y si no fortalece su estación de trabajo o servidor Linux a la par con los últimos estándares, es probable que sea víctima de varios tipos de ataques y / o violaciones de datos.  Es por eso que hemos delineado 50 consejos de fortalecimiento de Linux que lo ayudarán a aumentar la seguridad de su servidor al siguiente nivel.

La seguridad se ha convertido en una parte integral del mundo informático. Como resultado, es imprescindible fortalecer su estación de trabajo personal, así como la seguridad del servidor. Por lo tanto, continúe leyendo e incorpore los siguientes consejos tanto como sea posible para aumentar la seguridad de su máquina Linux.

Contenidos

1. Información del host del documento

Documentar la información del host puede ser extremadamente beneficioso a largo plazo. Si tiene la intención de mantener el mismo sistema a lo largo del tiempo, lo más probable es que las cosas se vuelvan complicadas en algún momento. Sin embargo, si documenta su estación de trabajo o servidor desde el día de su instalación, tendrá una idea sólida de la infraestructura general del sistema y las políticas empleadas.

Incluya la siguiente información sobre el sistema en su documentación. Siéntase libre de agregar algunos extras según los requisitos de su servidor.

  • Nombre del sistema
  • Fecha de instalación
  • Número de activo (valores que etiquetan hosts en entornos empresariales)
  • dirección IP
  • Dirección MAC
  • Versión del núcleo
  • Nombre del administrador

2. BIOS seguro y deshabilitar el arranque USB

Debe proteger su BIOS con una contraseña adecuada para que otros usuarios no puedan acceder o modificar la configuración. Dado que es bastante sencillo acceder al menú del BIOS en las placas base modernas, los usuarios finales pueden anular la configuración existente y manipular configuraciones sensibles.

Además, los usuarios también pueden usar sistemas de arranque para acceder a sus datos de host. Esto también podría presentar amenazas a la integridad de su servidor. Puede deshabilitar por completo los dispositivos USB mediante el siguiente comando.

# echo 'install usb-storage /bin/true' >> /etc/modprobe.d/disable-usb-storage.conf

El arranque USB también se puede desactivar desde el menú del BIOS. Sin embargo, esto no es obligatorio si está ejecutando una estación de trabajo personal a la que otros usuarios no pueden acceder.
deshabilitar el arranque USB

3. Cifrar almacenamiento en disco

Cifrar el almacenamiento en disco puede ser muy beneficioso a largo plazo. Evitará fugas de datos en caso de robo o intrusión de terceros. Afortunadamente, hay una amplia variedad de herramientas de cifrado de Linux que hacen que esta tarea sea fácil para los administradores.

Además, las distribuciones modernas de Linux ofrecen a los administradores cifrar su sistema de archivos Linux durante el proceso de instalación. Sin embargo, debe saber que el cifrado puede afectar el rendimiento del rendimiento y probablemente dificultará la recuperación de datos.

4. Cifrar la comunicación de datos

Dado que los datos transmitidos a través de la red pueden capturarse y analizarse fácilmente utilizando herramientas de seguridad de código abierto, el cifrado de datos debe ser su máxima prioridad durante el proceso de fortalecimiento de Linux. Muchas herramientas de comunicación de datos heredadas no emplean un cifrado adecuado y, por lo tanto, pueden dejar sus datos vulnerables.

Siempre debe usar servicios de comunicación seguros como ssh, scp, rsync o sftp para la transferencia remota de datos. Linux también permite a los usuarios montar sistemas de archivos remotos utilizando herramientas especiales como fusibles o sshfs. Intente utilizar el cifrado GPG para cifrar y firmar sus datos. Otras herramientas de Linux que ofrecen servicios de cifrado de datos incluyen OpenVPN, Lighthttpd SSL, Apache SSL y Let’s Encrypt.

5. Evite los servicios de comunicación heredados

Una gran cantidad de programas heredados de Unix no proporcionan seguridad esencial durante la transmisión de datos. Estos incluyen FTP, Telnet, rlogin y rsh. No importa si está asegurando su servidor Linux o sistema personal, deje de usar estos servicios para siempre.

Puede usar otras alternativas para este tipo de tareas de transferencia de datos. Por ejemplo, servicios como OpenSSH, SFTP o FTPS aseguran que la transmisión de datos se realice a través de un canal seguro. Algunos de ellos emplean encriptaciones SSL o TLS para fortalecer su comunicación de datos. Puede usar los siguientes comandos para eliminar servicios heredados como NIS, telnet y rsh de su sistema.

# yum erase xinetd ypserv tftp-server telnet-server rsh-server
# apt-get --purge remove xinetd nis yp-tools tftpd atftpd tftpd-hpa telnetd rsh-server rsh-redone-server

Use el primer comando para distribuciones basadas en RPM como RHEL y Centos o cualquier sistema que use el administrador de paquetes yum. El segundo comando funciona en sistemas basados en Debian / Ubuntu .

6. Mantenga Kernel y paquetes actualizados

Para mantener la seguridad de su servidor, siempre debe aplicar las últimas actualizaciones de seguridad lo antes posible. Esto puede reducir la superficie de ataque en caso de que se descubran vulnerabilidades en paquetes o módulos de kernel más antiguos. Afortunadamente, actualizar el sistema es muy fácil y puede hacerse razonablemente rápido.

# yum update
# apt-get update && apt-get upgrade

Use el comando yum para actualizar sus sistemas RHEL / Centos y el comando apt para distribuciones basadas en Ubuntu / Debian. Además], puede automatizar este proceso utilizando el trabajo cron de Linux. Visite nuestra guía sobre crontab de Linux para obtener más información sobre los trabajos cron.

7. Habilite SELinux

SELinux o Security Enhanced Linux es un mecanismo de seguridad que implementa varios métodos para el control de acceso a nivel del núcleo. SELinux es desarrollado por Red Hat y se ha agregado a muchas distribuciones modernas de Linux. Puede pensarlo como un conjunto de modificaciones del kernel y herramientas de espacio de usuario. Puede verificar si SELinux está habilitado en su sistema o no mediante el siguiente comando.

# getenforce

Si devuelve la imposición, significa que su sistema está protegido por SELinux. Si el resultado dice permisivo, significa que su sistema tiene SELinux pero no se aplica. Volverá deshabilitado para sistemas donde SELinux está completamente deshabilitado. Puede aplicar SELinux utilizando el siguiente comando.

# setenforce 1

8. Minimice los paquetes del sistema

Minimizar los paquetes del sistema puede aumentar en gran medida la seguridad general de su sistema. Dado que los errores de software son una de las principales barreras para la seguridad, tener menos paquetes significa que la superficie de vulnerabilidad se vuelve más pequeña. Además, los servidores generalmente obtienen un aumento considerable del rendimiento cuando están libres de bloatware innecesario.

# yum list installed
# yum list <package>
# yum remove <package>

Puede usar los comandos yum anteriores en Linux para enumerar el software instalado en su sistema y deshacerse de los que realmente no necesita. Utilice los siguientes comandos si está ejecutando un sistema basado en Debian / Ubuntu.

# dpkg --list
# dpkg --info <package>
# apt-get remove <package>

9. Servicios de red divididos

Si está utilizando servicios de red monolíticos tradicionales en su servidor, un atacante obtendrá acceso a toda su infraestructura tan pronto como explote un solo servicio. Por ejemplo, supongamos que está ejecutando una pila LAMP , ¿qué sucede cuando un atacante explota un error en el servicio Apache? Eventualmente escalará otros servicios y probablemente obtendrá el control total del sistema.

Sin embargo, si divide sus servicios de red y usa una red por servicio, el ataque será menos exitoso. Esto se debe a que el intruso deberá explotar cada red antes de poder obtener acceso completo al sistema. Puede seguir los pasos a continuación para dividir una configuración de pila LAMP tradicional.

  • Configurar un servidor de archivos NFS
  • Configurar un servidor de base de datos MySQL
  • Configurar un servidor de caché de Memcached
  • Configurar un servidor web Apache + php5
  • Configurar un servidor Lighttpd para datos estáticos
  • Configurar un servidor Nginx para proxy inverso

10. Mantener cuentas de usuario y política de contraseña

Los sistemas Unix generalmente tienen más de una cuenta de usuario. Su sistema es tan seguro como los usuarios que lo ejecutan. Por lo tanto, asegúrese de que solo las personas de confianza puedan ejecutar un sistema específico. Puede usar los comandos useradd / usermod para agregar y mantener nuevas cuentas de usuario en su máquina.

Siempre aplique políticas de contraseñas seguras. Una contraseña segura debe tener más de ocho caracteres y una combinación de letras, números y caracteres especiales como mínimo. Sin embargo, los usuarios deberían poder memorizar sus contraseñas. Además, verifique que su contraseña no sea susceptible a ataques de diccionario. Puede usar el módulo PAM de Linux llamado pam_cracklib.so para hacer esto.

11. Establecer fechas de caducidad de contraseña

Otro método común de fortalecimiento de Linux es habilitar la caducidad de la contraseña para todas las cuentas de usuario. Puede establecer fácilmente las fechas de vencimiento de las contraseñas de los usuarios utilizando el comando chage en Linux. Su sistema le pedirá a los usuarios que establezcan una nueva contraseña una vez que caduque la existente.

# chage -l mary
# chage -M 30 mary
# chage -E "2020-04-30"

El primer comando enumera la fecha de caducidad de la contraseña actual para el usuario Mary. El segundo comando establece la fecha de vencimiento después de 30 días. También puede establecer esta fecha usando un formato AAAA-MM-DD usando el tercer comando.

12. Aplicar el módulo Linux PAM

Puede aumentar la seguridad de la contraseña asegurándose de que los usuarios no puedan establecer o usar contraseñas débiles. Los descifradores de contraseñas pueden forzarlos con fuerza bruta y obtener acceso no autorizado. Además, limite la reutilización de la contraseña agregando la siguiente línea a Ubuntu / Debian y RHEL / Centos respectivamente.

# echo 'password sufficient pam_unix.so use_authtok md5 shadow remember=12' >> /etc/pam.d/common-password
# echo 'password sufficient pam_unix.so use_authtok md5 shadow remember=12' >> /etc/pam.d/system-auth

Ahora, sus usuarios no podrán reutilizar ninguna contraseña utilizada en las últimas 12 semanas. Además, use los siguientes consejos para prohibir por completo las frases de contraseña débiles.

# apt-get install libpam-cracklib       # install cracklib support on Ubuntu/Debian

Añadir la línea –

# echo 'password required pam_cracklib.so retry=2 minlen=10 difok=6' >> /etc/pam.d/system-auth

No necesita instalar cracklib en RHEL / Centos. Simplemente agregue la siguiente línea.

# echo 'password required /lib/security/pam_cracklib.so retry=2 minlen=10 difok=6' >> /etc/pam.d/system-auth

Los administradores deben a

13. Bloqueo de intentos de inicio de sesión después de una falla

segurarse de que los usuarios no puedan iniciar sesión en su servidor después de un cierto número de intentos fallidos. Esto aumenta la seguridad general del sistema al mitigar los ataques de contraseña. Puede usar el comando Linux faillog para ver los intentos fallidos de inicio de sesión.

# faillog
# faillog -m 3
# faillog -l 1800

El primer comando mostrará los intentos fallidos de inicio de sesión para los usuarios de la base de datos / var / log / faillog. El segundo comando establece el número máximo de intentos de inicio de sesión fallidos permitidos en 3. El tercero establece un bloqueo de 1800 segundos o 30 minutos después del número permitido de intentos de inicio de sesión fallidos.

# faillog -r -u <username>

Use este comando para desbloquear a un usuario una vez que se le prohíba iniciar sesión. El número máximo de intentos fallidos de inicio de sesión para el usuario root debe ser alto o, de lo contrario, los ataques de fuerza bruta pueden dejarlo bloqueado.

14. Compruebe si hay contraseñas vacías

Los usuarios son el eslabón más débil en la seguridad general de un sistema. Los administradores deben asegurarse de que ningún usuario en el sistema tenga frases de contraseña vacías. Este es un paso obligatorio para el correcto fortalecimiento de Linux. Use el siguiente comando awk en Linux para verificar esto.

# awk -F: '($2 == "") {print}' /etc/shadow

Se mostrará si hay cuentas de usuario que tengan una contraseña vacía en su servidor. Para aumentar el endurecimiento del servidor Linux, bloquee a cualquier usuario que use frases de contraseña vacías. Puede usar el siguiente comando para hacer esto desde su terminal Linux.

# passwd -l <username>

15. Desactivar inicio de sesión como superusuario

Los administradores no deben iniciar sesión con frecuencia como root para mantener la seguridad del servidor. En su lugar, puede usar sudo ejecutar comandos de terminal de Linux que requieren privilegios de bajo nivel. El siguiente comando muestra cómo crear un nuevo usuario con privilegios de sudo.

# adduser <username> sudo

También puede otorgar privilegios de sudo a usuarios existentes mediante el siguiente comando.

# usermod -a -G sudo <username>

16. Establecer notificaciones por correo electrónico para usuarios de sudo

Puede configurar notificaciones por correo electrónico para que cada vez que un usuario use sudo, el administrador del servidor reciba una notificación por correo electrónico. Edite el archivo / etc / sudoers y agregue las siguientes líneas usando su editor de texto Linux favorito.

# nano /etc/sudoers
mailto "admin@example.server.com"
mail_always on

Reemplace el correo electrónico con su propio correo o el del personal de auditoría. Ahora, cada vez que alguien realiza una tarea a nivel de sistema, usted se informa.

17. Secure GRUB Bootloader

Hay varios cargadores de arranque de Linux disponibles hoy. Sin embargo, GRUB sigue siendo la mejor opción para la mayoría de los administradores debido a su conjunto diverso de características. Además, es el gestor de arranque predeterminado en muchas distribuciones modernas de Linux. Los administradores que toman en serio sus pasos de endurecimiento de Linux deben establecer una contraseña segura para su menú GRUB.

# grub-md5-crypt

Ingrese esto en su terminal y grub le pedirá la contraseña. Ingrese la contraseña que desea establecer y generará un hash cifrado con su contraseña. Ahora, necesitará poner este hash en su menú de configuración de grub.

# nano /boot/grub/menu.lst
or
# nano /boot/grub/grub.conf

Agregue el hash calculado agregando la línea a continuación entre las líneas que establecen el tiempo de espera y la imagen de bienvenida.

password –md5 <calculated-hash>

18. Validar el UID de usuarios no root

Un UID o ID de usuario es un número no negativo asignado a los usuarios de un sistema por el núcleo. El UID 0 es el UID del superusuario o raíz. Es importante asegurarse de que ningún usuario que no sea root tenga este valor de UID. De lo contrario, pueden enmascarar todo el sistema como root.

# awk -F: '($3 == "0") {print}' /etc/passwd

Puede averiguar qué usuarios tienen este valor de UID ejecutando este programa awk. La salida debe contener solo una entrada, que corresponde a la raíz.

19. Desactiva los servicios innecesarios

Se inician muchos servicios y demonios durante el arranque del sistema. Deshabilitar los que no son obligatorios puede ayudar a fortalecer Linux y mejorar el tiempo de arranque. Como la mayoría de las distribuciones modernas usan systemd en lugar de guiones de inicio, puede usar systemctl para encontrar estos servicios.

# systemctl list-unit-files --type=service
# systemctl list-dependencies graphical.target

Estos comandos mostrarán dicho servicio y demonios. Puede deshabilitar un servicio específico utilizando el siguiente comando.

# systemctl disable service
# systemctl disable httpd.service

20. Retire los sistemas X Window (x11)

X Window Systems o x11 es la interfaz gráfica de facto para sistemas Linux. Si está utilizando Linux para alimentar su servidor en lugar de su sistema personal, puede eliminarlo por completo. Ayudará a aumentar la seguridad de su servidor al eliminar muchos paquetes innecesarios.

# yum groupremove "X Window System"

Este comando yum eliminará x11 de los sistemas RHEL o Centos . Si está utilizando Debian / Ubuntu, use el siguiente comando.

# apt-get remove xserver-xorg-core

21. Desactiva los sistemas X Window (x11)

Si no desea eliminar x11 permanentemente, puede deshabilitar este servicio en su lugar. De esta manera, su sistema arrancará en modo texto en lugar de la GUI. Edite el archivo / etc / default / grub con su editor de texto Linux favorito .

# nano /etc/default/grub

Encuentra la siguiente línea:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

Ahora, cámbielo a –

GRUB_CMDLINE_LINUX_DEFAULT="text"

Finalmente, actualice el archivo GRUB usando –

# update-grub

El último paso es decirle a systemd que no cargue el sistema GUI. Puede hacer esto ejecutando los siguientes comandos.

# systemctl enable multi-user.target --force
# systemctl set-default multi-user.target

22. Verifique los puertos de escucha

Los ataques a la red son extremadamente comunes en los servidores. Si desea mantener un servidor seguro, debe validar los puertos de red de escucha de vez en cuando. Esto le proporcionará información esencial sobre su red.

# netstat -tulpn
# ss -tulpn
# nmap -sT -O localhost
# nmap -sT -O server.example.com

Puede usar cualquiera de los comandos anteriores para ver qué puertos están escuchando las solicitudes entrantes. Tenemos una guía anterior que proporciona una discusión detallada de los comandos esenciales de nmap en Linux .

23. Investigue las direcciones IP

Si encuentra alguna IP sospechosa en su red, puede investigarla utilizando comandos estándar de Linux. El siguiente comando usa netstat y awk para mostrar un resumen de los protocolos en ejecución.

# netstat -nat | awk '{print $6}' | sort | uniq -c | sort -n

Utilice el siguiente comando para encontrar más información sobre una IP específica.

# netstat -nat |grep <IP_ADDR> | awk '{print $6}' | sort | uniq -c | sort -n

Para ver todas las direcciones IP únicas, use el siguiente comando.

# netstat -nat | awk '{ print $5}' | cut -d: -f1 | sed -e '/^$/d' | uniq

Alimente el comando anterior a wc para obtener el número total de direcciones IP únicas.

# netstat -nat | awk '{ print $5}' | cut -d: -f1 | sed -e '/^$/d' | uniq | wc -l

Visite nuestra guía sobre varios comandos de red de Linux si desea profundizar en la seguridad de la red.

24. Configurar IPtables y Firewalls

Linux ofrece excelentes protecciones integradas contra solicitudes de red no deseadas en forma de iptables. Es una interfaz para el mecanismo Netfilter proporcionado por el kernel de Linux. Puede bloquear fácilmente direcciones IP específicas o un rango de ellas usando iptables.

# iptables -A INPUT -s xxx.xxx.xxx.xxx -j DROP

Puede usar el comando anterior para bloquear todas las solicitudes de red para una dirección IP determinada. Consulte nuestro manual sobre iptables de Linux para obtener más información sobre esta herramienta. También puede instalar y usar otros firewalls potentes.

25. Configure los parámetros del kernel

El kernel de Linux tiene muchos parámetros de tiempo de ejecución. Puede modificar fácilmente algunos de ellos para mejorar el fortalecimiento de Linux. El comando sysctl permite a los administradores configurar estos parámetros del núcleo. También puede modificar el archivo /etc/sysctl.conf para ajustar el núcleo y aumentar la seguridad.

Por ejemplo, agregue la línea siguiente al final de su configuración de sysctl para permitir que el sistema se reinicie después de 10 segundos de pánico en el núcleo.

# vim /etc/sysctl.conf
kernel.panic=10

Agregue la línea a continuación para aleatorizar las direcciones para las páginas mmap base, heap, stack y VDSO.

kernel.randomize_va_space=2

La siguiente línea hará que el núcleo ignore los errores de ICMP.

net.ipv4.icmp_ignore_bogus_error_responses=1

Puede agregar toneladas de tales reglas y personalizarlas para que se ajusten a los requisitos de su núcleo.

26. Desactiva el permiso SUID y SGID

SUID y SGID son tipos especiales de permisos de archivos en el sistema de archivos de Linux . Tener el permiso SUID permite a otros usuarios ejecutar archivos ejecutables como si fueran los propietarios de esos archivos. Del mismo modo, el permiso SGID otorga derechos de directorio similares al propietario, pero también otorga la propiedad de todos los archivos secundarios en un directorio.

Estos son malos ya que no desea que ningún usuario que no sea usted tenga esos permisos en un servidor seguro. Debería encontrar cualquier archivo que tenga SUID y SGID habilitado y deshabilitarlos. Los siguientes comandos enumerarán respectivamente todos los archivos que tienen habilitados los permisos SUID y SGID.

# find / -perm /4000
# find / -perm /2000

Investigue estos archivos correctamente y vea si estos permisos son obligatorios o no. De lo contrario, elimine los privilegios de SUID / SGID. Los siguientes comandos eliminarán SUID / SGID respectivamente.

# chmod 0755 /path/to/file
# chmod 0664 /path/to/dir

27. Particiones de disco dividido

El sistema de archivos de Linux divide todo en varias partes según su caso de uso. Puede separar las partes críticas del sistema de archivos en diferentes particiones de su almacenamiento en disco. Por ejemplo, los siguientes sistemas de archivos deben dividirse en diferentes particiones.

  • /usr
  • /home
  • /var & /var/tmp
  • /tmp

También debe crear particiones separadas para diferentes servicios, como las raíces del servidor Apache y FTP. Esto ayuda a aislar las partes sensibles de su sistema. Por lo tanto, incluso si un usuario malintencionado obtiene acceso a alguna parte del sistema, no puede moverse libremente por todo el sistema.

28. Particiones seguras del sistema

Al realizar tareas de fortalecimiento del servidor Linux, los administradores deben prestar especial atención a las particiones del sistema subyacentes. Los usuarios malintencionados pueden aprovechar particiones como / tmp, / var / tmp y / dev / shm para almacenar y ejecutar programas no deseados. Afortunadamente, puede implementar pasos para asegurar sus particiones agregando algunos parámetros a su archivo / etc / fstab. Abra este archivo usando un editor de texto de Linux.

# vim /etc/fstab

Encuentre la línea que contiene la ubicación / tmp. Ahora, agregue los parámetros nosuid, nodev, noexec y ro como una lista separada por comas después de los valores predeterminados.

Ofrecen las siguientes funcionalidades:

  • nosuid – prohibit SUID permission on this partition
  • nodev -disable special devices on this partition
  • noexec – disable execution permission for binaries on this partition
  • ro – read-only

29. Habilitar cuotas de disco

Las cuotas de disco son simplemente límites establecidos por el administrador del sistema que restringen el uso del sistema de archivos Linux para otros usuarios. Si está fortaleciendo su seguridad de Linux, la implementación de cuotas de disco es obligatoria para su servidor.

# vim /etc/fstab
LABEL=/home /home ext2 defaults,usrquota,grpquota 1 2

Agregue la línea anterior a / etc / fstab para habilitar la cuota de disco para el sistema de archivos / home. Si ya tiene una línea / inicio, modifíquela en consecuencia.

# quotacheck -avug

Este comando mostrará toda la información de cuota y creará los archivos aquota.user y aquota.group en / home.

# edquota <user>

Este comando abrirá la configuración de cuota de <usuario> en un editor donde puede asignar los límites de cuota. Puede establecer límites blandos y duros para el tamaño de cuota de disco, así como el número de inodos. Use el siguiente comando para ver un informe sobre el uso de la cuota de disco.

# repquota /home

30. Deshabilitar la conectividad IPv6

IPv6 o Internet Protocol versión 6 es la última versión del protocolo TCP / IP. Viene con una lista extendida de características y muchos beneficios de usabilidad. Sin embargo, IPv4 sigue siendo el comercio preferido para la mayoría de los servidores. Por lo tanto, es probable que no esté utilizando IPv6 en absoluto. En tales casos, debe desactivar esto por completo.

Al eliminar la conectividad de red innecesaria, la seguridad de su servidor será más sólida. Por lo tanto, desactivar IPv6 ofrece efectos razonables de endurecimiento de Linux. Agregue las líneas siguientes a /etc/sysctl.conf para deshabilitar la conectividad IPv6 desde el nivel del núcleo.

# vim /etc/sysctl.conf
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1

Finalmente, ejecute el siguiente comando para cargar los cambios en su servidor.

# sysctl -p

31. Mantener archivos de escritura de Word

Los archivos de escritura de Word son archivos en los que cualquiera puede escribir. Esto puede ser muy peligroso ya que efectivamente permite a los usuarios ejecutar ejecutables. Además, su endurecimiento de Linux no es infalible a menos que haya configurado los bits adhesivos apropiados. Un bit fijo es un bit único que, cuando se establece, evita que los usuarios eliminen los directorios de otra persona.
Por lo tanto, si tiene archivos de escritura mundial que tienen un conjunto de bits fijos, cualquiera puede eliminar estos archivos, incluso si no son de su propiedad. Este es otro problema grave y a menudo causará estragos en la seguridad del servidor. Afortunadamente, puede encontrar todos esos archivos mediante el siguiente comando.

# find /path/to/dir -xdev -type d \( -perm -0002 -a ! -perm -1000 \) -print

Reemplace el argumento de ruta con directorios que pueden contener dichos archivos. También puede comenzar desde la raíz ‘/’ de su sistema de archivos, pero llevará mucho tiempo ejecutarlo. Una vez en la lista, investigue los archivos a fondo y cambie sus permisos según sea necesario.

32. Mantener archivos de propietario

Los archivos de propietario son archivos que no tienen ningún propietario o grupo asociado con ellos. Estos pueden plantear una serie de amenazas de seguridad no deseadas. Por lo tanto, los administradores deben tomar las medidas necesarias para identificarlos. Pueden asignarlos a los usuarios apropiados o pueden eliminarlos por completo.

Puede usar el siguiente comando de búsqueda para enumerar los archivos noowner presentes en un directorio. Consulte esta guía para obtener más información sobre el comando find en Linux.

# find /path/to/dir -xdev -type d \( -perm -0002 -a ! -perm -1000 \) -print

Inspeccione los resultados a fondo para asegurarse de que no haya ningún archivo no deseado no deseado en su servidor.

33. Verificar los registros del servidor

La mayoría de los sistemas Unix utilizan el estándar Syslog para registrar información útil sobre el núcleo, la red, los errores del sistema y muchos más. Puede encontrar estos registros en la ubicación / var / log. Se pueden ver usando varios comandos del servidor de terminal en Linux . Por ejemplo, el siguiente comando muestra las entradas de registro recientes sobre el núcleo.

# tail /var/log/kern.log

Del mismo modo, puede consultar /var/log/auth.log para obtener información de autenticación.

# less /var/log/auth.log

El archivo /var/log/boot.log proporciona información sobre el proceso de arranque del sistema.

# less /var/log/boot.log

También puede inspeccionar la información de hardware y dispositivo desde / var / log / dmesg.

# less /var/log/dmesg

El archivo / var / log / syslog contiene información de registro sobre todo en su sistema, excepto los registros de autenticación. Debe inspeccionarlo para obtener una visión general amplia de su servidor.

# less /var/log/syslog

Finalmente, puede usar journalctl para inspeccionar el diario systemd. Producirá una tonelada de registros útiles.

34. Use el paquete logrotate

Los sistemas Linux recopilan registros y los almacenan para los administradores. Con el tiempo, estos registros aumentarán de tamaño e incluso pueden causar una escasez significativa en el espacio en disco. El paquete logrotate es extremadamente útil en este caso ya que puede rotar, comprimir y enviar registros del sistema. Aunque puede cuestionar su papel cuando se trata del fortalecimiento de Linux, ofrece beneficios incuestionables.

Puede encontrar archivos de configuración específicos de servicio de logrotate en el directorio /etc/logrotate.d. La configuración global de logrotate se realiza a través de /etc/logrotate.conf. Puede establecer varios parámetros aquí, como el número de días para mantener los registros, ya sea para comprimirlos o no, y así sucesivamente.

35. Instalar Logwatch / Logcheck

Los archivos de registro generalmente contienen mucha información, muchos de ellos son irrelevantes en términos de endurecimiento de Linux. Afortunadamente, los administradores pueden usar paquetes como Logwatch y Logcheck para monitorear fácilmente registros sospechosos. Filtran las entradas comunes que se esperan en sus registros y solo llaman su atención hacia entradas inusuales.

Logwatch es un analizador de registros extremadamente potente que puede facilitar la gestión de registros. Es adecuado para los administradores que buscan soluciones todo en uno, ya que proporciona un informe unificado de toda la actividad en sus servidores.

# sudo apt-get install logwatch
# yum install -y logwatch

Puede usar los comandos anteriores para instalarlo en los sistemas Ubuntu / Debian y RHEL / Centos respectivamente. Logcheck es considerablemente más simple en comparación con logwatch. Envía correos a los administradores tan pronto como ocurran registros sospechosos. Puede instalarlo mediante:

# sudo apt-get install logcheck
# yum install -y logcheck

36. Instalar soluciones IDS

Uno de los mejores métodos de fortalecimiento de Linux para servidores es usar un IDS (software de detección de intrusiones). Nuestros editores recomiendan encarecidamente el entorno avanzado de detección de intrusiones (AIDE) para este propósito. Es un IDS basado en host que ofrece muchas características robustas, que incluyen varios algoritmos de resumen de mensajes, atributos de archivo, soporte de expresiones regulares, soporte de compresión, etc.

# apt-get install aide
# yum install -y aide

Puede instalarlo en Ubuntu / Debian y RHEL / Centos usando los comandos anteriores. Además, también debe instalar los verificadores de rootkit si desea mantener la seguridad de Linux. Los RootKits son programas dañinos diseñados para asumir el control de un sistema. Algunas herramientas populares para la detección de rootkit son Chkrootkit y rkhunter .

37. Desactivar dispositivos Firewire / Thunderbolt

Siempre es una buena idea deshabilitar tantos periféricos como sea posible. Esto hace que su servidor sea seguro contra los atacantes que han obtenido acceso directo a la infraestructura. Anteriormente, hemos mostrado cómo deshabilitar los dispositivos USB. Sin embargo, los usuarios malintencionados aún pueden conectar módulos firewire o thunderbolt.

Firewire es el nombre genérico de la interfaz de hardware IEEE 1394. Se utiliza para conectar dispositivos digitales como videocámaras. Deshabilítelo usando el siguiente comando.

# echo "blacklist firewire-core" >> /etc/modprobe.d/firewire.conf

Del mismo modo, la interfaz Thunderbolt proporciona conexiones entre su sistema y periféricos de alta velocidad, como almacenes de discos duros, matrices RAID, interfaces de red, etc. Puede deshabilitarlo utilizando el siguiente comando.

# echo "blacklist thunderbolt" >> /etc/modprobe.d/thunderbolt.conf

38. Instalar soluciones IPS

Un IPS o software de prevención de intrusiones protege los servidores de red de ataques de fuerza bruta. Dado que un número considerable de usuarios maliciosos y bots están tratando de obtener acceso a su servidor remoto, configurar un IPS adecuado lo ayudará a largo plazo.

Fail2Ban es una de las soluciones IPS más populares para sistemas tipo Unix. Está escrito usando Python y está disponible en todas las plataformas compatibles con POSIX. Buscará solicitudes de red molestas todo el tiempo y las bloqueará lo antes posible. Instale Fail2Ban usando el siguiente comando.

# apt-get install -y fail2ban
# yum install -y fail2ban

DenyHosts es otra solución IPS popular para el fortalecimiento de Linux. Protegerá sus servidores ssh de intentos intrusivos de fuerza bruta. Use los siguientes comandos para instalar en sus servidores Debian o Centos.

# apt-get install -y denyhosts
# yum install -y denyhosts

39. Endurezca el servidor OpenSSH

OpenSSH es un paquete de software que consta de utilidades de red que proporcionan comunicación segura a través de redes públicas. El servidor OpenSSH se ha convertido en la aplicación de facto para facilitar las conexiones ssh. Sin embargo, los malos también lo saben y con frecuencia apuntan a implementaciones de OpenSSH. Por lo tanto, fortalecer esta aplicación debería ser una preocupación principal para todos los administradores de sistemas Linux.

Por ejemplo, siempre use las claves sobre la contraseña cuando inicie una nueva sesión, desactive el inicio de sesión de superusuario, desactive las contraseñas vacías, limite el acceso de los usuarios, configure los firewalls en el puerto 22, establezca tiempos de espera inactivos, use envoltorios TCP, limite las solicitudes entrantes, desactive la autenticación basada en host , y así. También puede emplear métodos avanzados de endurecimiento de Linux como chrootear OpenSSH.

40. Utiliza Kerberos

Kerberos es un protocolo de autenticación de red informática que permite el acceso a infraestructuras computarizadas basadas en tickets. Utiliza una lógica criptográfica muy difícil de romper, lo que hace que los sistemas compatibles con Kerberos sean muy seguros. Los administradores pueden proteger su sistema de ataques de espionaje y ataques de red pasivos similares muy fácilmente si usan el protocolo Kerberos.

Kerberos está siendo desarrollado por MIT y proporciona varias versiones estables. Puede descargar la aplicación desde su sitio web . Consulte la documentación para ver cómo funciona y cómo puede configurarlo para su uso.

protocolo kerberos para la seguridad del servidor

41. Harden Host Network

Los administradores deben emplear políticas de red sólidas para proteger sus servidores seguros contra hackers maliciosos. Ya hemos descrito la necesidad de utilizar sistemas de detección de intrusos y sistemas de prevención de intrusos. Sin embargo, puede fortalecer aún más su red host realizando las siguientes tareas.

# vim /etc/sysctl.conf
net.ipv4.ip_forward=0
# disbale IP forwarding

net.ipv4.conf.all.send_redirects=0
net.ipv4.conf.default.send_redirects=0
# disable send packet redirects

net.ipv4.conf.all.accept_redirects=0
net.ipv4.conf.default.accept_redirects=0
# disable ICMP redirects

net.ipv4.icmp_ignore_bogus_error_responses
# enable bad error message protection

Hemos agregado comentarios utilizando el símbolo hash para delinear el propósito de estos parámetros de red.

42. Utilice AppArmor

AppArmor es un mecanismo de control de acceso obligatorio (MAC) que permite restringir el uso de los recursos del sistema basados en programas. Permite a los administradores ordenar políticas a nivel de programa en lugar de usuarios. Simplemente puede crear perfiles que controlen el acceso a la red, sockets, permisos de archivos, etc. para sus aplicaciones host.

Los sistemas Debian / Ubuntu recientes vienen con AppArmor preinstalado. Los perfiles de AppArmor preexistentes se almacenan en el directorio /etc/apparmor.d. Puede modificar estas políticas o incluso agregar sus propias políticas durante el proceso de fortalecimiento de Linux. Use el siguiente comando para ver el estado de AppArmor en su sistema.

# apparmor_status

43. Servidor web seguro

Los servidores Linux son ampliamente utilizados para alimentar aplicaciones web. Si está utilizando su servidor para este propósito, debe fortalecer los componentes de su servidor de manera adecuada. Algunos de estos son el tiempo de ejecución de PHP, el servidor Apache HTTP y el servidor proxy inverso Nginx. Asegure su servidor Apache agregando las siguientes líneas en el archivo de configuración.

# vim /etc/httpd/conf/httpd.conf
ServerTokens Prod
ServerSignature Off
TraceEnable Off
Options all -Indexes
Header always unset X-Powered-By
# systemctl restart httpd.service

Hemos preparado una guía independiente sobre el servidor Nginx hace un tiempo. Siga las sugerencias en esa guía para asegurar su servidor Nginx. Dirígete a esta documentación para aprender las mejores prácticas de seguridad de PHP .

44. Configurar TCP Wrappers

Los envoltorios TCP son un sistema de filtrado de red basado en host que permite o niega el acceso a sus servicios de host según políticas preestablecidas. Sin embargo, para que funcione, su servicio de host debe compilarse contra la biblioteca libwrap.a . Algunos demonios de Unix TCP wrapperd comunes incluyen sshd, vsftpd y xinetd.

# ldd /sbin/sshd | grep libwrap

Este comando notificará si un servicio es compatible con envoltorios TCP o no. El sistema TCP wrappers impone el control de acceso mediante dos archivos de configuración, /etc/hosts.allow y /etc/hosts.deny. Por ejemplo, agregue las siguientes líneas a /etc/hosts.allow para permitir todas las solicitudes entrantes al demonio ssh.

# vi /etc/hosts.allow
sshd : ALL

Agregue lo siguiente a /etc/hosts.deny para rechazar todas las solicitudes entrantes al demonio FTP.

# vi /etc/hosts.deny
vsftpd : ALL

Para ver más información sobre las opciones de configuración, consulte la página de manual de tcpd o visite esta documentación de FreeBSD .

45. Mantener acceso Cron

Linux proporciona soporte robusto de automatización mediante trabajos cron. En resumen, puede especificar tareas rutinarias usando el programador cron. Visite nuestra guía anterior sobre cron y crontab para aprender cómo funciona cron. Sin embargo, los administradores deben asegurarse de que los usuarios comunes no puedan acceder o ingresar entradas en el crontab. Simplemente ponga sus nombres de usuario en el archivo /etc/cron.deny para hacer esto.

# echo ALL >>/etc/cron.deny

Este comando deshabilitará cron para todos los usuarios en su servidor, excepto root. Para permitir el acceso de un usuario específico, agregue su nombre de usuario al archivo /etc/cron.allow.

46. Desactivar Ctrl + Alt + Eliminar

Las combinaciones de teclas Ctrl + Alt + Supr permiten a los usuarios forzar el reinicio de muchas distribuciones de Linux. Esto puede ser particularmente problemático si administra un servidor seguro. Los administradores deben deshabilitar esta tecla de acceso rápido para mantener el correcto endurecimiento de Linux. Puede ejecutar el siguiente comando para deshabilitar esto en sistemas basados en systemd.

# systemctl mask ctrl-alt-del.target

Si está en sistemas heredados que usan init V en lugar de systemd, edite el archivo / etc / inittab y comente la siguiente línea agregando un hash antes.

# vim /etc/inittab
#ca::ctrlaltdel:/sbin/shutdown -t3 -r now

47. Habilitar enlace de NIC

La vinculación de NIC o tarjeta de interfaz de red es una forma de agregación de enlaces en Linux. Múltiples interfaces de red se unen en este método para obtener una mejor disponibilidad de recursos y rendimiento. Si mantiene servidores Linux ocupados, puede usar este método para reducir la carga de trabajo en una sola interfaz y distribuirlos en varias interfaces.

Todo el proceso de vinculación de NIC difiere entre los sistemas Debian y RHEL / Centos. Los cubriremos en una guía independiente pronto. Por ahora, simplemente recuerde que puede lograr una mayor confiabilidad al habilitar la vinculación de red.

48. Restringir los basureros

Los volcados de núcleo son instantáneas de memoria que contienen información de bloqueo de ejecutables. Estos se crean cuando los binarios dejan de funcionar o se bloquean en términos simples. Contienen demasiada información confidencial sobre el sistema host y pueden amenazar la seguridad de Linux si cae en las manos equivocadas. Por lo tanto, siempre es una buena idea restringir los volcados de núcleo en los servidores de producción.

# echo 'hard core 0' >> /etc/security/limits.conf
# echo 'fs.suid_dumpable = 0' >> /etc/sysctl.conf
# sysctl -p
# echo 'ulimit -S -c 0 > /dev/null 2>&1' >> /etc/profile

Ejecute los comandos anteriores para restringir los volcados de cor en su servidor y aumentar el endurecimiento de Linux.

49. Habilitar Exec Shield

El proyecto Exec Shield fue desarrollado por Red Hat para proteger los sistemas Linux contra ataques remotos automáticos. Funciona particularmente bien contra varias vulnerabilidades basadas en desbordamiento de búfer. Puede habilitar el escudo ejecutivo para su servidor Linux ejecutando los siguientes comandos.

# echo 'kernel.exec-shield = 1' >> /etc/sysctl.conf
# echo 'kernel.randomize_va_space = 1' >> /etc/sysctl.conf

Este método funcionará en los sistemas Debian y RHEL.

50. Crear copias de seguridad regulares

No importa cuántos métodos de endurecimiento de Linux aplique, debe estar siempre preparado para problemas imprevistos. Hacer una copia de seguridad de su estación de trabajo o servidor puede resultar extremadamente beneficioso a largo plazo. Afortunadamente, existe una gran cantidad de utilidad de copia de seguridad para Linux para facilitar las copias de seguridad del sistema.

Además, debe automatizar el proceso de copia de seguridad y almacenar los datos de su sistema de forma segura. El empleo de soluciones de recuperación y gestión de desastres también puede ser útil cuando se trata de la gestión de datos.

Aunque Linux es mucho más seguro en comparación con los sistemas operativos domésticos, los administradores aún deben mantener un conjunto de políticas de fortalecimiento de Linux. Hemos compilado esta guía con muchas de las mejores prácticas utilizadas por los expertos en seguridad de Linux.

Debe intentar emplear la mayor cantidad posible de ellos. Sin embargo, no los aplique sin comprender su efecto en su sistema. Debe tener un plan infalible, así como una buena comprensión de la seguridad del servidor para mantener su sistema a salvo de usuarios malintencionados. Con suerte, le proporcionamos los consejos esenciales que estaba buscando.

Más en Reiniciado: 

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.

ACEPTAR
Aviso de cookies