¿Cómo Aplicar Seguridad y Protección Extra a un Túnel SSH?

Lazy Placeholder

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.