25 consejos de seguridad para reforzar los servidores Linux


Todo el mundo dice que Linux es seguro por defecto y está de acuerdo en cierta medida (son temas debatibles). Sin embargo, Linux tiene un modelo de seguridad incorporado de forma predeterminada. Necesita ajustarlo y personalizarlo según sus necesidades, lo que puede ayudar a hacer un sistema más seguro. Linux es más difícil de administrar, pero ofrece más flexibilidad y opciones de configuración.

Asegurar un sistema en una producción de manos de piratas informáticos y piratas informáticos es una tarea desafiante para un administrador de sistemas. Este es nuestro primer artículo relacionado con "Cómo proteger una caja Linux" o "Fortalecimiento de una caja Linux". En esta publicación, explicaremos 25 consejos y trucos útiles para proteger su sistema Linux. Espero que los siguientes consejos y trucos te ayuden a extender la seguridad de tu sistema.

1. Seguridad del sistema físico

Configure el BIOS para deshabilitar el arranque desde CD/DVD, dispositivos externos, disquetera en BIOS. A continuación, habilite la contraseña del BIOS y también proteja GRUB con contraseña para restringir el acceso físico a su sistema.

  1. Establezca la contraseña de GRUB para proteger los servidores Linux

2. Particiones de disco

Es importante tener diferentes particiones para obtener una mayor seguridad de los datos en caso de que ocurra algún desastre. Al crear diferentes particiones, los datos se pueden separar y agrupar. Cuando ocurre un accidente inesperado, solo se dañarán los datos de esa partición, mientras que los datos de otras particiones sobrevivirán. Asegúrese de tener las siguientes particiones separadas y asegúrese de que las aplicaciones de terceros deben instalarse en sistemas de archivos separados en/opt.

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

3. Minimizar los paquetes para minimizar la vulnerabilidad

¿De verdad quieres instalar todo tipo de servicios ?. Se recomienda evitar la instalación de paquetes inútiles para evitar vulnerabilidades en los paquetes. Esto puede minimizar el riesgo de que el compromiso de un servicio pueda llevar al compromiso de otros servicios. Busque y elimine o desactive los servicios no deseados del servidor para minimizar la vulnerabilidad. Utilice el comando "chkconfig" para averiguar los servicios que se ejecutan en el nivel de ejecución 3.

# /sbin/chkconfig --list |grep '3:on'

Una vez que descubra que se está ejecutando algún servicio no deseado, desactívelo con el siguiente comando.

# chkconfig serviceName off

Utilice el administrador de paquetes RPM como las herramientas "yum" o "apt-get" para enumerar todos los paquetes instalados en un sistema y eliminarlos con el siguiente comando.

# yum -y remove package-name
# sudo apt-get remove package-name

  1. 5 ejemplos de comandos chkconfig
  2. 20 ejemplos prácticos de comandos RPM
  3. 20 comandos YUM de Linux para la administración de paquetes de Linux
  4. 25 comandos APT-GET y APT-CACHE para administrar la administración de paquetes

4. Verifique los puertos de red de escucha

Con la ayuda del comando de red "netstat", puede ver todos los puertos abiertos y los programas asociados. Como dije anteriormente, use el comando "chkconfig" para deshabilitar todos los servicios de red no deseados del sistema.

# netstat -tulpn

  1. 20 comandos de Netstat para la administración de redes en Linux

5. Utilice Secure Shell (SSH)

Los protocolos Telnet y rlogin utilizan texto sin formato, no formato cifrado, que son las brechas de seguridad. SSH es un protocolo seguro que utiliza tecnología de cifrado durante la comunicación con el servidor.

Nunca inicie sesión directamente como root a menos que sea necesario. Utilice "sudo" para ejecutar comandos. sudo se especifican en el archivo/etc/sudoers y también se pueden editar con la utilidad "visudo" que se abre en el editor VI.

También se recomienda cambiar el número de puerto SSH 22 predeterminado por algún otro número de puerto de nivel superior. Abra el archivo de configuración SSH principal y establezca algunos de los siguientes parámetros para restringir el acceso de los usuarios.

# vi /etc/ssh/sshd_config
PermitRootLogin no
AllowUsers username
Protocol 2

  1. 5 mejores prácticas para asegurar y proteger el servidor SSH

6. Mantener el sistema actualizado

Mantenga siempre el sistema actualizado con las últimas versiones, parches, correcciones de seguridad y kernel cuando esté disponible.

# yum updates
# yum check-update

7. Lockdown Cronjobs

Cron tiene su propia función incorporada, donde permite especificar quién puede y quién puede no querer ejecutar trabajos. Esto se controla mediante el uso de archivos llamados /etc/cron.allow y /etc/cron.deny. Para bloquear a un usuario usando cron, simplemente agregue los nombres de usuario en cron.deny y para permitir que un usuario ejecute cron add en el archivo cron.allow. Si desea deshabilitar a todos los usuarios para que no usen cron, agregue la línea "TODOS" al archivo cron.deny.

# echo ALL >>/etc/cron.deny

  1. 11 ejemplos de programación cron en Linux

8. Deshabilite la memoria USB para detectar

Muchas veces sucede que queremos restringir a los usuarios el uso de memorias USB en los sistemas para proteger y asegurar los datos contra el robo. Cree un archivo "/etc/modprobe.d/no-usb" y agregar la siguiente línea no detectará el almacenamiento USB.

install usb-storage /bin/true

9. Encienda SELinux

Security-Enhanced Linux (SELinux) es un mecanismo de seguridad de control de acceso obligatorio proporcionado en el kernel. Deshabilitar SELinux significa eliminar el mecanismo de seguridad del sistema. Piénselo dos veces antes de eliminarlo, si su sistema está conectado a Internet y el público tiene acceso a él, piense un poco más al respecto.

SELinux proporciona tres modos básicos de operación y lo son.

  1. Aplicación: este es el modo predeterminado que habilita y aplica la política de seguridad de SELinux en la máquina.
  2. Permisivo: En este modo, SELinux no aplicará la política de seguridad en el sistema, solo advertirá y registrará acciones. Este modo es muy útil en términos de resolución de problemas relacionados con SELinux.
  3. Deshabilitado: SELinux está apagado.

Puede ver el estado actual del modo SELinux desde la línea de comandos usando los comandos "system-config-selinux", "getenforce" o "sestatus".

# sestatus

Si está deshabilitado, habilite SELinux usando el siguiente comando.

# setenforce enforcing

También se puede administrar desde el archivo "/ etc/selinux/config", donde puede habilitarlo o deshabilitarlo.

10. Eliminar escritorios KDE/GNOME

No es necesario ejecutar escritorios X Window como KDE o GNOME en su servidor LAMP dedicado. Puede eliminarlos o deshabilitarlos para aumentar la seguridad del servidor y el rendimiento. Para deshabilitarlo, abra el archivo "/ etc/inittab" y establezca el nivel de ejecución en 3. Si desea eliminarlo por completo del sistema, use el siguiente comando.

# yum groupremove "X Window System"

11. Apague IPv6

Si no está utilizando un protocolo IPv6, debería deshabilitarlo porque la mayoría de las aplicaciones o políticas no requieren el protocolo IPv6 y actualmente no lo requieren en el servidor. Vaya al archivo de configuración de red y agregue las siguientes líneas para deshabilitarlo.

# vi /etc/sysconfig/network
NETWORKING_IPV6=no
IPV6INIT=no

12. Restringir a los usuarios para que utilicen contraseñas antiguas

Esto es muy útil si desea no permitir que los usuarios usen las mismas contraseñas antiguas. El archivo de contraseña anterior se encuentra en/etc/security/opasswd. Esto se puede lograr utilizando el módulo PAM.

Abra el archivo "/etc/pam.d/system-auth" en RHEL/CentOS/Fedora.

# vi /etc/pam.d/system-auth

Abra el archivo "/etc/pam.d/common-password" en Ubuntu/Debian/Linux Mint.

# vi /etc/pam.d/common-password

Agregue la siguiente línea a la sección "auth".

auth        sufficient    pam_unix.so likeauth nullok

Agregue la siguiente línea a la sección "contraseña" para no permitir que un usuario vuelva a utilizar las últimas 5 contraseñas.

password   sufficient    pam_unix.so nullok use_authtok md5 shadow remember=5

El servidor solo recuerda las últimas 5 contraseñas. Si intentó utilizar alguna de las últimas 5 contraseñas antiguas, obtendrá un error como.

Password has been already used. Choose another.

13. Cómo comprobar la caducidad de la contraseña del usuario

En Linux, las contraseñas de los usuarios se almacenan en un archivo "/ etc/shadow" en formato cifrado. Para verificar la caducidad de la contraseña del usuario, debe usar el comando "chage". Muestra información sobre los detalles de caducidad de la contraseña junto con la fecha del último cambio de contraseña. El sistema utiliza estos detalles para decidir cuándo un usuario debe cambiar su contraseña.

Para ver la información de antigüedad de cualquier usuario existente, como la fecha y la hora de vencimiento, use el siguiente comando.

#chage -l username

Para cambiar la antigüedad de la contraseña de cualquier usuario, use el siguiente comando.

#chage -M 60 username
#chage -M 60 -m 7 -W 7 userName

  1. -M Establecer el número máximo de días
  2. -m Establecer el número mínimo de días
  3. -W Establecer el número de días de advertencia

14. Bloquear y desbloquear la cuenta manualmente

Las funciones de bloqueo y desbloqueo son muy útiles, en lugar de eliminar una cuenta del sistema, puede bloquearla durante una semana o un mes. Para bloquear a un usuario específico, puede usar el siguiente comando.

# passwd -l accountName

Nota: El usuario bloqueado todavía está disponible solo para usuarios root. El bloqueo se realiza reemplazando la contraseña cifrada con una cadena (!). Si alguien intenta acceder al sistema usando esta cuenta, obtendrá un error similar al siguiente.

# su - accountName
This account is currently not available.

Para desbloquear o habilitar el acceso a una cuenta bloqueada, use el comando como. Esto eliminará la cadena (!) Con la contraseña cifrada.

# passwd -u accountName

15. Hacer cumplir contraseñas más estrictas

Varios usuarios usan contraseñas suaves o débiles y su contraseña puede ser pirateada con un diccionario o ataques de fuerza bruta. El módulo "pam_cracklib" está disponible en la pila de módulos PAM (Módulos de autenticación conectables) que obligará al usuario a establecer contraseñas seguras. Abra el siguiente archivo con un editor.

Leer también:

# vi /etc/pam.d/system-auth

Y agregue una línea usando parámetros de crédito como (lcredit, ucredit, dcredit y/u ocredit respectivamente en minúsculas, mayúsculas, dígitos y otros)

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

16. Habilite Iptables (firewall)

Se recomienda encarecidamente habilitar el firewall de Linux para proteger el acceso no autorizado a sus servidores. Aplique reglas en iptables para filtrar paquetes entrantes, salientes y reenviados. Podemos especificar la dirección de origen y destino para permitir y denegar en un número de puerto udp/tcp específico.

  1. Consejos y guía básica de IPTables

17. Deshabilitar Ctrl + Alt + Supr en Inittab

En la mayoría de las distribuciones de Linux, presionar "CTRL-ALT-DELETE" hará que su sistema reinicie el proceso. Por lo tanto, no es una buena idea tener esta opción habilitada al menos en los servidores de producción, si alguien lo hace por error.

Esto se define en el archivo "/ etc/inittab", si miras de cerca en ese archivo, verás una línea similar a la siguiente. Por defecto, la línea no está comentada. Tenemos que comentarlo. Esta señalización de secuencia de teclas en particular apagará un sistema.

# Trap CTRL-ALT-DELETE
#ca::ctrlaltdel:/sbin/shutdown -t3 -r now

18. Comprobación de cuentas de cheques para contraseñas vacías

Cualquier cuenta que tenga una contraseña vacía significa que está abierta para acceso no autorizado a cualquier persona en la web y es parte de la seguridad dentro de un servidor Linux. Por lo tanto, debe asegurarse de que todas las cuentas tengan contraseñas seguras y que nadie tenga acceso autorizado. Las cuentas de contraseña vacías son riesgos de seguridad y se pueden piratear fácilmente. Para verificar si había cuentas con contraseña vacía, use el siguiente comando.

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

19. Mostrar banner SSH antes de iniciar sesión

Siempre es mejor tener una pancarta legal o pancartas de seguridad con algunas advertencias de seguridad antes de la autenticación SSH. Para configurar dichos banners, lea el siguiente artículo.

  1. Mostrar mensaje de advertencia de SSH a los usuarios

20. Supervisar las actividades del usuario

Si está tratando con muchos usuarios, entonces es importante recopilar la información de las actividades y procesos de cada usuario consumidos por ellos y analizarlos en un momento posterior o en caso de algún tipo de rendimiento, problemas de seguridad. Pero, ¿cómo podemos monitorear y recopilar información sobre las actividades del usuario?

Hay dos herramientas útiles llamadas "psacct" y "acct" que se utilizan para supervisar las actividades y los procesos de los usuarios en un sistema. Estas herramientas se ejecutan en un segundo plano del sistema y rastrea continuamente la actividad de cada usuario en un sistema y los recursos consumidos por servicios como Apache, MySQL, SSH, FTP, etc. Para obtener más información sobre la instalación, configuración y uso, visite la siguiente URL.

  1. Supervise la actividad del usuario con los comandos psacct o acct

21. Revise los registros con regularidad

Mueva los registros en el servidor de registros dedicado, esto puede evitar que los intrusos modifiquen fácilmente los registros locales. A continuación se muestran el nombre de los archivos de registro predeterminados de Common Linux y su uso:

  1. /var/log/message: donde están disponibles los registros de todo el sistema o los registros de actividad actual.
  2. /var/log/auth.log: registros de autenticación.
  3. /var/log/kern.log: registros del kernel.
  4. /var/log/cron.log - Crond logs (trabajo cron).
  5. /var/log/maillog: registros del servidor de correo.
  6. /var/log/boot.log: registro de inicio del sistema.
  7. /var/log/mysqld.log: archivo de registro del servidor de base de datos MySQL.
  8. /var/log/secure: registro de autenticación.
  9. /var/log/utmp o/var/log/wtmp: archivo de registros de inicio de sesión.
  10. /var/log/yum.log: archivos de registro de Yum.

22. Copia de seguridad de archivos importante

En un sistema de producción, es necesario realizar una copia de seguridad de los archivos importantes y mantenerlos en una bóveda de seguridad, un sitio remoto o fuera del sitio para la recuperación de desastres.

23. Vinculación NIC

Hay dos tipos de modos en la vinculación NIC, es necesario mencionarlos en la interfaz de vinculación.

  1. mode u003d 0 - Round Robin
  2. mode u003d 1 - Activo y de respaldo

NIC Bonding nos ayuda a evitar un solo punto de falla. En la vinculación de NIC, unimos dos o más tarjetas Ethernet de red y creamos una única interfaz virtual donde podemos asignar una dirección IP para hablar con otros servidores. Nuestra red estará disponible en caso de que una tarjeta NIC no funcione o no esté disponible por cualquier motivo.

24. Mantenga/boot como de solo lectura

El kernel de Linux y sus archivos relacionados se encuentran en el directorio/boot, que por defecto es de lectura y escritura. Cambiarlo a solo lectura reduce el riesgo de modificaciones no autorizadas de archivos de arranque críticos. Para hacer esto, abra el archivo “/ etc/fstab”.

# vi /etc/fstab

Agregue la siguiente línea en la parte inferior, guárdela y ciérrela.

LABEL=/boot     /boot     ext2     defaults,ro     1 2

Tenga en cuenta que debe restablecer el cambio a lectura-escritura si necesita actualizar el kernel en el futuro.

25. Ignorar ICMP o solicitud de difusión

Agregue la siguiente línea en el archivo “/etc/sysctl.conf” para ignorar la solicitud de ping o transmisión.

Ignore ICMP request:
net.ipv4.icmp_echo_ignore_all = 1

Ignore Broadcast request:
net.ipv4.icmp_echo_ignore_broadcasts = 1

Cargue nuevas configuraciones o cambios, ejecutando el siguiente comando

#sysctl -p

Si se ha perdido algún consejo importante de seguridad o refuerzo en la lista anterior, o si tiene algún otro consejo que deba incluirse en la lista. Por favor, deje sus comentarios en nuestro cuadro de comentarios. TecMint siempre está interesado en recibir comentarios, sugerencias y discusiones para mejorar.