Configuración Inicial de Seguridad en Ubuntu/Debian
Asegurar tu servidor Ubuntu o Debian inmediatamente después del despliegue es crítico para proteger contra accesos no autorizados, malware y ataques cibernéticos. Esta guía completa te lleva a través de los pasos esenciales de endurecimiento de seguridad que todo administrador de sistemas debe implementar en nuevos servidores Ubuntu y Debian, estableciendo una base de seguridad robusta para tu infraestructura.
Tabla de Contenidos
- Prerrequisitos
- Comprendiendo los Fundamentos de Seguridad del Servidor
- Paso 1: Actualizar Paquetes del Sistema
- Paso 2: Crear un Usuario Administrativo No Root
- Paso 3: Configurar Autenticación con Clave SSH
- Paso 4: Endurecer la Configuración SSH
- Paso 5: Configurar Firewall UFW
- Paso 6: Instalar y Configurar Fail2Ban
- Paso 7: Configurar Actualizaciones de Seguridad Automáticas
- Paso 8: Configurar Zona Horaria y NTP
- Paso 9: Deshabilitar Servicios Innecesarios
- Paso 10: Implementar Medidas de Seguridad Adicionales
- Verificación
- Solución de Problemas
- Mejores Prácticas
- Conclusión
- Recursos Adicionales
Prerrequisitos
Antes de comenzar el proceso de configuración de seguridad, asegúrate de tener:
- Instalación nueva de Ubuntu (20.04 LTS, 22.04 LTS o 24.04 LTS) o Debian (11 Bullseye o 12 Bookworm)
- Acceso root o usuario con privilegios sudo
- Acceso SSH al servidor
- Dirección IP del servidor o nombre de host
- Comprensión básica de línea de comandos de Linux
- Acceso a la consola del servidor (a través del panel del proveedor de hosting) en caso de bloqueo
- Al menos 1GB de RAM y 10GB de espacio en disco disponible
Comprendiendo los Fundamentos de Seguridad del Servidor
La seguridad del servidor opera bajo el principio de defensa en profundidad, implementando múltiples capas de protección para salvaguardar tu infraestructura. La configuración de seguridad inicial se enfoca en:
Principios clave de seguridad:
- Principio de Mínimo Privilegio: Los usuarios y procesos deben tener solo los permisos mínimos necesarios
- Defensa en Profundidad: Múltiples capas de seguridad protegen contra diversos vectores de ataque
- Fallo Seguro: Los sistemas deben defaultear a estados seguros cuando ocurren fallos
- Separación de Deberes: Las tareas administrativas deben distribuirse para prevenir abuso
- Actualizaciones Regulares: El software debe mantenerse actualizado para parchear vulnerabilidades
Vectores de ataque comunes abordados en esta guía:
- Ataques de fuerza bruta SSH
- Acceso root no autorizado
- Vulnerabilidades de software sin parchear
- Puertos y servicios innecesarios abiertos
- Exploits de escalación de privilegios
Paso 1: Actualizar Paquetes del Sistema
El primer y más crítico paso es actualizar todos los paquetes del sistema para parchear vulnerabilidades conocidas.
# Update package repository cache
sudo apt update
# Upgrade all installed packages
sudo apt upgrade -y
# Perform distribution upgrade (updates kernel and core packages)
sudo apt dist-upgrade -y
# Remove unnecessary packages
sudo apt autoremove -y
# Clean package cache
sudo apt clean
Por qué esto importa: Los proveedores de software lanzan regularmente parches de seguridad para vulnerabilidades descubiertas. Ejecutar software desactualizado expone tu servidor a exploits conocidos que los atacantes escanean activamente. El comando dist-upgrade asegura que las actualizaciones del kernel se apliquen, que a menudo contienen correcciones de seguridad críticas.
Verificar versión del kernel:
# Check current kernel version
uname -r
# List available kernels
dpkg --list | grep linux-image
Si se instaló un nuevo kernel, reinicia el servidor:
# Reboot system to load new kernel
sudo reboot
Después del reinicio, reconecta y verifica la versión del kernel:
# Confirm new kernel is running
uname -r
Paso 2: Crear un Usuario Administrativo No Root
Ejecutar operaciones como root es peligroso porque cada comando se ejecuta con privilegios ilimitados. Crea un usuario administrativo dedicado con acceso sudo.
# Create new user (replace 'adminuser' with your preferred username)
sudo adduser adminuser
Se te pedirá establecer una contraseña e información opcional del usuario. Elige una contraseña fuerte con mayúsculas, minúsculas, números y caracteres especiales.
# Add user to sudo group for administrative privileges
sudo usermod -aG sudo adminuser
# Verify user group membership
groups adminuser
Por qué usar sudo en lugar de root:
- Responsabilidad: Los comandos se registran con el usuario que los ejecutó
- Riesgo reducido: Los errores son menos catastróficos con las solicitudes de sudo
- Control granular: Sudo puede configurarse para permisos de comandos específicos
- Pista de auditoría: /var/log/auth.log registra todo el uso de sudo
Probar acceso sudo:
# Switch to new user
su - adminuser
# Test sudo privileges
sudo whoami
# Should output: root
# Verify sudo group membership
id adminuser
Paso 3: Configurar Autenticación con Clave SSH
La autenticación con clave SSH es significativamente más segura que la autenticación por contraseña y debe configurarse antes de deshabilitar los inicios de sesión por contraseña.
Generar Par de Claves SSH (en tu máquina local)
Si aún no has creado un par de claves SSH:
# Generate Ed25519 key (recommended for modern systems)
ssh-keygen -t ed25519 -C "[email protected]"
# Or generate RSA 4096-bit key (for compatibility)
ssh-keygen -t rsa -b 4096 -C "[email protected]"
Acepta la ubicación de archivo predeterminada (~/.ssh/id_ed25519 o ~/.ssh/id_rsa) y establece una frase de contraseña fuerte.
Copiar Clave Pública al Servidor
# Copy public key to your new administrative user
ssh-copy-id adminuser@your_server_ip
# If ssh-copy-id is unavailable, use this method:
cat ~/.ssh/id_ed25519.pub | ssh adminuser@your_server_ip "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
Verificar Autenticación con Clave
# Test connection with new user using key authentication
ssh adminuser@your_server_ip
# You should connect without entering the server password
# (only your key passphrase if you set one)
Importante: Mantén esta sesión SSH abierta mientras pruebas para evitar el bloqueo. Abre una nueva ventana de terminal para los siguientes pasos.
Establecer Permisos Apropiados en el Servidor
Asegura permisos correctos en directorios y archivos SSH:
# On the server, as your administrative user
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
# Verify permissions
ls -la ~/.ssh/
# Should show:
# drwx------ for .ssh directory
# -rw------- for authorized_keys file
Paso 4: Endurecer la Configuración SSH
Modifica la configuración del demonio SSH para implementar mejores prácticas de seguridad.
# Backup original SSH configuration
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.backup.$(date +%Y%m%d)
# Edit SSH configuration
sudo nano /etc/ssh/sshd_config
Aplica estas configuraciones de endurecimiento de seguridad:
# Disable root login via SSH
PermitRootLogin no
# Disable password authentication (only after key auth is working!)
PasswordAuthentication no
# Disable empty passwords
PermitEmptyPasswords no
# Disable challenge-response authentication
ChallengeResponseAuthentication no
# Disable PAM authentication (if using key-only auth)
UsePAM no
# Allow only specific users (optional)
AllowUsers adminuser
# Disable X11 forwarding if not needed
X11Forwarding no
# Set maximum authentication attempts
MaxAuthTries 3
# Reduce login grace time
LoginGraceTime 30
# Use strong key exchange algorithms
KexAlgorithms curve25519-sha256,[email protected],diffie-hellman-group-exchange-sha256
# Use strong ciphers
Ciphers [email protected],[email protected],[email protected],aes256-ctr,aes192-ctr,aes128-ctr
# Use strong MAC algorithms
MACs [email protected],[email protected],hmac-sha2-512,hmac-sha2-256
# Disable host-based authentication
HostbasedAuthentication no
# Disable rhosts authentication
IgnoreRhosts yes
# Enable strict mode
StrictModes yes
# Disable unused authentication methods
PubkeyAuthentication yes
GSSAPIAuthentication no
KerberosAuthentication no
Advertencia crítica: Antes de deshabilitar la autenticación por contraseña, verifica que la autenticación con clave SSH funcione correctamente en una sesión de terminal separada.
Probar sintaxis de configuración SSH:
# Verify configuration has no syntax errors
sudo sshd -t
# No output means configuration is valid
Reiniciar servicio SSH:
# Restart SSH daemon to apply changes
sudo systemctl restart sshd
# Verify SSH service is running
sudo systemctl status sshd
Probar la nueva configuración en una nueva ventana de terminal antes de cerrar tu sesión actual:
# Connect in new terminal window
ssh adminuser@your_server_ip
# Verify connection works with key authentication
# Try connecting as root (should be denied)
ssh root@your_server_ip
# Should fail with "Permission denied"
Paso 5: Configurar Firewall UFW
UFW (Uncomplicated Firewall) proporciona una interfaz fácil de usar para la configuración del firewall iptables en Ubuntu y Debian.
# Install UFW (usually pre-installed on Ubuntu)
sudo apt install ufw -y
# Set default policies
sudo ufw default deny incoming
sudo ufw default allow outgoing
# Allow SSH before enabling firewall (critical to avoid lockout!)
sudo ufw allow ssh
# Or specify custom SSH port if you changed it:
# sudo ufw allow 2222/tcp
# Allow HTTP and HTTPS if running web server
sudo ufw allow http
sudo ufw allow https
# Or use port numbers:
# sudo ufw allow 80/tcp
# sudo ufw allow 443/tcp
Habilitar UFW:
# Enable firewall
sudo ufw enable
# Verify firewall status
sudo ufw status verbose
Salida esperada:
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip
To Action From
-- ------ ----
22/tcp ALLOW IN Anywhere
80/tcp ALLOW IN Anywhere
443/tcp ALLOW IN Anywhere
22/tcp (v6) ALLOW IN Anywhere (v6)
80/tcp (v6) ALLOW IN Anywhere (v6)
443/tcp (v6) ALLOW IN Anywhere (v6)
Comandos UFW adicionales:
# Allow specific IP address to all ports
sudo ufw allow from 203.0.113.50
# Allow specific IP to specific port
sudo ufw allow from 203.0.113.50 to any port 22
# Allow port range
sudo ufw allow 8000:8100/tcp
# Deny specific port
sudo ufw deny 23
# Delete rule by number
sudo ufw status numbered
sudo ufw delete [number]
# Reset UFW to default (removes all rules)
sudo ufw reset
# Disable UFW
sudo ufw disable
Por qué importa la configuración del firewall: Los firewalls implementan control de acceso a nivel de red, bloqueando intentos de conexión no autorizados antes de que lleguen a tus servicios. Un firewall configurado apropiadamente reduce tu superficie de ataque exponiendo solo los puertos necesarios.
Paso 6: Instalar y Configurar Fail2Ban
Fail2Ban monitorea archivos de registro y prohíbe automáticamente direcciones IP que muestran comportamiento malicioso, como intentos repetidos de inicio de sesión fallidos.
# Install Fail2Ban
sudo apt install fail2ban -y
# Copy default configuration
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
# Edit local configuration
sudo nano /etc/fail2ban/jail.local
Configura la protección SSH agregando o modificando:
[DEFAULT]
# Ban hosts for 1 hour (3600 seconds)
bantime = 3600
# Monitor for failed attempts over 10 minutes
findtime = 600
# Ban after 5 failed attempts
maxretry = 5
# Email notifications (optional)
destemail = [email protected]
sendername = Fail2Ban
action = %(action_mwl)s
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 7200
Iniciar y habilitar Fail2Ban:
# Start Fail2Ban service
sudo systemctl start fail2ban
# Enable Fail2Ban to start on boot
sudo systemctl enable fail2ban
# Check Fail2Ban status
sudo systemctl status fail2ban
# View active jails
sudo fail2ban-client status
# View SSH jail status
sudo fail2ban-client status sshd
Comandos de gestión de Fail2Ban:
# Unban an IP address
sudo fail2ban-client set sshd unbanip 203.0.113.50
# View banned IPs
sudo fail2ban-client status sshd
# Test Fail2Ban regex patterns
sudo fail2ban-regex /var/log/auth.log /etc/fail2ban/filter.d/sshd.conf
# Reload Fail2Ban configuration
sudo fail2ban-client reload
Por qué Fail2Ban es esencial: Los ataques automatizados de fuerza bruta intentan miles de combinaciones de inicio de sesión. Fail2Ban bloquea automáticamente estos ataques identificando patrones en archivos de registro y creando reglas temporales de firewall para prohibir direcciones IP ofensivas.
Paso 7: Configurar Actualizaciones de Seguridad Automáticas
Configura unattended-upgrades para instalar automáticamente parches de seguridad críticos.
# Install unattended-upgrades package
sudo apt install unattended-upgrades apt-listchanges -y
# Enable automatic updates
sudo dpkg-reconfigure -plow unattended-upgrades
# Select "Yes" when prompted
Configurar comportamiento de actualización automática:
# Edit unattended-upgrades configuration
sudo nano /etc/apt/apt.conf.d/50unattended-upgrades
Configuración recomendada:
Unattended-Upgrade::Allowed-Origins {
"${distro_id}:${distro_codename}-security";
"${distro_id}ESMApps:${distro_codename}-apps-security";
"${distro_id}ESM:${distro_codename}-infra-security";
};
// Automatically remove unused dependencies
Unattended-Upgrade::Remove-Unused-Dependencies "true";
// Automatically reboot if required (use with caution)
Unattended-Upgrade::Automatic-Reboot "false";
// If automatic reboot is enabled, do it at 2 AM
Unattended-Upgrade::Automatic-Reboot-Time "02:00";
// Email notification on errors
Unattended-Upgrade::Mail "[email protected]";
Unattended-Upgrade::MailReport "on-change";
// Remove unused kernel packages
Unattended-Upgrade::Remove-Unused-Kernel-Packages "true";
Configurar frecuencia de actualización:
# Edit auto-upgrade configuration
sudo nano /etc/apt/apt.conf.d/20auto-upgrades
Establecer:
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Download-Upgradeable-Packages "1";
APT::Periodic::AutocleanInterval "7";
APT::Periodic::Unattended-Upgrade "1";
Probar actualizaciones automáticas:
# Manually run unattended-upgrades in debug mode
sudo unattended-upgrades --debug --dry-run
# View update logs
sudo cat /var/log/unattended-upgrades/unattended-upgrades.log
Paso 8: Configurar Zona Horaria y NTP
La configuración correcta del tiempo es crucial para el registro, tareas programadas y certificados de seguridad.
# Check current timezone
timedatectl
# List available timezones
timedatectl list-timezones
# Set timezone (example: UTC)
sudo timedatectl set-timezone UTC
# Or set to specific location
sudo timedatectl set-timezone America/New_York
Configurar sincronización de tiempo NTP:
# Enable NTP synchronization
sudo timedatectl set-ntp on
# Verify time synchronization status
timedatectl status
# Check systemd-timesyncd service
sudo systemctl status systemd-timesyncd
# View time synchronization details
timedatectl show-timesync --all
Alternativa: Instalar y configurar chrony (más preciso):
# Install chrony
sudo apt install chrony -y
# Edit chrony configuration
sudo nano /etc/chrony/chrony.conf
# Verify chrony is running
sudo systemctl status chrony
# Check synchronization sources
chronyc sources
# View tracking information
chronyc tracking
Paso 9: Deshabilitar Servicios Innecesarios
Reduce la superficie de ataque deshabilitando servicios que no necesitas.
# List all running services
sudo systemctl list-units --type=service --state=running
# List enabled services
sudo systemctl list-unit-files --type=service --state=enabled
Servicios comunes a considerar deshabilitar:
# Disable Bluetooth (if not needed on server)
sudo systemctl disable bluetooth.service
sudo systemctl stop bluetooth.service
# Disable CUPS printing service
sudo systemctl disable cups.service
sudo systemctl stop cups.service
# Disable Avahi daemon (unless using mDNS)
sudo systemctl disable avahi-daemon.service
sudo systemctl stop avahi-daemon.service
# Disable ModemManager (not needed on servers)
sudo systemctl disable ModemManager.service
sudo systemctl stop ModemManager.service
Eliminar paquetes innecesarios:
# Remove snapd if not using snap packages
sudo apt purge snapd -y
# Remove unneeded packages and dependencies
sudo apt autoremove -y
# List installed packages by size
dpkg-query -Wf '${Installed-Size}\t${Package}\n' | sort -n
Deshabilitar protocolos de red innecesarios:
# Disable IPv6 if not used (edit /etc/sysctl.conf)
sudo nano /etc/sysctl.conf
# Add these lines:
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
# Apply changes
sudo sysctl -p
Paso 10: Implementar Medidas de Seguridad Adicionales
Configurar Límites del Sistema
# Edit limits configuration
sudo nano /etc/security/limits.conf
# Add resource limits:
* soft nofile 65536
* hard nofile 65536
* soft nproc 32768
* hard nproc 32768
Habilitar Contabilidad de Procesos
# Install accounting tools
sudo apt install acct -y
# Start accounting service
sudo systemctl start acct
sudo systemctl enable acct
# View accounting statistics
sudo sa
sudo lastcomm
Configurar Seguridad de Memoria Compartida
# Edit fstab to secure shared memory
sudo nano /etc/fstab
# Add this line:
tmpfs /run/shm tmpfs defaults,noexec,nosuid 0 0
# Remount with new options
sudo mount -o remount /run/shm
Deshabilitar Core Dumps
# Edit limits configuration
sudo nano /etc/security/limits.conf
# Add:
* hard core 0
# Disable SUID core dumps
sudo nano /etc/sysctl.conf
# Add:
fs.suid_dumpable = 0
# Apply changes
sudo sysctl -p
Configurar Registro de Auditoría
# Install auditd
sudo apt install auditd audispd-plugins -y
# Start and enable auditd
sudo systemctl start auditd
sudo systemctl enable auditd
# View audit logs
sudo ausearch -m USER_LOGIN
sudo ausearch -m USER_AUTH
Configurar AppArmor (Ubuntu) o SELinux (si está disponible)
# Check AppArmor status (Ubuntu/Debian default)
sudo apparmor_status
# Install AppArmor utilities
sudo apt install apparmor-utils -y
# Set profile to enforce mode
sudo aa-enforce /etc/apparmor.d/*
# View AppArmor profiles
sudo aa-status
Verificación
Después de completar todas las configuraciones de seguridad, verifica que todo funcione correctamente.
Verificar Seguridad SSH
# Test SSH connection with your admin user
ssh adminuser@your_server_ip
# Verify root login is disabled
ssh root@your_server_ip
# Should be denied
# Check SSH configuration
sudo sshd -t
Verificar Estado del Firewall
# Check UFW status
sudo ufw status verbose
# Verify iptables rules
sudo iptables -L -n -v
# Check IPv6 rules
sudo ip6tables -L -n -v
Verificar Operación de Fail2Ban
# Check Fail2Ban status
sudo systemctl status fail2ban
# View active jails
sudo fail2ban-client status
# Check SSH jail
sudo fail2ban-client status sshd
Verificar Actualizaciones Automáticas
# Check unattended-upgrades status
sudo systemctl status unattended-upgrades
# View recent update logs
sudo tail -f /var/log/unattended-upgrades/unattended-upgrades.log
Auditoría de Seguridad
# Check for open ports
sudo ss -tulnp
# List running services
sudo systemctl list-units --type=service --state=running
# View recent authentication logs
sudo tail -f /var/log/auth.log
# Check for failed login attempts
sudo grep "Failed password" /var/log/auth.log | tail -20
# View last logins
sudo last -a | head -20
# Check system resource usage
top
htop
Solución de Problemas
Bloqueado del SSH
Problema: No se puede conectar vía SSH después de cambios de configuración.
Solución:
- Accede al servidor vía consola/VNC del proveedor de hosting
- Verifica el estado del servicio SSH:
sudo systemctl status sshd
- Revisa la configuración SSH para errores:
sudo sshd -t
- Habilita temporalmente la autenticación por contraseña si es necesario:
sudo nano /etc/ssh/sshd_config
# Change: PasswordAuthentication yes
sudo systemctl restart sshd
- Verifica las reglas del firewall:
sudo ufw status
sudo ufw allow 22/tcp
UFW Bloqueando Conexiones Legítimas
Problema: No se puede acceder a servicios después de habilitar UFW.
Solución:
# View current rules
sudo ufw status numbered
# Add missing rules
sudo ufw allow [port]/tcp
# Delete problematic rules
sudo ufw delete [rule_number]
# Temporarily disable for troubleshooting
sudo ufw disable
# Re-enable after fixing
sudo ufw enable
Fail2Ban Prohibiendo tu IP
Problema: Tu propia dirección IP es prohibida por Fail2Ban.
Solución:
# Check if your IP is banned
sudo fail2ban-client status sshd
# Unban your IP
sudo fail2ban-client set sshd unbanip YOUR_IP_ADDRESS
# Add your IP to whitelist (edit jail.local)
sudo nano /etc/fail2ban/jail.local
# Add under [DEFAULT]:
ignoreip = 127.0.0.1/8 ::1 YOUR_IP_ADDRESS
# Restart Fail2Ban
sudo systemctl restart fail2ban
Actualizaciones Automáticas Rompiendo el Sistema
Problema: Las actualizaciones automáticas causaron interrupción del servicio.
Solución:
# Disable automatic updates temporarily
sudo systemctl stop unattended-upgrades
sudo systemctl disable unattended-upgrades
# Review what was updated
sudo cat /var/log/unattended-upgrades/unattended-upgrades.log
# Roll back specific package
sudo apt install package_name=previous_version
# Re-enable with more conservative settings
sudo nano /etc/apt/apt.conf.d/50unattended-upgrades
Problemas de Sincronización de Tiempo
Problema: El tiempo del servidor es incorrecto.
Solución:
# Check time sync status
timedatectl status
# Restart time sync service
sudo systemctl restart systemd-timesyncd
# Manually sync time
sudo ntpdate pool.ntp.org
# Or use timedatectl
sudo timedatectl set-ntp false
sudo timedatectl set-ntp true
Mejores Prácticas
Recomendaciones de Seguridad
- Auditorías de seguridad regulares: Ejecuta verificaciones de seguridad mensuales y escaneos de vulnerabilidades
- Principio de mínimo privilegio: Otorga los permisos mínimos necesarios
- Defensa en profundidad: Implementa múltiples capas de seguridad
- Monitoreo: Configura registro y alertas para eventos de seguridad
- Documentación: Mantén registros de todas las configuraciones de seguridad
- Estrategia de respaldo: Implementa respaldos regulares antes de realizar cambios
- Calendario de actualizaciones: Mantén los sistemas parcheados con las últimas actualizaciones de seguridad
- Control de acceso: Limita el acceso SSH a direcciones IP específicas cuando sea posible
- Autenticación fuerte: Usa claves SSH con frases de contraseña y considera 2FA
- Rotación regular de contraseñas: Cambia las contraseñas trimestralmente para cuentas habilitadas con contraseña
Calendario de Mantenimiento
Diario:
- Monitorear registros de autenticación para actividad sospechosa
- Revisar IPs prohibidas por Fail2Ban
- Verificar uso de recursos del sistema
Semanal:
- Revisar paquetes instalados y eliminar innecesarios
- Verificar actualizaciones de seguridad disponibles
- Auditar cuentas de usuario y permisos
Mensual:
- Revisar reglas del firewall y actualizar según sea necesario
- Rotar registros y limpiar datos antiguos
- Probar procedimientos de restauración de respaldos
- Ejecutar escaneos de vulnerabilidades de seguridad
- Revisar y actualizar documentación
Trimestral:
- Rotar contraseñas y claves SSH
- Actualizar configuraciones de seguridad basándose en nuevas amenazas
- Revisar y probar procedimientos de recuperación de desastres
Gestión de Configuración
# Backup important configuration files
sudo tar -czf /root/config-backup-$(date +%Y%m%d).tar.gz \
/etc/ssh/sshd_config \
/etc/ufw \
/etc/fail2ban \
/etc/security/limits.conf \
/etc/sysctl.conf \
/etc/apt/apt.conf.d
Comandos de Monitoreo
# Create alias for quick security checks
echo "alias security-check='sudo ss -tulnp; sudo ufw status; sudo fail2ban-client status; sudo journalctl -u sshd -n 50'" >> ~/.bashrc
source ~/.bashrc
# Run comprehensive security check
security-check
Conclusión
Ahora has implementado una base de seguridad completa para tu servidor Ubuntu o Debian. Estas configuraciones de seguridad iniciales reducen significativamente la vulnerabilidad de tu servidor a ataques comunes y establecen una línea base sólida para un endurecimiento adicional.
Logros clave:
- Paquetes del sistema actualizados a las últimas versiones
- Usuario administrativo no root creado con acceso sudo
- SSH endurecido con autenticación de clave y configuración segura
- Firewall configurado para permitir solo tráfico necesario
- Fail2Ban protegiendo contra ataques de fuerza bruta
- Actualizaciones de seguridad automáticas habilitadas
- Servicios innecesarios deshabilitados
- Medidas de seguridad adicionales implementadas
Próximos pasos:
- Instalar y configurar medidas de seguridad específicas de aplicaciones
- Configurar sistemas de monitoreo y alerta
- Implementar soluciones de respaldo
- Configurar controles de acceso adicionales según sea necesario
- Auditorías de seguridad y actualizaciones regulares
Recuerda que la seguridad es un proceso continuo, no una configuración única. Mantente informado sobre nuevas vulnerabilidades, revisa regularmente los registros y mantén tus sistemas actualizados.
Recursos Adicionales
- Ubuntu Security Guide
- Debian Security Information
- CIS Ubuntu Linux Benchmark
- NIST Security Configuration Guides
- OpenSSH Security Best Practices
- UFW Documentation
- Fail2Ban Official Documentation
Guías Relacionadas
- Cómo Conectarse a tu Servidor vía SSH
- Cómo Cambiar el Puerto SSH Predeterminado
- Endurecimiento del Servidor Linux: Guía Completa
- Configuración de Fail2Ban para Protección contra Fuerza Bruta
- Cómo Configurar Usuarios y Permisos en Linux
- Gestión de Claves SSH: Generación y Mejores Prácticas


