Búsqueda de sitios web

25 consejos para reforzar la seguridad de los servidores Linux


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

Proteger un sistema en producción de las manos de hackers y crackers es una tarea desafiante para un administrador de sistemas. Este es nuestro primer artículo relacionado con “Cómo proteger una caja Linux” o “Reforzar 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 le ayuden en cierta medida a proteger su sistema.

1. Seguridad del sistema físico

Configure el BIOS para deshabilitar el arranque desde CD/DVD, Dispositivos externos, Disquetera en el 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. Establecer contraseña de GRUB para proteger 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 sobrevivieron. Asegúrese de tener las siguientes particiones separadas y de que las aplicaciones de terceros se instalen en sistemas de archivos separados en /opt.

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

3. Minimizar los paquetes para minimizar la vulnerabilidad

¿Realmente quieres instalar todo tipo de servicios? Se recomienda evitar instalar 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 deshabilite servicios no deseados del servidor para minimizar la vulnerabilidad. Utilice el comando 'chkconfig' para descubrir los servicios que se están ejecutando en el nivel de ejecución 3.

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

Una vez que haya descubierto que se está ejecutando algún servicio no deseado, desactívelo usando 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 usando el siguiente comando.

yum -y remove package-name
sudo apt-get remove package-name
  1. 5 ejemplos del comando chkconfig
  2. 20 ejemplos prácticos de comandos RPM
  3. 20 comandos YUM de Linux para la gestión de paquetes de Linux
  4. 25 comandos APT-GET y APT-CACHE para gestionar la gestión de paquetes

4. Verifique los puertos de la 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 desactivar todos los servicios de red no deseados del sistema.

netstat -tulpn
  1. 20 comandos Netstat para la gestión de redes en Linux

5. Utilice Secure Shell (SSH)

Los protocolos Telnet y rlogin utilizan texto sin formato, no formato cifrado, lo cual constituye una brecha 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. Los 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 principal SSH y establezca algunos de los siguientes parámetros para restringir el acceso de los usuarios.

vi /etc/ssh/sshd_config
Deshabilitar el inicio de sesión root
PermitRootLogin no
Permitir solo usuarios específicos
AllowUsers username
Utilice la versión 2 del protocolo SSH
Protocol 2
  1. 5 mejores prácticas para asegurar y proteger el servidor SSH

6. Mantenga el sistema actualizado

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

yum updates
yum check-update

7. Cronjobs de bloqueo

Cron tiene su propia función integrada, que permite especificar quién puede y quién no 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 nombres de usuario en cron.deny y para permitir que un usuario ejecute cron, agregue en el archivo cron.allow. Si desea impedir que todos los usuarios utilicen cron, agregue la línea 'ALL' al archivo cron.deny.

echo ALL >>/etc/cron.deny
  1. 11 ejemplos de programación cron en Linux

8. Desactive 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 proteger 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

Linux con seguridad mejorada (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 es accesible al público, piénselo un poco más.

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

  1. Aplicar: este es el modo predeterminado que habilita y aplica la política de seguridad 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 para solucionar problemas relacionados con SELinux.
  3. Desactivado: SELinux está desactivado.

Puede ver el estado actual del modo SELinux desde la línea de comando usando 'system-config-selinux', 'getenforce' o ' comandos de 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 desactivarlos para aumentar la seguridad del servidor y el rendimiento. Para desactivarlo, abra el archivo '/etc/inittab' y establezca el nivel de ejecución en 3. Si desea eliminarlo completamente del sistema, utilice el siguiente comando.

yum groupremove "X Window System"

11. Apague IPv6

Si no está utilizando un protocolo IPv6, debe desactivarlo 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 desactivarlo.

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 impedir que los usuarios utilicen las mismas contraseñas antiguas. El archivo de contraseña antiguo 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 reutilice las últimas 5 contraseñas suyas.

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

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

Password has been already used. Choose another.

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

En Linux, las contraseñas de los usuarios se almacenan en el archivo '/etc/shadow' en formato cifrado. Para comprobar la caducidad de la contraseña del usuario, debe utilizar el comando 'chage'. Muestra información sobre los detalles de vencimiento 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 de vencimiento y la hora, utilice el siguiente comando.

#chage -l username

Para cambiar la caducidad de la contraseña de cualquier usuario, utilice el siguiente comando.

#chage -M 60 username
#chage -M 60 -m 7 -W 7 userName
Parámetros
  1. -M Establecer número máximo de días
  2. -m Establecer número mínimo de días
  3. -W Establecer el número de días de advertencia

14. Bloquear y desbloquear cuenta manualmente

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

passwd -l accountName

Nota: el usuario bloqueado todavía está disponible solo para el usuario root. El bloqueo se realiza reemplazando la contraseña cifrada con una cadena (!). Si alguien intenta acceder al sistema usando esta cuenta, recibirá 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 contraseña cifrada.

passwd -u accountName

15. Hacer cumplir contraseñas más seguras

Varios usuarios utilizan contraseñas débiles o débiles y su contraseña puede ser pirateada con ataques basados en diccionario o 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.

Lea también:

vi /etc/pam.d/system-auth

Y agregue una línea usando parámetros de crédito como (lcredit, ucredit, dcredit y/o 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. Aplicar reglas en iptables para filtrar paquetes entrantes, salientes y reenvíos. Podemos especificar la dirección de origen y destino para permitir y denegar en un número de puerto udp/tcp específico.

  1. Guía básica y consejos de IPTables

17. Deshabilite Ctrl+Alt+Supr en Inittab

En la mayoría de las distribuciones de Linux, al presionar 'CTRL-ALT-DELETE' el sistema reiniciará el proceso. Por lo tanto, no es una buena idea tener esta opción habilitada al menos en 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. Verificar cuentas en busca de contraseñas vacías

Cualquier cuenta que tenga una contraseña vacía significa que está abierta al 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 con contraseña vacía son riesgos para la seguridad y pueden ser fácilmente pirateadas. 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 el banner SSH antes de iniciar sesión

Siempre es una mejor idea tener un banner legal o banners 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 consumidos por cada usuario y analizarlos más adelante o en caso de que haya algún tipo de problema de rendimiento o seguridad. Pero, ¿cómo podemos monitorear y recopilar información sobre las actividades de los usuarios?

Hay dos herramientas útiles llamadas 'psacct' y 'acct' que se utilizan para monitorear las actividades y procesos de los usuarios en un sistema. Estas herramientas se ejecutan en segundo plano del sistema y rastrean 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. Revisar los registros con regularidad

Mueva los registros a un servidor de registros dedicado; esto puede evitar que los intrusos modifiquen fácilmente los registros locales. A continuación se muestran los nombres de los archivos de registro predeterminados comunes de Linux y su uso:

  1. /var/log/message: donde están disponibles los registros completos del 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: registros crond (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 importantes

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

23. Vinculación de NIC

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

  1. modo=0 – Round Robin
  2. mode=1 – Activo y Respaldo

NIC Bonding nos ayuda a evitar puntos únicos de falla. En la vinculación de NIC, unimos dos o más Tarjetas de red Ethernet y creamos una única interfaz virtual donde podemos asignar una dirección IP para hablar con otras servidores. Nuestra red estará disponible en caso de que una Tarjeta NIC esté inactiva o no esté disponible por cualquier motivo.

Leer también: Crear enlace de canal NIC en Linux

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 lectura-escritura. Cambiarlo a solo lectura reduce el riesgo de modificación no autorizada 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 transmisión

Agregue la siguiente línea en el archivo “/etc/sysctl.conf” para ignorar la solicitud de ping o difusió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 debates para mejorar.