Configurar OpenSSH en Kali Linux
Configurar OpenSSH en Kali Linux
Configurar y habilitar OpenSSH en Kali Linux es un proceso directo, pero esencial para poder administrar tu máquina de forma remota de manera segura.
Aquí tienes los pasos para instalarlo, configurarlo y asegurarte de que persista después de reiniciar.
1. Instalación y Activación
Kali Linux suele traer OpenSSH preinstalado, pero no siempre está activo por razones de seguridad.
Actualiza tus repositorios:
sudo apt updateInstala el servidor (si no lo tienes):
sudo apt install openssh-serverInicia el servicio:
sudo systemctl start sshVerifica el estado:
sudo systemctl status ssh
2. Configuración de Seguridad (Opcional pero recomendado)
Es buena práctica cambiar algunas configuraciones por defecto en el archivo /etc/ssh/sshd_config.
Permitir el acceso al usuario root: Por defecto, Kali bloquea el acceso root vía SSH. Si lo necesitas (aunque es más seguro usar un usuario normal), busca la línea
PermitRootLoginy cámbiala ayes.Cambiar el puerto: Para evitar ataques automatizados, puedes cambiar el puerto
22por uno personalizado (ej.2222).
Después de cualquier cambio, reinicia el servicio:
sudo systemctl restart ssh
3. Persistencia del Servicio
Si quieres que SSH se inicie automáticamente cada vez que enciendas tu computadora, ejecuta:
sudo systemctl enable ssh
4. Firewall (UFW)
Si tienes el firewall activo, debes permitir el tráfico a través del puerto de SSH:
sudo ufw allow ssh
(O el número de puerto que hayas configurado).
Resumen de comandos útiles:
| Acción | Comando |
| Iniciar | sudo systemctl start ssh |
| Detener | sudo systemctl stop ssh |
| Estado | sudo systemctl status ssh |
| Auto-inicio | sudo systemctl enable ssh |
Usar llaves SSH es mucho más seguro que usar contraseñas, ya que las llaves son prácticamente imposibles de adivinar mediante ataques de fuerza bruta.
Aquí tienes los pasos para generar tus llaves y configurarlas en Kali Linux:
1. Generar el par de llaves
Ejecuta el siguiente comando en tu terminal (puedes hacerlo desde tu máquina principal para conectar a Kali, o en Kali para conectar a otros sitios):
ssh-keygen -t ed25519 -C "tu_email@ejemplo.com"
¿Por qué Ed25519? Es el algoritmo más moderno, rápido y seguro actualmente.
Passphrase: Te preguntará si quieres añadir una contraseña a la llave. Es opcional, pero añade una capa extra de seguridad por si alguien roba tu archivo de llave.
2. ¿Dónde están mis llaves?
El comando creará dos archivos en la carpeta oculta ~/.ssh/:
id_ed25519(Llave privada): ¡Nunca compartas este archivo! Es como tu llave física de casa.id_ed25519.pub(Llave pública): Esta es la que instalas en el servidor al que te quieres conectar.
3. Copiar la llave pública a tu servidor Kali
Si quieres entrar a tu máquina Kali desde otra computadora (por ejemplo, desde Windows o macOS), usa este comando desde esa otra computadora:
ssh-copy-id usuario@ip_de_tu_kali
Si el comando anterior no está disponible, simplemente copia el contenido de tu .pub y pégalo dentro del archivo ~/.ssh/authorized_keys en tu máquina Kali.
4. Desactivar las contraseñas (Nivel Pro)
Una vez que hayas verificado que puedes entrar con tu llave, puedes prohibir el acceso por contraseña para que nadie pueda intentar hackearte.
Edita el archivo de configuración:
sudo nano /etc/ssh/sshd_configBusca la línea:
PasswordAuthenticationCámbiala a:
PasswordAuthentication noReinicia el servicio:
sudo systemctl restart ssh
Un pequeño tip: Si vas a usar esto frecuentemente, te recomiendo configurar un "alias" en tu archivo ~/.ssh/config para no tener que escribir la IP cada vez.
Configurar un archivo de configuración (config) te permitirá conectar a tu servidor Kali escribiendo simplemente algo como ssh kali en lugar de recordar IPs largas y nombres de usuario.
Aquí te explico cómo hacerlo:
1. Crear o editar el archivo config
En tu máquina principal (desde la que te vas a conectar), abre o crea el archivo de configuración de SSH:
nano ~/.ssh/config
2. Añadir la configuración del host
Pega el siguiente bloque de texto, adaptándolo a tus datos:
Host kali
HostName 192.168.1.XX # La IP de tu máquina Kali
User tu_usuario # Tu nombre de usuario en Kali
Port 22 # El puerto (cámbialo si lo editaste antes)
IdentityFile ~/.ssh/id_ed25519
3. ¡Conectar al instante!
Ahora, en lugar de escribir ssh usuario@192.168.1.XX, solo tienes que poner:
ssh kali
Un extra de seguridad: El "Banner" de bienvenida
Si quieres darle un toque profesional (o intimidatorio) a tu servidor, puedes configurar un mensaje que aparezca justo antes de loguearte.
Crea un archivo de texto:
sudo nano /etc/ssh/welcome_bannerEscribe algo como:
"Acceso restringido. Solo personal autorizado."En tu
/etc/ssh/sshd_config, busca la línea#Banner none, quita el#y pon:Banner /etc/ssh/welcome_bannerReinicia:
sudo systemctl restart ssh
Para monitorear quién intenta entrar en tu servidor Kali en tiempo real, no necesitas instalar herramientas complejas; Linux ya registra todos estos intentos en archivos de log.
Podemos crear un pequeño "script de vigilancia" que filtre esos datos y te los muestre de forma amigable.
1. El archivo de registros (Auth Log)
En Kali (y en la mayoría de distros basadas en Debian), los intentos de inicio de sesión se guardan en /var/log/auth.log.
2. Script de Monitoreo en Tiempo Real
Copia y pega este comando en tu terminal para ver los intentos fallidos y exitosos conforme ocurren:
sudo tail -f /var/log/auth.log | grep --line-buffered -E "ssh|Accepted|Failed|Invalid"
tail -f: Mantiene el archivo abierto y te muestra las líneas nuevas en cuanto se escriben.grep: Filtra solo las líneas que contienen palabras clave como "ssh", "Accepted" (éxito) o "Failed" (fallo).
3. Crear un comando personalizado (Script)
Si quieres tener esto a mano siempre, vamos a convertirlo en un script ejecutable:
Crea el archivo:
nano ~/monitor_ssh.shPega este contenido:
Bash#!/bin/bash echo "--- Monitoreando intentos de SSH en tiempo real ---" sudo tail -f /var/log/auth.log | awk '/sshd/ && /Failed|Accepted/ {print $1, $2, $3, $9, $11}'(El comando
awkaquí sirve para limpiar la salida y mostrar solo la fecha, el usuario y la IP).Dale permisos:
chmod +x ~/monitor_ssh.shEjecútalo cuando quieras:
./monitor_ssh.sh
4. ¿Qué hacer si ves muchos ataques?
Si notas que muchas IPs desconocidas intentan entrar (ataques de fuerza bruta), te recomiendo instalar Fail2Ban. Esta herramienta banea automáticamente la IP de cualquier persona que falle la contraseña más de 3 veces.
Para instalarlo:
sudo apt install fail2ban
El servicio empezará a trabajar de inmediato con una configuración básica muy efectiva.
Instalar Fail2Ban es como poner un guardia de seguridad en la puerta de tu servidor SSH. Si alguien se equivoca de contraseña varias veces (ataque de fuerza bruta), Fail2Ban bloquea su dirección IP a nivel de firewall (iptables/nftables) por un tiempo determinado.
Aquí tienes los pasos para dejarlo listo en Kali Linux:
1. Instalación
Primero, asegúrate de tener la herramienta instalada:
sudo apt update && sudo apt install fail2ban -y
2. Configuración (Crear el archivo "Jail")
Fail2Ban viene con un archivo de configuración por defecto, pero lo correcto es crear una copia local llamada jail.local para que tus cambios no se borren con futuras actualizaciones.
Crea el archivo:
sudo nano /etc/fail2ban/jail.localPega este contenido básico y efectivo:
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 1h
findtime = 10m
3. ¿Qué significan estos valores?
maxretry = 3: A los 3 intentos fallidos, la IP queda bloqueada.findtime = 10m: Los 3 fallos deben ocurrir dentro de una ventana de 10 minutos.bantime = 1h: La IP no podrá intentar conectar de nuevo durante 1 hora (puedes subirlo a24hsi quieres ser más estricto).
4. Activar el servicio
Guarda el archivo (Ctrl+O, Enter, Ctrl+X) y reinicia el servicio para que lea la nueva configuración:
sudo systemctl restart fail2ban
sudo systemctl enable fail2ban
5. Comandos de control (Útiles para el administrador)
| Objetivo | Comando |
| Ver el estado de SSH | sudo fail2ban-client status sshd |
| Ver IPs baneadas actualmente | sudo fail2ban-client get sshd banned |
| Desbanear una IP (si te bloqueas a ti mismo) | sudo fail2ban-client set sshd unbanip TU_IP |
Tip de experto: "Whitelist"
Para evitar quedarte fuera de tu propio servidor si te equivocas de contraseña, añade tu IP de confianza a la lista blanca.
En el mismo archivo /etc/fail2ban/jail.local, busca o añade la línea:
ignoreip = 127.0.0.1/8 ::1 192.168.1.XX (Cambia la última por tu IP real).
Para ver qué tan efectivo está siendo tu "guardia de seguridad", podemos usar un comando que consulta directamente la base de datos de Fail2Ban. Esto te mostrará un resumen de cuántas IPs han intentado atacar tu Kali y cuántas han sido enviadas "a la cárcel".
1. El reporte rápido
Ejecuta este comando para ver las estadísticas actuales del módulo SSH:
sudo fail2ban-client status sshd
Esto te devolverá algo como:
Currently failed: Intentos fallidos en este momento.
Total failed: Total de intentos desde que iniciaste el servicio.
File list: La lista de IPs que están bloqueadas ahora mismo.
2. Reporte histórico (Base de datos)
Si quieres ver el acumulado histórico (incluso de IPs que ya cumplieron su tiempo de baneo y salieron), usa este comando:
sudo sqlite3 /var/lib/fail2ban/fail2ban.sqlite3 "SELECT ip, count(*) FROM logs GROUP BY ip ORDER BY count(*) DESC;"
Nota: Si no tienes
sqlite3instalado, puedes ponerlo rápido consudo apt install sqlite3.
3. Ver el log "en vivo"
Si prefieres ver el momento exacto en el que Fail2Ban detecta un ataque y aplica el baneo, puedes seguir su archivo de registro:
sudo tail -f /var/log/fail2ban.log
Verás líneas que dicen [sshd] Ban 192.168.x.x cuando alguien sea bloqueado. Es bastante satisfactorio ver cómo el sistema se defiende solo.
Resumen de tu Fortaleza SSH
A estas alturas, tu máquina Kali tiene:
OpenSSH activo y configurado.
Llaves SSH (mucho más seguras que contraseñas).
Acceso rápido mediante un alias (
ssh kali).Monitoreo en tiempo real.
Fail2Ban bloqueando intrusos automáticamente.
Esta es la técnica de "seguridad por oscuridad". Aunque no hace al sistema invulnerable, elimina el 99% del ruido de los bots de internet que escanean automáticamente el puerto 22 buscando víctimas fáciles.
Aquí tienes cómo cambiarlo paso a paso:
1. Elegir un nuevo puerto
Puedes elegir cualquier número entre 1024 y 65535. Por ejemplo, usaremos el 4422.
2. Editar la configuración de SSH
Abre el archivo de configuración del servidor:
sudo nano /etc/ssh/sshd_config
Busca la línea que dice #Port 22. Quita el símbolo # y cambia el número:
Port 4422
3. Actualizar el Firewall (UFW)
Si tienes el firewall activo, debes permitir el nuevo puerto antes de reiniciar SSH, o te quedarás fuera de tu propia máquina:
Permitir el nuevo:
sudo ufw allow 4422/tcpBorrar el viejo (opcional):
sudo ufw delete allow 22/tcp
4. Actualizar Fail2Ban
Como cambiamos el puerto del sistema, Fail2Ban necesita saber dónde vigilar ahora.
Edita tu archivo:
sudo nano /etc/fail2ban/jail.localEn la sección
[sshd], cambiaport = sshporport = 4422.Guarda y sal.
5. Reiniciar los servicios
Aplica todos los cambios:
sudo systemctl restart ssh
sudo systemctl restart fail2ban
6. Cómo conectar ahora
A partir de ahora, el comando normal de SSH fallará. Debes especificar el puerto con el parámetro -p:
ssh -p 4422 usuario@tu_ip
Si configuraste el archivo ~/.ssh/config anteriormente:
Solo tienes que editarlo (nano ~/.ssh/config) y cambiar la línea Port 22 por Port 4422. ¡Y listo! Seguirás conectando solo con ssh kali.
Verificación final
Para asegurarte de que SSH está escuchando en el puerto correcto, usa:
sudo ss -tulpn | grep ssh
Deberías ver algo como 0.0.0.0:4422.
Esto es muy útil para saber al instante si alguien (incluyéndote a ti) ha accedido a tu máquina. Vamos a configurar un script que se ejecute automáticamente cada vez que alguien inicie una sesión SSH y envíe una notificación visual al escritorio de Kali.
1. El script de notificación
Primero, crearemos un pequeño script que capture el usuario y la IP de quien se conecta.
Crea el archivo:
sudo nano /usr/local/bin/ssh_alert.shPega este contenido:
#!/bin/bash
# Esperar un segundo para que la sesión se establezca
sleep 1
# Obtener datos de la conexión
USER=$(whoami)
IP=$(echo $SSH_CLIENT | awk '{print $1}')
DATE=$(date '+%H:%M:%S')
# Enviar la notificación al escritorio de Kali
# Nota: sudo -u es necesario para mostrar la alerta en la sesión del usuario actual
DISPLAY=:0 sudo -u $(stat -c "%U" /dev/tty1) notify-send "🔑 SSH Login Detectado" "Usuario: $USER \nIP: $IP \nHora: $DATE" --icon=dialog-information
Dale permisos de ejecución:
sudo chmod +x /usr/local/bin/ssh_alert.sh
2. Configurar el disparador (PAM)
Para que el script se ejecute automáticamente al entrar, usaremos PAM (Pluggable Authentication Modules), que gestiona las sesiones en Linux.
Edita el archivo de sesión de SSH:
sudo nano /etc/pam.d/sshdAñade esta línea al final del archivo:
session optional pam_exec.so /usr/local/bin/ssh_alert.sh
3. ¡Prueba tu alerta!
Cierra tu sesión SSH actual y vuelve a entrar. En la pantalla de tu Kali Linux (si tienes el monitor encendido o estás en una máquina virtual), deberías ver aparecer una ventana emergente en la esquina superior derecha avisándote de la entrada.
Nota: Para que esto funcione, debes tener una sesión gráfica iniciada en Kali (el escritorio XFCE por defecto).
Resumen de tu blindaje hasta ahora:
| Capa de Seguridad | Estado |
| Acceso por Llaves | ✅ Activo (Sin contraseñas) |
| Puerto Personalizado | ✅ Activo (Puerto 4422) |
| Fail2Ban | ✅ Protegiendo contra fuerza bruta |
| Alertas Visuales | ✅ Notificaciones en escritorio |
¡Felicidades! Tienes un servidor SSH configurado con estándares de seguridad profesionales.
Para cerrar con broche de oro tu configuración, vamos a programar una "tarea cron" (un proceso automático) que cada domingo a medianoche genere un pequeño reporte de seguridad.
Este informe leerá la base de datos de Fail2Ban y te dirá exactamente cuántas veces te atacaron y desde qué países o IPs.
1. Crear el script del reporte
Primero, crearemos el script que extrae la información y la guarda en un archivo de texto en tu carpeta personal.
Crea el archivo:
nano ~/reporte_ssh_semanal.shPega este código:
#!/bin/bash
# Carpeta de destino
REPORTE="$HOME/reportes_seguridad/reporte_$(date +%Y-%m-%d).txt"
mkdir -p "$HOME/reportes_seguridad"
echo "==========================================" > "$REPORTE"
echo " REPORTE SEMANAL DE SEGURIDAD SSH " >> "$REPORTE"
echo " Generado el: $(date) " >> "$REPORTE"
echo "==========================================" >> "$REPORTE"
echo "" >> "$REPORTE"
echo "--- Resumen de Fail2Ban (TOP IPs Baneadas) ---" >> "$REPORTE"
sudo sqlite3 /var/lib/fail2ban/fail2ban.sqlite3 "SELECT ip, count(*) as ataques FROM logs GROUP BY ip ORDER BY ataques DESC LIMIT 10;" >> "$REPORTE"
echo "" >> "$REPORTE"
echo "--- Últimos 5 accesos exitosos (SSH) ---" >> "$REPORTE"
last -n 5 -i | grep "pts/" >> "$REPORTE"
echo "Reporte generado en: $REPORTE"
Dale permisos:
chmod +x ~/reporte_ssh_semanal.sh
2. Programar la automatización (Crontab)
Ahora le diremos a Kali que ejecute este script todos los domingos a las 23:59.
Abre el editor de tareas:
crontab -e(Si te pregunta qué editor usar, elige
nano).Ve al final del archivo y pega esta línea:
59 23 * * 0 /home/tu_usuario/reporte_ssh_semanal.sh(Asegúrate de cambiar
tu_usuariopor tu nombre de usuario real en Kali).
3. ¿Cómo leer tus reportes?
Cada semana se creará un archivo nuevo. Podrás ver la lista de tus reportes con:
ls ~/reportes_seguridad
Y leer el más reciente con:
cat ~/reportes_seguridad/reporte_$(date +%Y-%m-%d).txt
Estado final de tu Kali 🛡️
| Característica | Beneficio |
| Fail2Ban | Bloqueo automático de atacantes. |
| Puerto 4422 | Invisible para el 90% de los bots. |
| Llaves SSH | Imposible de entrar por fuerza bruta. |
| Notificaciones | Sabes al instante si alguien entra. |
| Reportes | Tienes un historial de quién intentó entrar. |
¡Has pasado de una configuración básica a un entorno de servidor SSH altamente endurecido!