Configurar OpenSSH en Kali Linux

https://www.onlinetis.com/es/

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.

  1. Actualiza tus repositorios:

    sudo apt update

  2. Instala el servidor (si no lo tienes):

    sudo apt install openssh-server

  3. Inicia el servicio:

    sudo systemctl start ssh

  4. Verifica 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 PermitRootLogin y cámbiala a yes.

  • Cambiar el puerto: Para evitar ataques automatizados, puedes cambiar el puerto 22 por 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ónComando
Iniciarsudo systemctl start ssh
Detenersudo systemctl stop ssh
Estadosudo systemctl status ssh
Auto-iniciosudo 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/:

  1. id_ed25519 (Llave privada): ¡Nunca compartas este archivo! Es como tu llave física de casa.

  2. 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.

  1. Edita el archivo de configuración: sudo nano /etc/ssh/sshd_config

  2. Busca la línea: PasswordAuthentication

  3. Cámbiala a: PasswordAuthentication no

  4. Reinicia 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:

Bash
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.

  1. Crea un archivo de texto: sudo nano /etc/ssh/welcome_banner

  2. Escribe algo como: "Acceso restringido. Solo personal autorizado."

  3. En tu /etc/ssh/sshd_config, busca la línea #Banner none, quita el # y pon: Banner /etc/ssh/welcome_banner

  4. Reinicia: 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:

Bash
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:

  1. Crea el archivo: nano ~/monitor_ssh.sh

  2. Pega 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 awk aquí sirve para limpiar la salida y mostrar solo la fecha, el usuario y la IP).

  3. Dale permisos: chmod +x ~/monitor_ssh.sh

  4. Ejecú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.

  1. Crea el archivo: sudo nano /etc/fail2ban/jail.local

  2. Pega este contenido básico y efectivo:

Ini, TOML
[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 a 24h si 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)

ObjetivoComando
Ver el estado de SSHsudo fail2ban-client status sshd
Ver IPs baneadas actualmentesudo 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 sqlite3 instalado, puedes ponerlo rápido con sudo 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:

  1. OpenSSH activo y configurado.

  2. Llaves SSH (mucho más seguras que contraseñas).

  3. Acceso rápido mediante un alias (ssh kali).

  4. Monitoreo en tiempo real.

  5. 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:

Plaintext
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:

  1. Permitir el nuevo: sudo ufw allow 4422/tcp

  2. Borrar 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.

  1. Edita tu archivo: sudo nano /etc/fail2ban/jail.local

  2. En la sección [sshd], cambia port = ssh por port = 4422.

  3. 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.

  1. Crea el archivo: sudo nano /usr/local/bin/ssh_alert.sh

  2. Pega este contenido:

Bash
#!/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
  1. 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.

  1. Edita el archivo de sesión de SSH:

    sudo nano /etc/pam.d/sshd

  2. Añ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 SeguridadEstado
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.

  1. Crea el archivo: nano ~/reporte_ssh_semanal.sh

  2. Pega este código:

Bash
#!/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"
  1. 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.

  1. Abre el editor de tareas: crontab -e

    (Si te pregunta qué editor usar, elige nano).

  2. 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_usuario por 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ísticaBeneficio
Fail2BanBloqueo automático de atacantes.
Puerto 4422Invisible para el 90% de los bots.
Llaves SSHImposible de entrar por fuerza bruta.
NotificacionesSabes al instante si alguien entra.
ReportesTienes un historial de quién intentó entrar.

¡Has pasado de una configuración básica a un entorno de servidor SSH altamente endurecido!

Entradas populares de este blog

Hacking y ciberseguridad en kali linux con Fping

Hacking y ciberseguridad en kali linux con atk6-thcping6

Como utilizar Fierce en kali linux