5 Consejos Sencillos para Asegurar tu Servidor Linux

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
- Eliminar el Acceso SSH de Root
- Usar un Par de Claves Públicas para el Acceso SSH
- Fortalecer el Firewall de tu Servidor Linux
- Crear un Nuevo Usuario para Cada Servicio
- 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
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
Busca la variable PermitRootLogin en GNU Nano presionando Ctrl + W y escribiendo 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
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-keygenEl programa keygen te pedirá varios detalles sobre la clave que deseas crear. Puedes dejar estas opciones en su valor predeterminado presionando Enter tres veces.

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
Inicia sesión en tu máquina remota ejecutando el siguiente comando:
ssh [email protected]ónTambié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_configEncuentra la variable PasswordAuthentication y cambia su valor de “yes” a “no.”

Recarga tu demonio SSH ejecutando el siguiente comando:
sudo systemctl restart sshd3. 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.

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
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
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 443Por ú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
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.

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
-sestablece el shell del sistema para la nueva cuenta de usuario. En mi caso, mi nueva cuenta utiliza Bash como shell. - Tanto las banderas
-dcomo-mestablecen 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
passwdte 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.

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.

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.

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
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
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
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: 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.