Flujo de Login y Mensajes
Linux permite personalizar varios mensajes que aparecen durante el proceso de autenticación. Cada uno se muestra en un momento diferente y sirve un propósito distinto.
Los 3 Archivos Clave
Banner /etc/issue.net en sshd_config. Ideal para advertencias legales./etc/issue — Banner Pre-Login (Consola)
Este mensaje se presenta al solicitar los datos de autenticación cuando se accede directamente desde una terminal física al sistema.
sudo nano /etc/issue
Códigos de escape disponibles
El archivo /etc/issue soporta códigos de escape especiales: una barra inversa \ seguida de una letra.
| Código | Muestra |
|---|---|
| \b | Velocidad en baudios de la línea actual. |
| \d | Fecha actual. |
| \t | Hora actual. |
| \s | Nombre del sistema operativo. |
| \l | Nombre de la línea TTY actual. |
| \m | Arquitectura de la máquina (ej. x86_64). |
| \n | Nombre de host (hostname). |
| \o | Nombre de dominio del equipo. |
| \r | Versión del kernel (ej. 6.5.0). |
| \u | Número de usuarios actualmente logueados (solo el número). |
| \U | Cadena completa «N usuario(s) logueados». |
| \v | Versión del SO (fecha de compilación, etc.). |
| \4 | Dirección IP de la máquina. |
| \4{eth0} | Solo la IP de la interfaz eth0 (si hay varias). |
man getty muestra la referencia completa de los códigos de escape admitidos en tu sistema./etc/issue.net — Banner SSH/Telnet
Cumple una función similar a /etc/issue, pero se muestra cuando un usuario intenta conectarse al servidor de forma remota a través de SSH o Telnet, antes de que se solicite la autenticación.
- Cuándo se muestra: Antes del prompt de usuario del servicio SSH.
- Códigos de escape: Soporta los mismos que
/etc/issue(\r, \m, \4, etc.). - Uso recomendado: Advertencias legales de acceso, logo del sistema, información de contacto.
sudo nano /etc/issue.net
Ejemplo de contenido
FEVAL SERVER ----------------------------------- ACCESO RESTRINGIDO - SERVIDOR PRIVADO USER: feval =================================== \S Kernel \r en \m IP: \4 Hostname: \n Fecha: \d Hora: \t Usuarios Logueados: \u
/etc/issue.net se muestre al conectar por SSH, hay que añadir la línea Banner /etc/issue.net en /etc/ssh/sshd_config y reiniciar el servicio SSH con sudo systemctl restart sshd./etc/motd — Message of the Day
El MOTD es probablemente el más útil para la personalización. Se muestra al usuario después de que inicia sesión correctamente, tanto en consola como por SSH.
A diferencia de /etc/issue, el MOTD puede ser dinámico a través de scripts en /etc/update-motd.d/.
Crear un script de MOTD dinámico
sudo nano /etc/update-motd.d/90-custom-message
#!/bin/bash
echo "============================================================"
echo "¡BIENVENIDO AL SERVIDOR, ${USER}!"
echo "El uso actual del disco en / es: $(df -h / | awk 'NR==2 {print $5}')"
echo "Último inicio de sesión: $(last -1 | grep -v 'wtmp' | awk '{print $4, $5, $6}')"
echo "============================================================"
sudo chmod +x /etc/update-motd.d/90-custom-message
/etc/update-motd.d/ se ejecutan en orden numérico ascendente. Usa prefijos como 00-, 10-, 90- para controlar el orden. Los números bajos se ejecutan primero.Arte ASCII con figlet y lolcat
La forma más fácil de generar texto en arte ASCII es usando figlet y, opcionalmente, lolcat para darle color arcoíris.
sudo apt install figlet lolcat
echo "FEVAL SERVER" | figlet
# En dos líneas (más compacto):
echo -e "FEVAL\nSERVER" | figlet
_____ _____ __ _ _ ____ _____ ____ _ _____ ____ | ___|| ___| \ \ / / / \ | __|| ___| __ )| | | ____| _ \ | |_ | |_ \ \ / / / _ \ | | | |_ | _ \| | | _| | |_) | | _| | _| \ V / / ___ \ | | | _| | |_) | |___| |___| _ < |_| |___| \_/ /_/ \_\|_| |___| |____/|_____|_____|_| \_\
printf "FEVAL\nSERVER\n" | figlet -f slant | lolcat
____ _ _________ __ / __/ | | / / ____/ //_ / _/ | | / / __/ / ,< / /___ | |/ / /___/ /| | /_____/ |___/_____/_/ |_| _____ _____ ____ _ _____ ____ / ___// __// __ \| | / ___/ / __ \ \__ \ | |_ | |_) | | / / / / / / ___/ /| _| | _ <| |/ /__ / /_/ / /____/ |___| |_| \_\___\____/_____/
/usr/share/figlet/. Prueba con figlet -f big, -f banner, -f block, -f lean etc. Lista todas con showfigfonts si lo instalas con apt install figlet-doc.Insertar ASCII Art en /etc/issue
Como /etc/issue no soporta color (solo se ve en consola), usamos solo la salida de figlet sin lolcat. El proceso es en tres pasos.
/etc/update-motd.d/ donde lolcat sí funciona.# Sin lolcat — /etc/issue no soporta color
printf "FEVAL\nSERVER\n" | figlet -f slant > /tmp/temp_header.txt
# Fusionar: nuevo header + contenido original cat /tmp/temp_header.txt /etc/issue > /tmp/temp_issue_merged.txt # Mover el resultado al archivo original (requiere sudo) sudo mv /tmp/temp_issue_merged.txt /etc/issue
rm /tmp/temp_header.txt
Script Dinámico — Regenerar en Cada Arranque
Para que /etc/issue muestre datos actualizados (como la IP actual) en cada arranque, crea un script que lo regenere automáticamente via /etc/rc.local o un servicio systemd.
#!/bin/bash
echo "======================================" > /etc/issue
echo " SERVER - ACCESO RESTRINGIDO" >> /etc/issue
echo " IP: $(hostname -I | awk '{print $1}')" >> /etc/issue
echo " Interfaz de red: $(hostname)" >> /etc/issue
echo "=====================================" >> /etc/issue
uname -a >> /etc/issue
> y >>: La primera línea usa > para crear/sobreescribir el archivo desde cero. Las siguientes usan >> para añadir al final. Si todas usaran >>, cada arranque acumularía más líneas sin borrar las anteriores.oneshot con After=network.target para que el script se ejecute justo después de que la red esté disponible, garantizando que la IP ya está asignada cuando se escribe en /etc/issue.Configurar el Firewall para Telnet (Puerto 23)
Si el firewall UFW está activo, bloqueará el puerto 23 (Telnet) por defecto. Para permitir conexiones Telnet hay que abrirlo explícitamente.
# Abrir el puerto 23 para Telnet sudo ufw allow 23/tcp # Verificar que la regla se aplicó sudo ufw status