GNU/Linux >> Tutoriales Linux >  >> Linux

Los 50 mejores consejos de seguridad de refuerzo de Linux:una lista de verificación completa

Linux impulsa la mayor parte de la web y una cantidad considerable de estaciones de trabajo en todo el mundo. Una de las principales razones detrás de la creciente popularidad 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 filtraciones de datos. Es por eso que hemos esbozado 50 consejos de refuerzo de Linux que lo ayudarán a aumentar la seguridad de su servidor al siguiente nivel.

Consejos de seguridad para fortalecer Linux para profesionales

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

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, es probable que las cosas se compliquen 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 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 las configuraciones existentes y manipular configuraciones confidenciales.

Además, los usuarios también pueden usar sistemas de arranque para acceder a los datos de su host. Esto también podría representar una amenaza para la integridad de su servidor. Puede deshabilitar los dispositivos USB por completo usando 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.

- -

3. Cifrar almacenamiento en disco

Cifrar el almacenamiento de su disco puede resultar muy beneficioso a largo plazo. Prevendrá fugas de datos en caso de robo o cualquier intrusión de terceros. Afortunadamente, existe una amplia variedad de herramientas de encriptación de Linux que hacen que esta tarea sea sencilla para los administradores.

Además, las distribuciones modernas de Linux ofrecen a los administradores cifrar su sistema de archivos de Linux durante el proceso de instalación. Sin embargo, debe saber que el cifrado puede afectar el 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 se pueden capturar y analizar fácilmente con herramientas de seguridad de código abierto, el cifrado de datos debe ser su principal prioridad durante el proceso de fortalecimiento de Linux. Muchas herramientas de comunicación de datos heredadas no emplean el 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 usando herramientas especiales como fuse o sshfs. Intente utilizar el cifrado GPG para cifrar y firmar sus datos. Otras herramientas de Linux que ofrecen servicios de encriptación 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 brindan la seguridad esencial durante la transmisión de datos. Estos incluyen FTP, Telnet, rlogin y rsh. No importa si está asegurando su servidor Linux o su sistema personal, deje de usar estos servicios para siempre.

Puede utilizar otras alternativas para este tipo de tareas de transferencia de datos. Por ejemplo, servicios como OpenSSH, SFTP o FTPS garantizan 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 el núcleo y los 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 del kernel más antiguos. Afortunadamente, actualizar el sistema es muy fácil y se puede hacer 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. Habilitar SELinux

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

# getenforce

Si vuelve a hacer cumplir eso significa que su sistema está protegido por SELinux. Si el resultado dice permisivo, eso significa que su sistema tiene SELinux pero no se aplica. Volverá deshabilitado para los sistemas donde SELinux está completamente deshabilitado. Puede aplicar SELinux usando el siguiente comando.

# setenforce 1

8. Minimizar paquetes del sistema

Minimizar los paquetes del sistema puede aumentar considerablemente 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 suelen obtener 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. Use 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, digamos que está ejecutando una pila LAMP, ¿qué sucede cuando un atacante explota un error en el servicio de Apache? Con el tiempo escalará otros servicios y es probable que obtenga el control total del sistema.

Sin embargo, si divide sus servicios de red y usa una red por servicio, el ataque tendrá menos éxito. Esto se debe a que el intruso necesitará 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 almacenamiento en 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ñas

Los sistemas Unix suelen tener 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 el useradd /modo de usuario comandos para agregar y mantener nuevas cuentas de usuario en su máquina.

Aplique siempre 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 por 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 caducidad de las contraseñas de los usuarios utilizando el cambio Comando en Linux. Su sistema le pedirá a los usuarios que configuren 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 vencimiento de la contraseña actual para el usuario mary. El segundo comando establece la fecha de caducidad después de 30 días. También puede configurar esta fecha usando un formato AAAA-MM-DD usando el tercer comando.

12. Hacer cumplir el módulo PAM de Linux

Puede aumentar la seguridad de la contraseña asegurándose de que los usuarios no puedan establecer o usar contraseñas débiles. Los crackers de contraseñas pueden forzarlos fácilmente y obtener acceso no autorizado. Además, limite la reutilización de contraseñas 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

Agregue 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

13. Bloquear intentos de inicio de sesión después de un error

Los administradores deben asegurarse de que los usuarios no puedan iniciar sesión en su servidor después de una cierta cantidad de intentos fallidos. Esto aumenta la seguridad general del sistema al mitigar los ataques de contraseña. Puede usar el comando de registro de fallas de Linux para ver los intentos fallidos de inicio de sesión.

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

El primer comando mostrará los intentos de inicio de sesión fallidos 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 tenga prohibido iniciar sesión. El número máximo de intentos de inicio de sesión fallidos para el usuario raíz debe ser alto o, de lo contrario, los ataques de fuerza bruta pueden dejarlo bloqueado.

14. Comprobar 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 del sistema tenga frases de contraseña vacías. Este es un paso obligatorio para el fortalecimiento adecuado 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 tienen una contraseña vacía en su servidor. Para aumentar el fortalecimiento 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. Deshabilitar 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 sudo.

# adduser <username> sudo

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

# usermod -a -G sudo <username>

16. Establecer notificaciones por correo electrónico para usuarios 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 con su editor de texto Linux favorito.

# nano /etc/sudoers
mailto "[email protected]"
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 del sistema, se le informa.

17. Cargador de arranque GRUB seguro

Hay varios gestores de arranque de Linux disponibles en la actualidad. Sin embargo, GRUB sigue siendo la mejor opción para la mayoría de los administradores debido a su diverso conjunto de funciones. Además, es el cargador de arranque predeterminado en muchas distribuciones modernas de Linux. Los administradores que se toman en serio los pasos de fortalecimiento de Linux deben establecer una contraseña segura para su menú de GRUB.

# grub-md5-crypt

Ingrese esto en su terminal y grub le pedirá la contraseña. Ingrese la contraseña que desea configurar y generará un hash encriptado usando su contraseña. Ahora, deberá colocar este hash en su menú de configuración de grub.

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

Agrega el hash calculado agregando la siguiente línea 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 User-ID es un número no negativo asignado a los usuarios de un sistema por el kernel. El UID 0 es el UID del superusuario o root. 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 una sola entrada, que corresponde a la raíz.

19. Deshabilitar servicios innecesarios

Muchos servicios y demonios se inician durante el arranque del sistema. Deshabilitar aquellos que no son obligatorios puede ayudar a fortalecer Linux y mejorar el tiempo de arranque. Dado que la mayoría de las distribuciones modernas usan systemd en lugar de scripts 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 usando el siguiente comando.

# systemctl disable service
# systemctl disable httpd.service

20. Eliminar los sistemas de ventanas X (x11)

X Window Systems o x11 es la interfaz gráfica de facto para los 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á usando Debian/Ubuntu en su lugar, use el siguiente comando.

# apt-get remove xserver-xorg-core

21. Deshabilitar los sistemas de ventanas X (x11)

Si no desea eliminar x11 de forma permanente, puede deshabilitar este servicio. De esta manera, su sistema se iniciará en modo de 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ámbialo 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 hacerlo ejecutando los siguientes comandos.

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

22. Verificar 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 brinda una discusión detallada de los comandos esenciales de nmap en Linux.

23. Investigar direcciones IP

Si encuentra alguna IP sospechosa en su red, puede investigarla utilizando los 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

Use 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 de 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 utilizar otros potentes cortafuegos.

25. Configurar 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 kernel. También puede modificar el archivo /etc/sysctl.conf para ajustar el kernel y aumentar la seguridad.

Por ejemplo, agregue la siguiente línea al final de su configuración de sysctl para permitir que el sistema se reinicie después de 10 segundos de un kernel panic.

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

Agregue la siguiente línea 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 reglas de este tipo y personalizarlas para que se ajusten a los requisitos de su kernel.

26. Deshabilitar 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 a los del 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 otro usuario tenga esos permisos en un servidor seguro. Debería encontrar cualquier archivo que tenga SUID y SGID habilitados 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 SUID/SGID. Los siguientes comandos eliminarán SUID/SGID respectivamente.

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

27. Particiones de disco divididas

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
  • /inicio
  • /var y /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 subyacente. 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 con un editor de texto de Linux.

# vim /etc/fstab

Busque 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:prohibir el permiso SUID en esta partición
  • nodev:deshabilita dispositivos especiales en esta partición
  • noexec:deshabilita el permiso de ejecución para archivos binarios en esta partición
  • ro:solo lectura

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 de Linux para otros usuarios. Si está reforzando 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 /home, modifíquela en consecuencia.

# quotacheck -avug

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

# edquota <user>

Este comando abrirá la configuración de cuota de en un editor donde puede asignar los límites de cuota. Puede establecer límites estrictos y flexibles para el tamaño de la cuota del disco, así como la cantidad de inodos. Utilice el siguiente comando para ver un informe sobre el uso de la cuota de disco.

# repquota /home

30. Deshabilitar la conectividad IPv6

IPv6 o Protocolo de Internet 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 la elección comercial de la mayoría de los servidores. Entonces, es probable que no esté usando IPv6 en absoluto. En tales casos, debe desactivarlo 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 fortalecimiento de Linux. Agregue las siguientes líneas a /etc/sysctl.conf para deshabilitar la conectividad IPv6 desde el nivel del kernel.

# 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 en Word

Los archivos que se pueden escribir en Word son archivos en los que cualquiera puede escribir. Esto puede ser muy peligroso ya que permite a los usuarios ejecutar archivos ejecutables. Además, su refuerzo de Linux no es infalible a menos que haya configurado los bits adhesivos apropiados. Un sticky bit es un único bit 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 bits fijos configurados, 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 usando el siguiente comando.

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

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

32. Mantener archivos sin propietario

Los archivos sin propietario son archivos que no tienen ningún propietario o grupo asociado a 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 sin propietario presentes en un directorio. Consulte esta guía para obtener más información sobre el comando de búsqueda en Linux.

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

Inspeccione los resultados minuciosamente para asegurarse de que no haya ningún archivo sin propietario no deseado en su servidor.

33. Verificar registros del servidor

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

# 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 del hardware y del 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. Usa 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 de espacio en disco. El paquete logrotate es extremadamente útil en este caso, ya que puede rotar, comprimir y enviar por correo los registros del sistema. Aunque puede cuestionar su papel en lo que respecta al fortalecimiento de Linux, ofrece beneficios incuestionables.

Puede encontrar archivos de configuración específicos del 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 la cantidad de días para guardar los registros, si comprimirlos o no, etc.

35. Instalar Logwatch / Logcheck

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

Logwatch es un analizador de registros extremadamente poderoso que puede facilitar mucho la administración de registros. Es adecuado para 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 se producen registros sospechosos. Puede instalarlo por –

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

36. Instalar soluciones IDS

Uno de los mejores métodos de refuerzo de Linux para servidores es usar un IDS (Software de detección de intrusos). Nuestros editores recomiendan encarecidamente el Entorno de detección de intrusos avanzado (AIDE) para este propósito. Es un IDS basado en host que ofrece muchas características sólidas, incluidos varios algoritmos de resumen de mensajes, atributos de archivo, compatibilidad con expresiones regulares, compatibilidad con compresión, etc.

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

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

37. Deshabilitar dispositivos Firewire/Thunderbolt

Siempre es una buena idea deshabilitar tantos periféricos como sea posible. Esto hace que su servidor sea seguro contra atacantes que hayan obtenido acceso directo a la infraestructura. Anteriormente, mostramos 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. Desactívelo usando el siguiente comando.

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

De manera similar, la interfaz Thunderbolt proporciona conexiones entre su sistema y periféricos de alta velocidad, como almacenamiento en disco duro, arreglos RAID, interfaces de red, etc. Puede desactivarlo usando 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 los ataques de fuerza bruta. Dado que una cantidad considerable de usuarios malintencionados y bots intentan acceder 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. Reforzar el servidor OpenSSH

OpenSSH es un paquete de software que consta de utilidades de red que brindan comunicación segura a través de redes públicas. The OpenSSH server has become the de-facto application for facilitating ssh connections. However, the bad guys also know this and they frequently target OpenSSH implementations. So, hardening this application should be a top concern for all Linux sysadmin.

For example- always use keys over password when initiating a new session, disable superuser login, disable empty passwords, limit user access, set up firewalls on port 22, set idle timeouts, use TCP wrappers, limit incoming requests, disable host-based authentication, and so on. You may also employ advanced Linux hardening methods like chrooting OpenSSH.

40. Utilize Kerberos

Kerberos is a computer network authentication protocol that allows access to computerized infrastructures based on tickets. It uses very hard to break cryptographic logic which makes systems supported by Kerberos very secure. Admins can protect their system from eavesdropping attacks and similar passive networking attacks very easily if they use the Kerberos protocol.

Kerberos is being developed by MIT and provides several stable releases. You can download the application from their website. Consult the documentation to see how it works and how you can set it up for your usage.

41. Harden Host Network

Admins should employ strong network policies in order to protect their secure servers against malicious hackers. We have already outlined the necessity of using intrusion detection systems and intrusion prevention systems. However, you can harden your host network further by doing the following tasks.

# 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

We’ve added comments using the hash symbol to outline the purpose of these network parameters.

42. Utilize AppArmor

AppArmor is a Mandatory Access Control (MAC) mechanism that makes it possible to restrict the usage of system resources based on programs. It allows admins to mandate policies on a program-level rather than users. You can simply create profiles that control the access to network, sockets, file permissions, and so on for your host applications.

Recent Debian/Ubuntu systems come with AppArmor pre-installed. The pre-existing AppArmor profiles are stored in the /etc/apparmor.d directory. You can modify these policies or even add your own policies during the Linux hardening process. Use the below command to view the AppArmor status in your system.

# apparmor_status

43. Secure Web Server

Linux servers are widely used for powering web applications. If you’re using your server for this purpose, you need to harden your server components appropriately. Some of these the PHP runtime, Apache HTTP server, and the Nginx reverse proxy server. Secure your Apache server by adding the below lines in the configuration file.

# 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

We’ve prepared a standalone guide on the Nginx server a while ago. Follow the suggestions in that guide to secure your Nginx server. Head over to this documentation for learning the best PHP security practices.

44. Configure TCP Wrappers

TCP wrappers are a host-based network filtering system that allows or denies access to your host services based on pre-set policies. However, for it to work, your host service must be compiled against the libwrap.a biblioteca. Some common TCP wrapperd Unix daemons include sshd, vsftpd, and xinetd.

# ldd /sbin/sshd | grep libwrap

This command will notify if a service is supported by TCP wrappers or not. The TCP wrappers system enforces access control using two configuration files, the /etc/hosts.allow and /etc/hosts.deny. For example, add the following lines to /etc/hosts.allow for allowing all incoming requests to the ssh daemon.

# vi /etc/hosts.allow
sshd : ALL

Add the following to /etc/hosts.deny for rejecting all incoming requests to the FTP daemon.

# vi /etc/hosts.deny
vsftpd : ALL

To see more information about the configuration options, consult the tcpd man page, or visit this documentation from FreeBSD.

45. Maintain Cron Access

Linux provides robust automation support by means of cron jobs. In short, you can specify routine tasks using the cron scheduler. Visit our earlier guide on cron and crontab to learn how cron works. Nevertheless, admins must make sure that ordinary users are unable to access or put entries in the crontab. Simply put their usernames in the /etc/cron.deny file to do this.

# echo ALL >>/etc/cron.deny

This command will disable cron for all users in your server except root. To allow access for a specific user, add his username to the /etc/cron.allow file.

46. Disable Ctrl+Alt+Delete

The Ctrl+Alt+Delete key combinations allow users to force reboot many Linux distributions. This can be particularly problematic if you’re managing a secure server. Admins should disable this hotkey in order to maintain proper Linux hardening. You can run the following command to disable this in systemd-based systems.

# systemctl mask ctrl-alt-del.target

If you’re on legacy systems that use init V instead of systemd, edit the /etc/inittab file and comment out the following line by appending a hash before it.

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

47. Enable NIC Bonding

NIC or Network Interface Card bonding is a form of link aggregation in Linux. Multiple network interfaces are joined in this method for gaining better resource availability and throughput. If you’re maintaining busy Linux servers, you can use this method for reducing the workload on a single interface and distribute them across multiple interfaces.

The whole process of NIC bonding differs between Debian and RHEL/Centos systems. We will cover them in a standalone guide soon. For now, simply remember that you can achieve better reliability by enabling network bonding.

48. Restrict Core Dumps

Core dumps are memory snapshots that contain crash information of executables. These are created when binaries stop working or crash in simple terms. They contain too much sensitive information about the host system and may threaten your Linux security if fallen into the wrong hands. Thus, it is always a good idea to restrict core dumps on production servers.

# 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

Run the above commands to restrict cor dumps on your server and increase Linux hardening.

49. Enable Exec Shield

The Exec Shield project was developed by Red Hat for protecting Linux systems against automated remote attacks. It performs particularly well against various buffer overflow-based exploits. You can enable exec shield for your Linux server by running the below commands.

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

This method will work on both Debian and RHEL systems.

50. Create Regular Backups

No matter how many Linux hardening methods you apply, you need to be always prepared for unforeseen problems. Backing up your workstation or server can prove extremely beneficial in the long run. Thankfully, a large number of backup utility for Linux exists to make system backups easier.

Moreover, you must automate the backup process and store your system data safely. Employing disaster management and recovery solutions can be also useful when it comes to data management.

Pensamientos finales

Although Linux is much more secure when compared to home operating systems, admins still need to maintain a set of Linux hardening policies. We have compiled this guide with many of the best practices used by Linux security experts. You should try to employ as many of them as possible. However, do not apply these without understanding their effect on your system. You need to have a foolproof plan as well as a good understanding of server security to keep your system safe from malicious users. Hopefully, we provided you the essential tips you were looking for.


Linux
  1. 8 consejos para la línea de comandos de Linux

  2. Las 10 mejores aplicaciones de mensajería instantánea para Linux

  3. Hyper:la mejor aplicación de terminal para Linux

  4. ¿Cuál es el mejor VPS:Windows o Linux?

  5. Mejores prácticas de seguridad de Wordpress en Linux

Las 20 mejores herramientas de seguridad de Linux:la elección de los expertos de Linux

Las 15 mejores herramientas de recuperación de datos de Linux:la elección de los profesionales

Los 15 mejores programas econométricos y estadísticos para el sistema Linux

Los 20 mejores software de minería de datos para escritorio Linux

Cómo proteger correctamente sysctl en Linux:Consejos para reforzar la seguridad

Los 8 mejores teléfonos Linux seguros para privacidad y seguridad