Blog

Blog sobre desarrollo web, diseño y tecnología. Consejos y trucos.

01

Ago 2014

Seguridad: 10 consejos para la protección de un servidor Linux

Publicado por / en Blog, Consejos y Trucos / Link

A la luz de todos los ataques complejos y especializados en servidores expuestos a Internet, es muy importante proteger tus activos de la nube de atacantes maliciosos cuyo único propósito es que se filtren, alteren, expongan o desaparezcan datos sensibles.

Como alguien que hace un montón de instalaciones de GNU/Linux, me gustaría dejar constancia de algunas de las políticas de seguridad que tengo siempre presente en los servidores que administro.

Nota: En las siguientes instrucciones asumo que usas un distribución basada en RHEL (Red Hat, CentOS o Fedora).

1. Cambia la contraseña de acceso Root

Accede a tu servidor y cambia la contraseña root si es que no estabas usando acceso exclusivo por llave SSH.

  • passwd – Asegúrate de que es fuerte
  • Como veremos más adelante, intentaremos no usar

2. Crear un nuevo usuario

El usuario root es el único usuario creado en cada instalación Linux. Debes añadir un nuevo usuario para tu propio acceso y uso del servidor.

  • # useradd <nombreusuario>
  • # passwd <nombreusuario>  (Asegúrate de que esta contraseña es segura y que es diferente de tu contraseña root)

3. Cambia la política de renovación de la contraseña

Al cambiar la duración máxima de la contraseña estarás obligado a cambiarla tras un periodo de tiempo.

  • # chage -M 60 -m 7 -w 7 <nombreusuario>
    • M: Mínimo de días requeridos entre cambios de contraseña
    • m: Periodo máximo de validez de contraseña (en días)
    • w: El número de días antes de que el sistema empiece a avisar de su expiración

4. Deshabilita el acceso Root

  • Cuando necesites permisos de super-usuario, usa sudo en lugar de su. Sudo es más seguro que su: Cuando un usuario usa sudo para ejecutar comandos de nivel root todos los comandos son registrados por defecto en /var/log/secure.
    Esta medida evitará que en caso de una agresión con resultado favorable para el atacante, puedan acceder al servidor con permisos absolutos (es decir, como súper
    usuario).
  • Agrega el usuario creado anteriormente al grupo de administradores:
    # usermod -a -G sudo nombreusuario
  • Accede al archivo de configuración del demonio SSH (en el servidor):vi /etc/ssh/sshd_configCambia la línea #PermitRootLogin yes por:
    PermitRootLogin no
  • Ejecuta # service sshd restart

5. Usa Secure Shell (SSH).

Los protocolos rlogin y telnet no usan un formato encriptado, simplemente texto plano. Recomiendo el uso del protocolo SSH para log remoto y transferencia de archivos. SSH te permite usar tecnología de encriptado mientras te comunicas con tu servidor. De todas formas SSH está expuesto a muchos tipos de diferentes ataques, por lo que te recomiendo que también cambies las siguientes políticas:

  • Cambia el puerto por defecto de SSH (22) por otro disponible (no uses 2222, está muy visto, tienes más de 60000 para elegir.)
  • Limita la cantidad de intentos de logueo fallidos
  • Limita la cantidad de conexiones simultáneas
  • Limita la cantidad máxima de tiempo durante la cual se mostrará la pantalla de logueo
  • Siempre que sea posible, utiliza llaves RSA en lugar de contraseñas para una protección adicional

6. Mantén tu kernel y tu software actualizado.

Asegurate de que tu parches de kernel y de software estén actualizados. Se están continuamente lanzando parches con correcciones de brechas de seguridad. Ejecuta las actualizaciones con sudo para obtener las actualizaciones. En RedHat o CentOS: # yum update

7. Limpia el sistema

Limpia tu sistema de paquetes innecesarios. A esto se le llama Reducir la superficie de ataque. Paquetes como NFS, Samba, servidor de ventanas X (Gnome o KDE), contienen vulnerabilidades. ¿Cómo reducir la superficie de ataque?

  • Lista lo que está instalado: # yum list installed
  • Lista el nombre del paquete:  # yum list <nombre-paquete>
  • Elimina el paquete: # yum remove <nombre-paquete>

8. Utiliza extensiones de seguridad

Utiliza una extensión de seguridad como SELinux en RHEL o CentOS cuando puedas. SELinux facilita un control de acceso flexible Mandatory access control (MAC); la ejecución de un MAC protege el sistema de aplicaciones maliciosas o defectuosas que pueden dañar o destruir el sistema. Tendrás que navegar por la documentación oficial de Red Hat, que explica la configuración de SELinux. Para comprobar si SELinux está funcionando ejecuta sestatus.

9. Añade un mensaje de Bienvenida/Aviso

Añade un mensaje de bienvenida o aviso cuando un usuario accedea de forma remota al sistema. El mensaje puede crearse usando MOTD (message of the day). El único propósito de MOTD es mostrar mensajes en la consola o sesión SSH. Particularmente me gusta que en mis mensajes se pueda leer para leer “Bienvenido a <hostname>. Todas las conexiones están siendo monitorizadas y grabadas “, así como los datos de contacto del administrador del sistema.

10. Monitoriza tus logs.

Comprueba tus logs siempre que puedas. Algunos ejemplos:

  • Sistema de arranque: /var/log/boot.log 
  • Autentificación:  /var/log/secure
  • Archivo de registros:  /var/log/utmp or /var/log/wtmp
  • Todos los logs del sistema:  /var/log/message
  • Autentificación:  /var/log/auth.log
  • Kernel:  /var/log/kern.log
  • Crond (cron job): /var/log/cron.log
  • Servidor de correo:  /var/log/maillog

Por favor, selecciona una red social para compartir:

Tu también nos gustas :)
POST SIMILARES
comments powered by Disqus