Debian 12: Instalación del Servidor
El Corazón de la Bestia
Tras El Eclipse Digital, cada nodo reactivado es una chispa de orden en medio del caos. El primer paso: levantar un servidor funcional y establecer una conexión remota segura.
El sistema elegido es Debian 12, estable, conocido, resiliente. Un pilar fiable para reconstruir servicios esenciales.
La terminal será la interfaz clave: texto puro, sin distracciones. Cada comando ejecutado no solo configura una máquina, sino que restablece un fragmento del mundo anterior.
Es hora de comenzar la secuencia de inicialización.
root@1-bytepath~# apt update
root@1-bytepath~# apt upgrade -y
Asignación de Identidad y Ubicación
Es momento de definir un hostname, el identificador único del sistema dentro de la red, y configurar una IP estática para garantizar su localización constante.
Estos parámetros actúan como las coordenadas permanentes de un nodo: permiten que otros sistemas puedan detectarlo, comunicarse con él y mantener su rol dentro de la infraestructura.
root@1-bytepath~# nano /etc/hostname
root@1-bytepath~# hostname
1-bytepath
root@1-bytepath~# nano /etc/network/interfaces
root@1-bytepath~# # This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
allow-hotplug enp3s0
iface enp3s0 inet static
address 192.168.8.150
netmask 255.255.255.0
gateway 192.168.8.1
dns-nameservers 192.168.8.1
root@1-bytepath~# ping 192.168.8.1
PING 192.168.8.1 (192.168.8.1) 56(84) bytes of data.
64 bytes from 192.168.8.1: icmp_seq=1 ttl=64 time=0.421 ms
64 bytes from 192.168.8.1: icmp_seq=2 ttl=64 time=0.700 ms
64 bytes from 192.168.8.1: icmp_seq=3 ttl=64 time=0.699 ms
64 bytes from 192.168.8.1: icmp_seq=4 ttl=64 time=0.703 ms
^C
--- 192.168.8.1 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3073ms
rtt min/avg/max/mdev = 0.421/0.630/0.703/0.121 ms
Elevación de Privilegios: Acceso Administrativo
Para intervenir con libertad total sobre el sistema, Lara y Amin deben habilitar los permisos administrativos. En un entorno donde cada cambio puede afectar al núcleo del servidor, el control granular es esencial.
— Si algo va mal, necesitaremos intervenir al instante —murmura Lara, revisando su terminal—. No podemos depender de una cuenta root aislada.
Amin asiente. El primer paso es instalar sudo, una herramienta que permite ejecutar comandos con privilegios de superusuario desde una cuenta estándar. De este modo, pueden mantener seguridad y flexibilidad.
Una vez instalada, debe añadirse su usuario al grupo correspondiente. Es una operación sencilla, pero marca un punto de no retorno: a partir de aquí, las decisiones tendrán el poder de reconstruir... o colapsar el sistema.
root@1-bytepath~# apt install sudo
root@1-bytepath~# usermod -aG sudo amin
root@1-bytepath~# reboot
amin@1-bytepath:~$
amin@1-bytepath:~$ id amin
uid=1000(amin) gid=1000(amin) grupos=1000(amin),24(cdrom),25(floppy),27(sudo),29(audio),30(dip),33(www-data),44(video),46(plugdev),100(users),106(netdev)
Habilitando el Acceso Seguro: Configuración del Canal SSH
Con el sistema operativo en funcionamiento y la red local estabilizada, el siguiente paso es establecer un método seguro de acceso remoto. Lara y Amin saben que dejar la puerta abierta sin protección no es una opción.
— Podríamos usar contraseñas, pero... ya sabes lo fácil que es capturar una si no hay cifrado —dice Amin, tecleando sin levantar la vista.
— Por eso usaremos SSH con autenticación por clave pública. Nadie cruza sin tener la llave correcta —responde Lara, mientras prepara el archivo de configuración.
OpenSSH es el protocolo estándar para conexiones remotas seguras. Al instalar y activar su servicio, el servidor aceptará conexiones cifradas, evitando que credenciales o comandos sean interceptados.
La autenticación por clave añade una capa crítica de seguridad. En lugar de depender únicamente de contraseñas, el acceso se controla mediante un par de claves: una pública que se copia al servidor y una privada que permanece en el equipo del administrador.
Es el momento de instalar el servicio y preparar el primer acceso cifrado. A partir de aquí, el servidor podrá ser controlado de forma remota con confidencialidad e integridad garantizadas.
amin@1-bytepath:~$ sudo apt install openssh-server
amin@1-bytepath:~$
amin@1-bytepath:~$ sudo systemctl status sshd
[sudo] contraseña para amin:
● ssh.service - OpenBSD Secure Shell server
Loaded: loaded (/lib/systemd/system/ssh.service; enabled; preset: enabled)
Active: active (running) since Sun 2025-06-08 21:25:39 CEST; 55min ago
Docs: man:sshd(8)
man:sshd_config(5)
Process: 480 ExecStartPre=/usr/sbin/sshd -t (code=exited, status=0/SUCCESS)
Main PID: 506 (sshd)
Tasks: 1 (limit: 4421)
Memory: 12.5M
CPU: 582ms
CGroup: /system.slice/ssh.service
└─506 "sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups"
jun 08 21:25:39 1-bytepath sshd[506]: Server listening on :: port 22.
jun 08 21:25:39 1-bytepath systemd[1]: Started ssh.service - OpenBSD Secure Shell server.
La Primera Conexión: Verificando el Canal
Con el servicio SSH instalado y activo, ha llegado el momento de comprobar que la puerta remota responde. Esta primera conexión, aunque temporalmente basada en contraseña, es crucial para validar que el canal está operativo y que el servidor escucha desde su nuevo puesto en la red.
Lara abre su terminal desde un nodo cercano. Teclea el comando, introduce las credenciales de Amin y aguarda una fracción de segundo: una breve pausa cargada de tensión.
— Si entra, es que la red, el demonio SSH y el firewall están alineados —murmura Amin, siguiendo la salida de la terminal con atención.
Una conexión exitosa no solo confirma que la máquina es accesible, sino que allana el camino para el próximo paso: la implementación de autenticación por clave pública, más robusta y resistente a ataques.
Por ahora, este enlace es funcional… pero temporal. Es solo un puente provisional hacia un acceso verdaderamente seguro.
lara@kali:~$ ssh amin@192.168.8.150
lara@kali:~$ The authenticity of host '192.168.8.156 (192.168.8.156)' can't be established.
ED25519 key fingerprint is SHA256:iK3eMxXpXVC/E6/23Whpschi06qHs2w4LR0ZXGbq/eQ.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])?yes
Warning: Permanently added '192.168.8.101' (ED25519) to the list of known hosts.
amin@192.168.8.101's password:
Linux debian 6.1.0-37-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.140-1 (2025-05-22) x86_64
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Mon Jun 9 16:59:42 2025
amin@1-bytepath:~$
Una ráfaga de texto en la pantalla confirma el éxito. La conexión se establece, y la visión de la terminal de Amin se proyecta ante los ojos de Lara. El camino remoto está abierto.
Forja de Claves: Cerraduras Cuánticas para Puertas Digitales
La conexión por contraseña había funcionado, sí. Pero para Lara, aquello era apenas una prueba de vida, no una solución duradera. Las contraseñas, incluso las complejas, eran residuos de una era más frágil.
Sentada frente a su terminal, ejecutó con precisión el comando que generaría su firma criptográfica: un par de claves ED25519. Este algoritmo moderno, eficiente y resistente incluso ante ataques cuánticos teóricos, sería el nuevo candado que sellaría el acceso remoto.
— Nada que se recuerde debería proteger un sistema —dijo en voz baja, mientras el cursor parpadeaba al compás de la generación de la clave.
Amin asintió, sabiendo que lo que estaban construyendo no era solo un servidor, sino una frontera segura. Una vez instalada la clave pública en su máquina, cerraría la puerta antigua de las contraseñas. Para siempre.
Ahora es tu turno. Sigue los pasos de Lara y genera tus propias llaves criptográficas. A partir de aquí, solo las firmas irrefutables abrirán las compuertas de tu sistema.
┌──(lara㉿kali)-[~]
└─$ ssh-keygen -t ed25519 -C "lara@example.com"
Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/lara/.ssh/id_ed25519):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/lara/.ssh/id_ed25519
Your public key has been saved in /home/lara/.ssh/id_ed25519.pub
The key's randomart image is:
+--[ED25519 256]--+
| .o. |
| . o |
| . + . . |
| . + = + o |
| . o + S . |
| . = . . |
| o * . |
| . + E |
| . . |
+----[SHA256]-----+
┌──(lara㉿kali)-[~]
└─$ ssh-copy-id amin@192.168.8.101
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/lara/.ssh/id_ed25519.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the key(s)
amin@192.168.8.101's password:
Number of key(s) added: 1
Now try logging in to the machine, with: "ssh 'amin@192.168.8.101'"
and check to make sure that only the key(s) you wanted were added.
Con la clave pública de Lara instalada en el servidor de Amin, solo quedaba confirmar su funcionamiento real.
Desde su terminal, ejecutó la conexión. Esta vez, no hubo petición de contraseña. Solo un instante de espera, y luego, la aparición limpia del prompt remoto: estaban dentro.
— Funcionó —dijo Amin, observando el registro del sistema en tiempo real—. Sin fricción. Solo autenticación pura.
Lara asintió. La clave privada había sido aceptada, la identidad verificada, y el canal SSH se estableció sin intervención humana. Exactamente como debía ser.
┌──(lara㉿kali)-[~]
└─$ ssh amin@192.168.8.101
Linux debian-server 6.1.0-18-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.76-1 (2024-02-19) x86_64
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Tue Jun 10 00:15:20 2025 from 192.168.8.148
amin@1-bytepath:~$
La conexión sin contraseña era ahora una realidad, estable y silenciosa. Pero Lara sabía que dejar abierta la antigua vía de acceso era una amenaza latente. Las contraseñas podían ser adivinadas, forzadas o interceptadas; las claves, en cambio, no ofrecían ese margen.
Con el acceso SSH ya garantizado mediante autenticación criptográfica, el siguiente paso era definitivo:
cerrar la puerta obsoleta. Desde la misma sesión remota, abrió el archivo sshd_config
, núcleo
de las directivas del servicio SSH en el servidor de Amin.
Un solo parámetro marcaría la diferencia. Bastaba con desactivar la opción
PasswordAuthentication
para bloquear por completo cualquier intento futuro de conexión mediante
contraseña. Un ajuste mínimo, un cambio de estado, y sin embargo, el servidor cruzaría un umbral: de
accesible a blindado.
amin@1-bytepath:~$
sudo nano /etc/ssh/sshd_config
amin@1-bytepath:~$
# CONTENIDO DEL ARCHIVO /etc/ssh/sshd_config (solo las partes relevantes)
# [...] otras configuraciones [...]
# Authentication:
#LoginGraceTime 2m
#PermitRootLogin prohibit-password
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10
# To disable tunneled clear text passwords, change to no here!
PasswordAuthentication no # <-- CAMBIAR DE 'yes' A 'no', O AÑADIR ESTA LÍNEA
#PermitEmptyPasswords no
# [...] más configuraciones [...]
amin@1-bytepath:~$ sudo systemctl restart sshd
Lara, metódica como siempre, mantuvo la vista fija en la terminal. «Bien», murmuró, revisando línea por línea, «si el demonio SSH ha cargado correctamente la nueva configuración, entonces ya no habrá retorno: la autenticación por clave será el único acceso posible».
Amin, al escucharla, comprendió el peso del cambio. No era solo una medida técnica; era una declaración de principios. El servidor dejaba atrás la era de las contraseñas, cerrando una puerta demasiado fácil de forzar. Ahora, solo las claves —únicas, inquebrantables— serían aceptadas.
La Huida Silenciosa: Dejando el Servidor a su Suerte Controlada
La autenticación por clave funcionaba a la perfección, un logro técnico fundamental, pero la seguridad física del servidor seguía siendo una vulnerabilidad latente. La única defensa real era el olvido: mantenerlo operativo y desaparecer sin dejar rastro.
«Tenemos que dejar esto listo para funcionar de forma autónoma y luego desaparecer,» afirmó Lara, los ojos fijos en la pantalla, aunque su mente ya recorría la carretera de regreso. «Si regresamos, no será a este sitio. Desde ahora, monitorizaremos todo a distancia.»
La misión estaba clara: instalar las herramientas básicas para la gestión remota eficaz y luego fundirse con la sombra del olvido.
amin@1-bytepath:~$
sudo apt update
[sudo] password for amin:
Hit:1 http://deb.debian.org/debian bookworm InRelease
Hit:2 http://deb.debian.org/debian bookworm-updates InRelease
Hit:3 http://deb.debian.org/debian-security bookworm-security InRelease
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
All packages are up to date.
amin@1-bytepath:~$ sudo apt install net-tools curl wget htop bash-completion -y
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
libsqlite3-0 libxml2 libxslt1.1 libgpm2 libtinfo6
Suggested packages:
moreutils
The following NEW packages will be installed:
bash-completion curl htop libgpm2 libsqlite3-0 libtinfo6 libxml2 libxslt1.1 net-tools wget
0 upgraded, 10 newly installed, 0 to remove and 0 not upgraded.
Need to get 3,576 kB of archives.
After this operation, 13.5 MB of additional disk space will be used.
Get:1 http://deb.debian.org/debian bookworm/main amd64 libsqlite3-0 amd64 3.40.1-1 [807 kB]
# [...] (muchas líneas de descarga y extracción) [...]
Setting up bash-completion (2.11-6) ...
Setting up curl (7.88.1-10) ...
Setting up htop (3.2.2-1) ...
Setting up libgpm2 (1.20.7-10) ...
Setting up libxml2:amd64 (2.9.14+dfsg-1.3) ...
Setting up libxslt1.1:amd64 (1.1.37-3) ...
Setting up net-tools (2.10-1) ...
Setting up wget (1.21.4-1) ...
Processing triggers for man-db (2.11.2-1) ...
Processing triggers for libc-bin (2.36-9+deb12u3) ...
El objetivo final: Arcadia. Un nombre que resonaba en las comunicaciones como un susurro de esperanza entre la desolación. Una ciudad donde, según los viejos archivos, los servidores no eran solo máquinas, sino fortalezas digitales custodiadas por una vigilancia incansable.
Lara miró a Amin y dijo en voz baja, casi para sí misma: "Si logramos llegar a Arcadia, quizás encontremos el refugio que este mundo necesita."
Amin asintió, con la mirada fija en el horizonte digital. "Pero aún queda camino por recorrer. Esto es solo el comienzo."
Mientras se desconectaban, el servidor quedó en marcha, un centinela solitario en la vasta red, esperando el próximo paso en esta odisea tecnológica.