Seguridad en Linux: pasos sencillos para una protección confiable

Seguridad en Linux: pasos sencillos para una protección confiable

Si cada servidor pudiera hablar, seguramente se quejaría de que las amenazas más graves no provienen de los rincones oscuros de internet, sino de administradores perezosos que dejan para después el apt update. Pongamos algo en claro: la seguridad no es un script heroico ejecutado a las 3 de la madrugada, sino una higiene diaria. En este artículo comparto —sin sermones, pero con lo esencial— los cinco pilares de la protección básica de sistemas Linux.

Por qué preocuparse

Linux, a pesar de su reputación como favorito entre algunos hackers, no es un tanque a prueba de todo. Un servidor sin parches con SSH abierto en el puerto 22 recibe intentos de fuerza bruta aproximadamente cinco minutos después de conectarse a la red. Luego es cuestión de estadísticas: tarde o temprano acertarán. La buena noticia: la mayoría de los ataques siguen estando automatizados y se topan con configuraciones estándar. Un poco de disciplina y ya no será uno de los objetivos fáciles.

Actualizaciones regulares: una victoria sencilla contra las vulnerabilidades

El punto más aburrido, pero el más importante. Los parches salen cada semana, y los críticos a veces un par de veces al día. Por eso el primer script en cron debería ser la actualización.

# для Debian/Ubuntu
sudo apt update && sudo apt full-upgrade -y
# для RHEL/CentOS/Alma
sudo dnf upgrade --refresh -y

Si el sistema es crítico respecto a los tiempos de inactividad, use Livepatch o KernelCare, servicios que sustituyen el kernel en caliente sin reiniciar. No escatime: un parche no aplicado para CVE‑2025‑12345 hoy puede traducirse en una noche sin dormir mañana.

sudo: privilegios mínimos sin dolor

Trabajar como root es como conducir sin cinturón. Cómodo hasta que ocurre un accidente. sudo permite darte exactamente la autoridad necesaria y nada más.

  • Crear un usuario separado:
    adduser alice && usermod -aG sudo alice
  • Editar la política: execute sudo visudo y añada la línea alice ALL=(ALL:ALL) ALL. ¿Quiere algo más fino? Puede conceder acceso solo a un script de copia de seguridad.
  • Registrar todo: en el mismo archivo puede activar Defaults log_output para que cada comando se escriba en /var/log/sudo.log. Así no tendrá que adivinar quién borró /etc.

La filosofía es simple: cuanto menos cables cuelguen, más difícil será tirar de ellos.

SSH: la puerta que todos intentan forzar

Según Honeynet Project, el 60 % de los ataques automatizados a hosts comienzan con fuerza bruta de contraseñas SSH. Hagamos la vida de los atacantes aburrida.

Autenticación por clave en lugar de contraseñas

# на клиенте
ssh-keygen -t ed25519 -C "alice@workstation"
ssh-copy-id alice@server

Después, en /etc/ssh/sshd_config:

PasswordAuthentication no
PermitRootLogin no

Guardamos y reiniciamos con systemctl restart sshd. Ahora la contraseña en el servidor no funciona y el acceso root por red está deshabilitado.

¿Puerto no estándar? Sí, pero no por seguridad

Mover SSH al puerto 2222 no es una protección, es cosmética. Los bots seguirán escaneando, pero los registros quedarán más limpios. Decida según su preferencia.

Autenticación de dos factores para dormir más tranquilo

El paquete libpam-google-authenticator permite añadir TOTP. Detalles en el repositorio oficial. Sí, habrá que usar el teléfono, pero el compromiso entre comodidad y precaución suele estar en el punto medio.

ufw — interfaz amigable para reglas de red

Configurar iptables a mano es como programar en ensamblador: impresionante, pero rara vez necesario. ufw (Uncomplicated Firewall) cubre el 95 % de los escenarios domésticos con un par de comandos.

# установка
sudo apt install ufw
# политика «запрещено всё, что не разрешено»
sudo ufw default deny incoming
sudo ufw default allow outgoing
# разрешаем только SSH
sudo ufw allow 22/tcp comment "ssh"
# или, если порт поменяли, так:
# sudo ufw allow 2222/tcp comment "ssh non‑standard"
# включаем
sudo ufw enable

El comando ufw status numbered mostrará las reglas y ufw delete 1 eliminará la primera. Fácil de entender incluso a las tres de la mañana.

fail2ban — el robot que bloquea a otros robots

Cuando un script kiddie intenta adivinar su contraseña una y otra vez, fail2ban lee los registros, cuenta los fallos y pone temporalmente la dirección IP en lista de rechazo. Ahorra nervios y ciclos de CPU.

# установка
sudo apt install fail2ban
# копируем конфиг для кастомизации
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

En jail.local active la sección [sshd] y, si desea, cambie el tiempo de baneo, por ejemplo bantime = 1h. Tras reiniciar con systemctl restart fail2ban todo funcionará. Para comprobar qué IP ya están baneadas puede usar fail2ban-client status sshd.

Cinco consejos breves más que no encajaron arriba

  1. Copias de seguridad: Borg o Restic cifran los datos antes de enviarlos y aplican deduplicación. Una copia de seguridad sin prueba de restauración es solo apariencia de seguridad.
  2. Monitoreo de logs: GoAccess visualiza los registros web en tiempo real; es una herramienta excelente para detectar picos de 404 causados por un bot.
  3. Control de integridad: AIDE crea sumas de verificación de archivos y avisa si algo ha cambiado.
  4. AppArmor o SELinux: sí, la política puede resultar molesta al principio, pero impedirá que un exploit escriba donde no debe.
  5. No guardar claves donde sea: gestores de secretos como HashiCorp Vault ayudan a evitar el error de dejar un token de AWS en GitHub.

Conclusión

La seguridad en Linux no consiste en retirarse a una cueva con una vela y un hacha contra incendios, sino en una serie de hábitos sencillos. Actualizar paquetes semanalmente, configurar ufw, activar fail2ban, desactivar el acceso root por SSH: con eso cerrará la mayoría de los vectores típicos. El mundo no será perfecto, pero su servidor estará un poco más cerca del estatus de «objetivo aburrido» para un atacante. Y los objetivos aburridos, como se sabe, rara vez son los primeros en ser vulnerados.

Alt text