Cómo mantener seguro tu servidor Ubuntu

0 acciones
0
0
0
0

Introducción

Recuerdo mis primeros servidores. No hice casi nada para protegerlos porque no sabía que alguien con malas intenciones pudiera acceder a mi servidor. Y ya te imaginarás cómo terminó. Por suerte, tenía copias de seguridad y pude restaurarlas fácilmente. Pero volvió a ocurrir. Así que, esta vez, investigué, hice mi tarea y mejoré la seguridad de mis servidores. Sé que no existe un servidor invulnerable, pero te mostraré cómo mantener tu servidor seguro y qué hacer si falla.

Comenzaremos con la configuración básica. Aprenderás qué hacer al crear un nuevo servidor. Después, veremos cómo mantenerlo mediante comprobaciones periódicas. Finalmente, aprenderás qué hacer cuando tu servidor se cae. Este tutorial no te convertirá en un administrador de servidores profesional, ya que requiere mucho trabajo y es un trabajo serio. Pero al menos podrás mantener tus proyectos de afición seguros.

Requisitos previos
  • 1 servidor (por ejemplo, con Hetzner)

Paso 1 – Configuración inicial y seguridad básica

Después de crear su servidor, siga los pasos 1 a 5 del tutorial "Configuración inicial del servidor con Ubuntu". Este tutorial explica cómo:

  • Crear un nuevo usuario con permisos de sudo
  • Agregar una clave SSH

Después de completar los primeros 5 pasos del tutorial vinculado y conectarse al nuevo usuario sudo, puede continuar con los pasos a continuación.

Actualización del sistema

Lo primero que debes hacer es buscar actualizaciones, ya que el software desactualizado puede tener vulnerabilidades que se pueden explotar fácilmente. Es más fácil de lo que crees; simplemente ejecuta estos dos comandos:

sudo apt update
sudo apt upgrade

Fácil, ¿verdad? Ya nos aseguramos de usar las últimas versiones.

Acceso SSH seguro

Cuando alguien ataca tu servidor, probablemente lo primero que intente será acceder a él por SSH. Suelen hacerlo con bots y diversos métodos. Por eso, proteger el acceso por SSH es fundamental.

Editar el archivo de configuración:

sudo nano /etc/ssh/sshd_config
  • Deshabilitar el acceso root

Busque la línea “PermitRootLogin” y cámbiela a “no”.

  • Deshabilitar la entrada de contraseña

Si agregó una clave SSH como se sugirió anteriormente, puede deshabilitar el ingreso de contraseña.

    • “Busque ”PasswordAuthentication“ y configúrelo en ”no”.
    • “Busque ”PubkeyAuthentication“ y configúrelo en ”Sí”.
  • Cambiar el puerto SSH predeterminado

Con solo cambiar eso, podemos eliminar la mayoría de los ataques de bots automatizados, ya que la mayoría de ellos son bots falsos e intentan acceder a SSH a través del puerto 22.

Busque la línea “#Port 22” y cámbiela a algo como “Port 2222” (o cambie 2222 por lo que desee).

Guarde los cambios y verifique si el puerto se ha cambiado correctamente:

sudo systemctl restart ssh.service
sudo systemctl status ssh

Asegúrese de que diga Servidor escuchando en:: puerto 2222.

Si se especifica el puerto 2222, puede ejecutar lo siguiente para finalizar la conexión al servidor y verificar si la conexión al nuevo puerto funciona:

ssh -p 2222 holu@<203.0.113.1>

Si puede conectarse al puerto que configuró, puede continuar con el tutorial.

Configurar un firewall

Usaremos "ufw" para administrar las reglas del firewall. Está diseñado para ser fácil de usar y utiliza una interfaz de línea de comandos. Probablemente ufw ya esté instalado en su sistema, pero puede ejecutar este comando para asegurarse de que esté instalado:

sudo apt install ufw

A continuación, denegaremos todo el tráfico de red entrante a menos que otras reglas lo permitan específicamente. Esto es esencial para proteger su servidor, permitiendo únicamente el tráfico que usted autorice explícitamente. Deberá ejecutar este comando:

sudo ufw default deny incoming

A continuación, permitimos todo el tráfico de red saliente. Esto suele ser seguro y permite que su servidor se comunique con otros servidores o servicios sin restricciones. Ejecute este comando:

sudo ufw default allow outgoing

Ahora necesitamos permitir que nuestro puerto SSH se conecte a nuestro servidor mediante SSH. Solo asegúrate de cambiar 2222 a tu puerto SSH si especificaste algo diferente y ejecuta este comando:

sudo ufw allow 2222/tcp

Por último, necesitamos habilitar nuestras reglas de firewall:

sudo ufw enable

Fail2Ban

Cambiamos nuestro puerto SSH y configuramos nuestro firewall. Pero ¿qué pasa si un bot encuentra nuestro puerto y aun así intenta acceder a nuestro servidor por SSH? Esto sería un ataque de fuerza bruta y podemos proteger nuestro servidor con Fail2Ban. Este software bloquea las IP que muestran indicios de intentos maliciosos. Para instalar y habilitar Fail2Ban, necesitas ejecutar estos tres comandos:

sudo apt install fail2ban
sudo systemctl enable fail2ban
sudo systemctl start fail2ban

También puede personalizar la configuración de Fail2Ban editando los archivos de configuración en la carpeta /etc/fail2ban/. Para obtener información más detallada y recomendaciones, consulte la documentación de Fail2Ban.

¡Genial! Has dado un gran paso y ahora tienes un servidor más protegido. Por ahora, solo necesitas realizar mantenimiento de vez en cuando. Te explicaremos qué debes hacer en la siguiente sección.

Paso 2 – Mantenimiento regular

  • Actualización del sistema

Primero, debemos comprobar si hay actualizaciones disponibles para nuestro sistema. Ejecute este comando:

sudo apt update && sudo apt upgrade -y
  • Informes de monitorización

Debe revisar periódicamente los registros del sistema para detectar actividad inusual. Logwatch puede ayudarle a automatizar este proceso. Puede instalar Logwatch con este comando:

sudo apt install logwatch

Puede consultar información más detallada, cómo configurar informes diarios y ver cómo se ven los informes en esta guía.

  • Compruebe el uso del disco.

Solo para asegurarse de que tiene suficiente espacio para ejecutar su servidor, verifique el espacio restante en disco con este comando:

df -h
  • Realice una copia de seguridad de sus datos.

Siempre deberías tener varias copias de seguridad para asegurarte de que puedas recuperarte de un desastre si tu servidor se elimina por completo o se vuelve inaccesible. Por suerte, Hetzner ofrece una solución de copias de seguridad automatizadas para servidores en la nube; puedes consultarla en la documentación oficial. Si quieres configurar tu propia copia de seguridad, puedes usar herramientas como rsync o Duplicity.

  • Auditar cuentas de usuario

No olvides revisar regularmente las cuentas de usuario en el servidor. Asegúrate de que solo los usuarios autorizados tengan acceso a tu servidor. Elimina las cuentas que ya no necesites. Puedes revisar las cuentas de usuario ejecutando este comando:

sudo nano /etc/passwd
  • Comprueba si hay rootkits y malware

Para escanear rápidamente su servidor, puede usar herramientas como "rkhunter" y "chkrootkit". Estas herramientas le ayudarán a detectar posibles rootkits, puertas traseras y exploits locales, y a asegurarse de que todo esté en orden. Ejecute estos comandos para comprobar que rkhunter esté instalado y comprobar:

sudo apt install rkhunter
sudo rkhunter --check

  • Monitoreo del rendimiento del sistema

Finalmente, puede comprobar rápidamente el rendimiento del sistema para asegurarse de que no haya cuellos de botella de recursos al ejecutar el software. Existen herramientas como "htop", "top" o "atop". Pero puede ejecutar este comando:

htop

Paso 3 – Más herramientas de seguridad

  • Utilice sistemas de detección de intrusiones.

Puede usar herramientas como "AIDE" (Entorno de Detección de Intrusiones Avanzado) para supervisar los cambios en su sistema. Crea una base de datos de sus archivos y carpetas y compara su sistema con ella para garantizar la integridad de los archivos. Puede consultar más detalles en su repositorio. Para su uso inicial, puede instalarlo con este comando:

sudo apt install aide

Inicie y genere la base de datos con estos comandos:

sudo aideinit
sudo cp /var/lib/aide/aide.db.new /var/lib/aide/aide.db

Y compare su sistema con la base de datos usando este comando:

sudo aide --config /etc/aide/aide.conf --check
  • Habilitar la autenticación de dos factores (2FA)

También puedes configurar la autenticación de dos factores (2FA) para iniciar sesión en tu servidor mediante SSH. Esto añade una capa adicional de protección y reduce el riesgo de acceso no autorizado. Puedes instalarla con este comando:

sudo apt install libpam-google-authenticator

Y ejecuta este comando para iniciarlo:

google-authenticator
  • Aplicaciones web seguras

Si ejecuta aplicaciones web en su servidor, asegúrese de seguir las prácticas recomendadas y actualizarlas periódicamente. Por ejemplo, si usa WordPress, siempre debe usar la última versión y mantener todos los plugins y temas actualizados. Además, debe instalar un plugin de seguridad adecuado para WordPress. Esto reducirá el riesgo de acceso no autorizado a su servidor y aplicaciones.

Paso 4 – Plan de respuesta a incidentes

Este plan puede ser muy detallado en grandes organizaciones, pero lo mantendremos simple y práctico para servidores de entretenimiento pequeños. Por eso, he preparado un plan de 3 pasos para ti.

  • Preparación

Para esta sección, debe crear un pequeño archivo de texto o una nota en su bloc de notas sobre la información de su servidor. Incluya información como la arquitectura del servidor, el software que ejecuta, dónde se almacenan las copias de seguridad y los registros, y sus configuraciones. Guarde esta nota en un lugar seguro. Puede consultar este ejemplo como punto de partida:

Información del servidor
InformaciónDescripción
Nombre del servidorMiServidor01
Dirección IP192.168.1.100
Sistema operativoUbuntu 24.04 LTS
UPC4 vCPU
RAM8 GB
AlmacenamientoSSD de 100 GB
Puerto SSH2222
    • Software y servicios: Nginx 1.18.0, PostgreSQL 13, Django 3.1
    • Copia de seguridad: dual, diaria, /mnt/backup y almacenamiento remoto en AWS S3, retención de 30 días
    • Configuración de Nginx: /etc/nginx/nginx.conf
    • Configuración de PostgreSQL: /etc/postgresql/13/main/postgresql.conf
    • Configuración de Django: /home/myuser/myapp/settings.py
    • Configuración de UFW: /etc/ufw/ufw.conf
  • Identificación

En este punto, debe verificar cuál es el problema con su servidor. ¿El problema o la brecha está relacionada con su aplicación web, el servidor en sí o alguna de las bases de datos dentro de su servidor? Si no está seguro, asuma siempre que todo está en riesgo. Por lo tanto, debe comenzar a verificar todo de nuevo, empezando por el servidor.

  • Mejora

Restaurar sistemas dañados en esta sección. Si no puede acceder a su servidor, debería restaurarlo desde una copia de seguridad. Si una de sus aplicaciones web falla, es posible que solo necesite restaurarla desde su copia de seguridad. Asegúrese de que todo esté restaurado, probado, funcionando correctamente y de haber realizado un análisis de seguridad.

Resultado

Proteger su servidor requiere una combinación de buenas prácticas y mantenimiento regular. Siguiendo los pasos descritos en esta publicación, puede aumentar significativamente la seguridad de su servidor y proteger sus valiosos datos. Recuerde que la seguridad es un proceso continuo, así que no olvide revisar sus servidores regularmente.

 

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

También te puede gustar

Cómo instalar IBSng en CentOS 6/7

Tutorial de instalación de IBSng en CentOS 6/7. En este artículo se proporciona un tutorial de instalación de IBSng en CentOS 6/7 para ayudarle…