5 Consejos Sencillos para Asegurar tu Servidor Linux

Consejos para Asegurar Ubuntu Server 00 Imagen Destacada

Los servidores Linux son la columna vertebral de Internet moderno. Hoy en día, casi todos los sitios web y servicios a los que puedes acceder a través de un navegador web funcionan en una distribución de Linux. Aquí te mostramos cómo puedes asegurar tu servidor Linux.

Tabla de Contenidos

    1. Eliminar el Acceso SSH de Root
    1. Usar un Par de Claves Públicas para el Acceso SSH
    1. Fortalecer el Firewall de tu Servidor Linux
    1. Crear un Nuevo Usuario para Cada Servicio
    1. Endurecer el Núcleo de tu Servidor
  • Preguntas Frecuentes

Nota: este tutorial se creó utilizando un servidor Ubuntu, pero también debería aplicarse a otras distribuciones de Linux, incluido tu servidor web local.

1. Eliminar el Acceso SSH de Root

Una de las formas más rápidas de asegurar tu servidor Ubuntu es proteger tu demonio SSH desactivando el acceso SSH de root. Por defecto, el servidor OpenSSH permite que cualquier conexión entrante inicie sesión como el usuario root.

Por ejemplo, ejecutar el siguiente comando en un servidor inseguro proporcionará un aviso de inicio de sesión:

ssh root@dirección.ip.del.servidor.inseguro

Consejos para Asegurar Ubuntu Server 04 Inicio de Sesión Inseguro como Root

Esto puede ser un problema, ya que deja tu servidor abierto y vulnerable a un ataque de fuerza bruta de contraseña. Para solucionar esto, inicia sesión en tu servidor Linux y actualiza el archivo de configuración de tu demonio SSH.

Una vez dentro de tu servidor Linux, edita el archivo de configuración de SSH:

sudonano/etc/ssh/sshd_config

Consejos para Asegurar Ubuntu Server 07 Configuración por Defecto Sshd

Busca la variable PermitRootLogin en GNU Nano presionando Ctrl + W y escribiendo PermitRootLogin.

Consejos para Asegurar Ubuntu Server 08 Variable Permitrootlogin

Cambia el valor de PermitRootLogin de “yes” a “no”, luego guarda el archivo presionando Ctrl + o y luego Ctrl + x.

Para aplicar la nueva configuración, recarga el demonio SSH del servidor a través de systemctl:

sudo systemctl restart ssh

Consejos para Asegurar Ubuntu Server 09 Recargar Servidor Ssh

2. Usar un Par de Claves Públicas para el Acceso SSH

Otra forma rápida de asegurar tu servidor Linux es crear un par de claves públicas entre tu máquina local y la cuenta de usuario SSH. Este enfoque omite el proceso de inicio de sesión con contraseña y te autentica automáticamente en tu servidor remoto.

Para crear un par de claves públicas, primero necesitas ejecutar el siguiente comando en tu máquina local:

ssh-keygen

El programa keygen te pedirá varios detalles sobre la clave que deseas crear. Puedes dejar estas opciones en su valor predeterminado presionando Enter tres veces.

Consejos para Asegurar Ubuntu Server 10 Generar Clave Ssh

Exporta tu nueva clave pública a tu servidor remoto utilizando el programa ssh-copy-id. Esta es una utilidad simple que prepara tanto la máquina local como la remota para la autenticación con clave pública a través de SSH.

ssh-copy-id [email protected]ón

Consejos para Asegurar Ubuntu Server 11 Ssh Copiar Id Servidor

Inicia sesión en tu máquina remota ejecutando el siguiente comando:

También es posible asegurar más tu servidor Linux eliminando el aviso de inicio de sesión en SSH. Abre el archivo de configuración de tu demonio con el siguiente comando:

sudonano/etc/ssh/sshd_config

Encuentra la variable PasswordAuthentication y cambia su valor de “yes” a “no.”

Consejos para Asegurar Ubuntu Server 13 Deshabilitar Autenticación por Contraseña

Recarga tu demonio SSH ejecutando el siguiente comando:

sudo systemctl restart sshd

3. Fortalecer el Firewall de tu Servidor Linux

Además de restringir el acceso SSH, también puedes mejorar la seguridad de tu servidor Linux configurando tu firewall. Por defecto, una nueva máquina Linux aceptará todas las conexiones entrantes desde cualquier puerto.

Esto puede ser un problema, ya que deja tu servidor vulnerable a un ataque de escaneo de puertos. Por ejemplo, un malhechor puede escanear tu máquina en busca de puertos inseguros y usar eso para encontrar un exploit adecuado.

Consejos para Asegurar Ubuntu Server 14 Ejemplo de Escaneo de Puertos

Una forma de solucionar esto es instalando ufw, un cliente de firewall simple que puede controlar los puertos y direcciones que están disponibles para el mundo exterior.

Ejecuta el siguiente comando para instalar ufw en Ubuntu:

sudo apt install ufw

Consejos para Asegurar Ubuntu Server 15 Instalando Ufw

Establece las reglas predeterminadas para ufw. Estas son las políticas que tu firewall seguirá para cualquier puerto que no personalices. Es una buena práctica asegurarte de que estás bloqueando todas las conexiones entrantes:

sudo ufw default deny incoming  
sudo ufw default allow outgoing

Consejos para Asegurar Ubuntu Server 16 Cambiar Reglas Predeterminadas

Configura tu firewall para los servicios que deseas ejecutar en tu máquina. Por ejemplo, ejecutar los siguientes comandos te permitirá iniciar sesión a través de SSH y alojar un servidor web:

sudo ufw allow 22  
sudo ufw allow 80  
sudo ufw allow 443

Por último, necesitas habilitar tu nueva configuración de firewall ejecutando sudo ufw enable. Además, puedes verificar si tu firewall está en línea ejecutando este comando:

sudo ufw status

Consejos para Asegurar Ubuntu Server 17 Estado Activo de Ufw

4. Crear un Nuevo Usuario para Cada Servicio

Por defecto, cada archivo y programa en un sistema Linux pertenece a un usuario y grupo particular. Para modificar el sistema, necesitas tener los permisos correctos para las carpetas adecuadas.

Una forma de aumentar la seguridad de tu servidor Linux es crear una nueva cuenta de usuario para cada nuevo servicio. Este enfoque te permite contener los privilegios de cada servicio en su propia cuenta de usuario.

Consejos para Asegurar Ubuntu Server 18 Carpeta con Múltiples Propietarios

Para hacer esto, ejecuta los siguientes comandos:

sudo useradd -s/bin/bash -d/home/nuevo-servicio -m -Gsudo nuevo-servicio  
sudo passwd nuevo-servicio
  • La bandera -s establece el shell del sistema para la nueva cuenta de usuario. En mi caso, mi nueva cuenta utiliza Bash como shell.
  • Tanto las banderas -d como -m establecen el directorio predeterminado del usuario para la nueva cuenta.
  • La bandera -G, por otro lado, agrega la nueva cuenta a cualquier grupo secundario que especifiques. Por ejemplo, agregar la nueva cuenta al grupo sudo le permitirá ejecutar comandos de superusuario.
  • El comando passwd te permite establecer una nueva contraseña para la nueva cuenta de usuario.

Una vez hecho esto, puedes usar tu nueva cuenta de usuario ya sea cerrando sesión en tu cuenta actual o ejecutando su nuevo-servicio.

Consejos para Asegurar Ubuntu Server 19 Nuevo Usuario Ejecutando

5. Endurecer el Núcleo de tu Servidor

El núcleo es una de las partes más importantes de un sistema Linux y es el enlace que conecta el hardware de tu máquina con tu software. Por ejemplo, compilar tu propio núcleo de Linux te permite habilitar soporte para hardware y características exóticas.

Consejos para Asegurar Ubuntu Server 20 Hacer Menuconfig

Aparte de eso, el núcleo también sirve como el proceso raíz del sistema operativo. Asegurar el núcleo es una de las partes más vitales para asegurar tu servidor Linux.

Una de las formas más rápidas de asegurar tu núcleo es a través de sysctl. Esta es una utilidad incorporada que te permite ajustar las opciones de tiempo de ejecución del núcleo de Linux.

Consejos para Asegurar Ubuntu Server 21 Página del Manual de Sysctl

Sin embargo, es importante tener en cuenta que sysctl no cubrirá todo el proceso de endurecimiento del núcleo, ya que asegurar el núcleo dependerá en gran medida de lo que necesites de él.

Sabiendo esto, puedes ejecutar los siguientes comandos para evitar que tu núcleo informe cualquier información de diagnóstico:

sudo sysctl kernel.kptr_restrict=2  
sudo sysctl kernel.dmesg_restrict=1  
sudo sysctl kernel.kexec_load_disabled=1

Consejos para Asegurar Ubuntu Server 22 Ajustes de Sysctl Kernel

También puedes ejecutar los siguientes comandos para indicarle a tu núcleo que descarte cualquier solicitud de conexión falsa hecha a tu servidor:

sudo sysctl net.ipv4.tcp_syncookies=1  
sudo sysctl net.ipv4.tcp_rfc1337=1

Consejos para Asegurar Ubuntu Server 23 Ajuste de Flushing de Sysctl Net

Estos comandos, por otro lado, forzarán al núcleo a validar cada conexión entrante a la máquina:

sudo sysctl net.ipv4.conf.all.rp_filter=1  
sudo sysctl net.ipv4.conf.default.rp_filter=1

Consejos para Asegurar Ubuntu Server 24 Ajustes de Sysctl Red de Filtrado de Conexiones

Por último, el siguiente conjunto de comandos evitará que cualquier conexión entrante redirija el tráfico de red a una puerta de enlace diferente. Hacer esto evitará que tu máquina caiga en un ataque de intermediario (man-in-the-middle).

sudo sysctl net.ipv4.conf.all.accept_redirects=0  
sudo sysctl net.ipv4.conf.default.accept_redirects=0  
sudo sysctl net.ipv4.conf.all.secure_redirects=0  
sudo sysctl net.ipv4.conf.default.secure_redirects=0  
sudo sysctl net.ipv6.conf.all.accept_redirects=0  
sudo sysctl net.ipv6.conf.default.accept_redirects=0  
sudo sysctl net.ipv4.conf.all.send_redirects=0  
sudo sysctl net.ipv4.conf.default.send_redirects=0

Consejos para Asegurar Ubuntu Server 25 Ajustes de Sysctl Net Prevención de Mitm

Consejos: además de los consejos anteriores, también puedes hacer uso de estas herramientas de código abierto para asegurar tu servidor Linux.

Preguntas Frecuentes

He perdido mi máquina local. ¿Es posible iniciar sesión en mi servidor Ubuntu a través de SSH?

En su mayor parte, no debería ser posible iniciar sesión a través de SSH si solo está utilizando autenticación de clave pública. Sin embargo, aún puede ser posible acceder al aviso de SSH si no desactivaste la variable PasswordAuthentication.

Además de eso, podrías acceder físicamente a la máquina y actualizar “/etc/ssh/sshd_config” o acceder a la consola raíz de tu proveedor VPS.

Mi servidor tiene tanto iptables como ufw. ¿Necesito configurar ambos para mi firewall?

¡No! Tanto iptables como ufw son software de firewall que toman control sobre los mismos rangos de dirección y puertos. Solo necesitas configurar uno de ellos para tener un firewall funcional en tu servidor Linux.

¿Es posible eliminar los privilegios de superusuario de un usuario que creé?

¡Sí! Es posible eliminar un usuario existente de un grupo. Usa la utilidad usermod. Por ejemplo, ejecutar usermod -G video nuevo-servicio eliminará al usuario “nuevo-servicio” del grupo “sudo” y lo agregará al grupo “video”.

Crédito de imagen: Unsplash. Todas las modificaciones y capturas de pantalla por Ramces Red.