Protección de Ubuntu Server: Un enfoque práctico para proteger contenedores y despliegues
13:47, 17.08.2026
Existen varias medidas útiles que puedes aplicar para proteger el servidor Ubuntu. Por eso, hemos decidido compartir algunas recomendaciones prácticas relacionadas con este tema.
Con solo consultar tu logwatch, puedes detectar cuántos intentos de acceso a tu sistema se han producido y cuáles son. En la visión general que vamos a compartir en este artículo, ofreceremos algunos detalles sobre cómo proteger los servidores para su uso como hosts de Docker.
Pasos de configuración inicial
El paso más inicial y, al mismo tiempo, crucial es la elección de la contraseña para el usuario root. En este caso, debes seleccionar algo más complejo, y un generador de contraseñas puede ser una buena opción para este tipo de situaciones. Con la ayuda del generador de contraseñas, puedes guardar automáticamente la contraseña necesaria en solo un par de segundos y, además, cifrarla con la contraseña maestra. Sea cual sea la herramienta que utilices para generar la contraseña, también deberías plantearte alguna otra forma de cifrado. La contraseña de root podría ser necesaria en caso de que surjan problemas con la contraseña de sudo.
Otro paso importante es actualizar el sistema para disponer de los últimos parches. A continuación te explicamos cómo hacerlo:
apt-get update
apt-get upgrade
Creación de un nuevo usuario
Otra medida importante que debes seguir por motivos de seguridad es no iniciar sesión nunca en el servidor como root. Por ejemplo, en un equipo pequeño de usuarios, se puede utilizar una única cuenta de inicio de sesión para simplificar el proceso sin dejar de garantizar la seguridad. Si el equipo cuenta con más usuarios, la opción más adecuada es otorgar permisos específicos y solo mediante el acceso con «sudo».
# Crear el usuario «deploy»
useradd deploy
# Crear el directorio de inicio para el usuario «deploy»
mkdir -p /home/deploy
# Crear el directorio «.ssh» dentro del directorio de inicio del usuario «deploy»
mkdir -p /home/deploy/.ssh
# Establecer los permisos adecuados para el directorio «.ssh»
chmod 700 /home/deploy/.ssh
# Opcionalmente, cambia la propiedad del directorio de inicio y del directorio «.ssh» al usuario «deploy»
chown -R deploy:deploy /home/deploy
El siguiente paso es configurar el shell necesario con:
usermod -s /bin/bash deploy
Habilitar la autenticación mediante clave SSH
Otra buena recomendación es evitar el uso de contraseñas para acceder a los servidores. A continuación se indican algunos puntos relacionados con este tema:
- Las claves SSH son casi imposibles de adivinar, por lo que no se puede acceder al sistema mediante ataques de fuerza bruta, como ocurre con las contraseñas normales.
- Las claves también son mejores que las contraseñas normales simplemente porque requieren más información.
- En caso de pérdida o incluso robo del dispositivo, puedes proteger tu clave eliminando la clave pública de authorized_keys. También puedes obtener una capa adicional de protección utilizando una frase de contraseña larga.
- La importancia de una frase de contraseña segura es crucial.
Ahora copiemos id_rsa.pub1:
vim /home/deploy/.ssh/authorized_keys
Así es como deben configurarse los permisos correctos:
chmod 400 /home/deploy/.ssh/authorized_keys
chown deploy:deploy /home/deploy -R
Verificar el usuario «deploy» y configurar Sudo
Durante este proceso, mantendremos la conexión SSH como root e intentaremos verificar el usuario «deploy». A continuación, estableceremos una contraseña para «deploy». Para crear una contraseña más segura, utilizaremos una herramienta específica que también añadirá cierto nivel de cifrado.
passwd deploy
A continuación, abre sudo con:
visudo
Ahora, añadiremos el grupo «sudo» debajo del usuario «root»:
root ALL=(ALL) ALL
%sudo ALL=(ALL:ALL) ALL
Añade el usuario «deploy» al grupo «sudo» con:
usermod -aG sudo deploy
Tras estos pasos, el usuario «deploy» obtiene permisos de sudo. Ahora, puedes volver a iniciar sesión en el shell o utilizar el siguiente comando para acceder a estos permisos:
exec su -l deploy
Restringir los inicios de sesión a claves SSH
La configuración se encuentra aquí:
vim /etc/ssh/sshd_config
En el archivo, tendrás que añadir la IP; el siguiente comando es bastante sencillo; debes estar conectado a tu VPN y autenticado de la siguiente manera:
PermitRootLogin no
PasswordAuthentication no
AllowUsers deploy@(tu-VPN-o-IP-estática)
A continuación, tendrás que reiniciar el servicio SSH:
service ssh restart
Configuración de un cortafuegos
La configuración del cortafuegos se puede realizar con Iptables o bien puedes utilizar una opción simplificada basada en Iptables, que es ufw. En el sistema Ubuntu, ufw viene instalado por defecto, mientras que en el sistema Debian debe instalarse adicionalmente con:
apt-get install ufw
Empieza abriendo el archivo de configuración:
vim /etc/default/ufw
Cambia el siguiente valor a «yes»:
IPV6=yes
Ahora puedes configurarlo todo desde la línea de comandos con ufw de la siguiente manera:
sudo ufw allow from {especificar-la-ip} to any port 22
sudo ufw allow 80
sudo ufw allow 443
sudo ufw disable
sudo ufw enable
Antes de configurar estas reglas, es imprescindible que dispongas de una IP estática. Este factor es crucial, ya que una IP dinámica puede dejarte sin acceso.
Automatización de las actualizaciones de seguridad
La automatización es muy importante; de lo contrario, podrías perderte algunas actualizaciones de seguridad en tu sistema. A continuación se indican algunos pasos que debes seguir para mejorar la seguridad:
apt-get install unattended-upgrades
vim /etc/apt/apt.conf.d/10periodic
Realiza algunas modificaciones en el archivo tal y como se indica a continuación:
APT::Periodic::Update-Package-Lists "2";
APT::Periodic::Download-Upgradeable-Packages "2";
APT::Periodic::AutocleanInterval "14";
APT::Periodic::Unattended-Upgrade "1";
Otra recomendación fundamental es habilitar únicamente las actualizaciones de seguridad, ya que las actualizaciones habituales pueden provocar que la aplicación deje de funcionar durante el proceso, lo cual no es la opción ideal en la mayoría de los casos.
vim /etc/apt/apt.conf.d/50unattended-upgrades
Realiza los siguientes cambios en el archivo:
Unattended-Upgrade::Allowed-Origins {
"${distro_id}:${distro_codename}";
"${distro_id}:${distro_codename}-security";
"${distro_id}:${distro_codename}-updates";
"${distro_id}:${distro_codename}-backports";
};
Implementación de Fail2Ban
La implementación de Fail2Ban es una opción fantástica que bloqueará numerosas actividades sospechosas. Este paquete funciona añadiendo reglas a iptables y bloqueando las direcciones IP sospechosas que muestren alguna actividad extraña.
El paquete utiliza algunos protocolos de filtrado muy útiles y ofrece una excelente integración con otros servicios para garantizar una mejor protección contra ataques de fuerza bruta o DDoS. Debes revisar Fail2Ban con regularidad, ya que podría bloquear a algunos usuarios legítimos. Para simplificar el proceso, puedes integrar la herramienta con SendMail y recibirás una notificación inmediata en cuanto se bloquee una IP concreta.
Para la instalación, utiliza:
apt-get install fail2ban
Activación de la autenticación de dos factores
Si quieres tener un servidor totalmente seguro con menos riesgos y posibilidades de sufrir ataques virtuales, la autenticación de dos factores es imprescindible. El proceso de acceso a tu servidor se complica mucho más, ya que los hackers tendrán que:
- Acceder a la VPN obteniendo la clave o el certificado
- Acceder a tu equipo para obtener la clave privada
- Conseguir de alguna manera la frase de contraseña
- Por último, se requiere acceso a tu teléfono para la autenticación de dos factores
Incluso si eso fuera posible, tendrían que obtener acceso de root mediante sudo, ya que estos hackers tendrían que conseguir de alguna manera la contraseña del administrador, que está encriptada, lo cual supone un enorme desafío.
Para la instalación, utiliza:
apt-get install libpam-google-authenticator
Para configurarlo, necesitarás los siguientes comandos:
su deploy
google-authenticator
Configuración de Logwatch
Logwatch es otra herramienta útil y necesaria para la revisión de los archivos de registro. Diariamente, recibirás datos sobre todos los intentos que se hayan producido durante ese periodo, por lo que tendrás una visión clara de lo que está sucediendo en tu servidor. Esto puede utilizarse como herramienta de monitorización y su instalación es muy sencilla:
apt-get install logwatch
A continuación, añade la tarea:
vim /etc/cron.daily/00logwatch
Añade la siguiente línea al archivo abierto:
/usr/sbin/logwatch --output mail --mailto admin@example.com --detail high
Finalización de la configuración
Esto es todo lo que necesitas saber sobre la seguridad de tu servidor Ubuntu. Con solo seguir nuestras recomendaciones prácticas, podrás reducir significativamente los ataques virtuales a tu sistema. Si quieres ir aún más allá, también debes comprobar otras posibles vulnerabilidades relacionadas con el servicio y tus aplicaciones. Sin embargo, ¡eso ya es otro tema que tratar!