Si quieres proteger un túnel SSH de manera más efectivamente, se pueden implementar las siguientes medidas adicionales.
¿Cómo crear una Autenticación Robusta?
- Utilizar autenticación de clave pública en lugar de contraseñas.
- Habilitar la autenticación de dos factores (2FA) para el acceso SSH.
Ejemplos de Autenticación Robusta
Utilizar autenticación de clave pública en lugar de contraseñas.
1. Generar un par de claves en el cliente
ssh-keygen -t rsa -b 4096 -C "usuario@ejemplo.com"
2. Copiar la clave pública al servidor
ssh-copy-id usuario@servidor
3. Configurar el servidor SSH para usar solo autenticación de clave pública
sudo nano /etc/ssh/sshd_config
Añadir o modificar las siguientes líneas
PubkeyAuthentication yes
PasswordAuthentication no
4. Reiniciar el servicio SSH
sudo systemctl restart sshd
Habilitar la autenticación de dos factores (2FA) para el acceso SSH.
1. Instalar Google Authenticator
sudo apt-get install libpam-google-authenticator
2. Configurar Google Authenticator para el usuario
google-authenticator
3. Modificar la configuración PAM para SSH
sudo nano /etc/pam.d/sshd
Añadir la siguiente línea..
auth required pam_google_authenticator.so
4. Configurar SSH para usar la autenticación de desafío
sudo nano /etc/ssh/sshd_config
Modificar o añadir:
ChallengeResponseAuthentication yes
5. Reiniciar el servicio SSH
sudo systemctl restart sshd
¿Cómo mejorar la Configuración del Servidor?
- Cambiar el puerto SSH predeterminado (22) a un puerto no estándar.
- Desactivar el acceso SSH desde la interfaz WAN si no es necesario.
- Actualizar regularmente el software SSH y el sistema operativo.
Ejemplo de Configuración del Servidor
Configuración del servidor
Cambiar el puerto SSH predeterminado (22) a un puerto no estándar
1. Editar el archivo de configuración SSH:
sudo nano /etc/ssh/sshd_config
2. Cambiar la línea del puerto
Port 2222
3. Actualizar las reglas del firewall
sudo ufw allow 2222/tcp
sudo ufw deny 22/tcp
4. Reiniciar el servicio SSH
sudo systemctl restart sshd
Desactivar el acceso SSH desde la interfaz WAN si no es necesario
1. Identificar la interfaz WAN
ip addr show
2. Configurar SSH para escuchar solo en la interfaz LAN
sudo nano /etc/ssh/sshd_config
Añadir:
ListenAddress 192.168.1.100
3. Reiniciar el servicio SSH
sudo systemctl restart sshd
Actualizar regularmente el software SSH y el sistema operativo
Crear un script de actualización automática
#!/bin/bash
sudo apt update
sudo apt upgrade -y
sudo apt autoremove -y
sudo systemctl restart sshd
Configurar una tarea cron para ejecutar el script semanalmente
sudo crontab -e
Añadir:
0 2 * * 0 /path/to/update_script.sh
¿Cómo crear Restricciones de acceso?
- Implementar listas de control de acceso (ACL) para limitar las conexiones SSH a direcciones IP confiables.
- Utilizar una cuenta de usuario dedicada con permisos limitados para el túnel SSH.
Implementar listas de control de acceso (ACL)
Estas listas de control de accesos limitaran las conexiones SSH a direcciones IP exclusivamente confiables.
1. Crear una ACL en el router Cisco
R1(config)# ip access-list standard SSH_ACCESS
R1(config-std-nacl)# permit 192.168.1.0 0.0.0.255
R1(config-std-nacl)# deny any
R1(config-std-nacl)# exit
R1(config)# line vty 0 4
R1(config-line)# access-class SSH_ACCESS in
2. Configurar iptables en Linux
sudo iptables -A INPUT -p tcp --dport 22 -s 192.168.1.0/24 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 22 -j DROP
Utilizar una cuenta de usuario dedicada con permisos limitados para el túnel SSH
1. Crear un usuario dedicado
sudo adduser sshtunnel
2. Limitar los permisos del usuario
sudo usermod -s /bin/rbash sshtunnel
echo 'PATH="/home/sshtunnel/bin"' | sudo tee -a /home/sshtunnel/.bash_profile
3. Crear un directorio para los comandos permitidos
sudo mkdir /home/sshtunnel/bin
sudo ln -s /usr/bin/ssh /home/sshtunnel/bin/ssh
¿Cómo implementar el Cifrado?
- Configurar algoritmos de cifrado fuertes como AES-256-GCM o ChaCha20-Poly1305.
- Implementar MACs (códigos de autenticación de mensajes) seguros.
Configurar algoritmos de cifrado fuertes como AES-256-GCM o ChaCha20-Poly1305
Editar el archivo de configuración SSH
sudo nano /etc/ssh/sshd_config
Añadir o modificar:
Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com
Implementar MACs (códigos de autenticación de mensajes) seguros
En el mismo archivo de configuración, añadir:
MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com
¿Cómo implementar Monitoreo y Registro?
- Supervisar los registros SSH en busca de actividad sospechosa.
- Configurar alertas para intentos de acceso fallidos.
Ejemplo de monitoreo
Supervisar los registros SSH en busca de actividad sospechosa.
sudo nano /etc/ssh/sshd_config
Añadir:
LogLevel VERBOSE
2. Crear un script para analizar los registros
#!/bin/bash
grep "Failed password" /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -nr
Configurar alertas para intentos de acceso fallidos
1. Instalar fail2ban
sudo apt-get install fail2ban
2. Configurar fail2ban para SSH
sudo nano /etc/fail2ban/jail.local
Añadir:
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 3600
3. Reiniciar fail2ban
sudo systemctl restart fail2ban
¿Cómo mejorar la Seguridad del Firewall?
- Configurar el firewall para limitar los intentos de conexión fallidos.
- Utilizar una VPN en combinación con el túnel SSH para mayor seguridad.
Ejemplo de Configuración del Firewall
Configurar el firewall para limitar los intentos de conexión fallidos
Usando iptables
sudo iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set
sudo iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 -j DROP
Utilizar una VPN en combinación con el túnel SSH
Configurar un servidor OpenVPN:
sudo apt-get install openvpn
Generar certificados y claves:
./easyrsa init-pki
./easyrsa build-ca
./easyrsa gen-req server nopass
./easyrsa sign-req server server
./easyrsa gen-dh
Configurar OpenVPN:
sudo nano /etc/openvpn/server.conf
Configurar el cliente para usar la VPN antes de conectarse por SSH
openvpn --config client.ovpn
ssh usuario@ip_servidor_vpn
¿Cómo evitar el Robo de las Claves?
Es importante rotar periódicamente las claves SSH e implementar una política de gestión de claves segura en toda la organización.
Estas medidas, combinadas con las prácticas básicas de seguridad SSH, pueden mejorar significativamente la protección de los túneles SSH contra posibles amenazas y ataques.
