Informe Técnico — Configuración de Servidor Debian 13 Proyecto: Formación Tecnológica SENA
SERVICIO NACIONAL DE APRENDIZAJE
SENA — Formación Tecnológica
INFORME TÉCNICO
Configuración de Servidor Web Seguro en Entorno Local
Debian 13 (Trixie) — Apache2 / SSL / DHCP / GitHub Deploy
Campo Detalle
Proyecto Formación Tecnológica SENA
Versión del Documento 1.0
Sistema Operativo Debian 13 (Trixie)
Dominio Local [Link]
Entorno Laboratorio / Red Local
Clasificación Uso Interno
Fecha de Elaboración 11 de mayo de 2026
SENA — Servicio Nacional de Aprendizaje | Confidencial Página 1 de 17
Informe Técnico — Configuración de Servidor Debian 13 Proyecto: Formación Tecnológica SENA
1. Introducción
El presente informe documenta el proceso técnico de configuración de un servidor web seguro
sobre Debian 13 (Trixie) en un entorno de laboratorio, desarrollado en el marco del proyecto
"Formación Tecnológica SENA". El objetivo central fue desplegar una infraestructura funcional que
integrara los siguientes componentes:
• Servicio web HTTPS con certificado SSL autofirmado (Apache2 + OpenSSL).
• Despliegue de aplicación web clonada desde un repositorio GitHub.
• Servicio DHCP para asignación dinámica de direcciones IP en red local.
• Resolución de nombres de dominio locales (DNS estático).
La documentación recoge tanto los procedimientos ejecutados con éxito como los errores
encontrados y sus respectivas soluciones, ofreciendo una visión integral del ciclo de vida de la
configuración de servicios en un sistema GNU/Linux de última generación.
1.1 Alcance
Este informe cubre la configuración completa desde la instalación de paquetes hasta la verificación
de la aplicación en el navegador del cliente, incluyendo:
• Instalación y configuración del servidor Apache2 con soporte SSL/TLS.
• Generación de certificados criptográficos mediante OpenSSL.
• Gestión de repositorios Git y despliegue de activos web.
• Configuración del servidor DHCP (isc-dhcp-server).
• Diagnóstico y resolución de problemas de conectividad y carga de recursos.
1.2 Entorno Tecnológico
Componente Versión / Detalle
Sistema Operativo Debian GNU/Linux 13 (Trixie) — x86_64
Servidor Web Apache 2.4.x
Criptografía OpenSSL 3.x
Control de Versiones Git 2.x
Servidor DHCP isc-dhcp-server
Dominio Local [Link]
Red de Laboratorio 192.168.x.0/24
SENA — Servicio Nacional de Aprendizaje | Confidencial Página 2 de 17
Informe Técnico — Configuración de Servidor Debian 13 Proyecto: Formación Tecnológica SENA
2. Metodología
La configuración se llevó a cabo siguiendo un enfoque iterativo e incremental, dividido en cuatro
fases principales que respetan las dependencias técnicas entre servicios:
Fase Nombre Descripción
I Infraestructura Base Instalación de Apache2, habilitación de módulos y configuración
del Virtual Host HTTPS con certificado autofirmado.
II Despliegue de Clonado del repositorio GitHub, organización del directorio raíz
Aplicación web y gestión de permisos.
III Servicios de Red Configuración del servidor DHCP, ajuste de interfaces de red y
resolución de nombres mediante /etc/[Link].
IV Verificación y Pruebas de conectividad, diagnóstico de errores de carga de
Troubleshooting assets y validación final en el cliente.
Cada fase concluye con una verificación funcional antes de avanzar a la siguiente, garantizando la
estabilidad del sistema en todo momento. Los errores encontrados se documentan junto con su
causa raíz y solución aplicada.
SENA — Servicio Nacional de Aprendizaje | Confidencial Página 3 de 17
Informe Técnico — Configuración de Servidor Debian 13 Proyecto: Formación Tecnológica SENA
3. Desarrollo Técnico
3.1 Fase I: Configuración de HTTPS con Certificado Autofirmado
3.1.1 Instalación de Apache2
Se actualizó el índice de paquetes del sistema y se procedió a la instalación del servidor web
Apache2 mediante el gestor de paquetes apt:
# Actualizar repositorios e instalar Apache2
sudo apt update && sudo apt upgrade -y
sudo apt install apache2 -y
# Verificar estado del servicio
sudo systemctl status apache2
Una vez instalado, Apache2 se inicia automáticamente. Se verificó que el servicio estuviera activo
y habilitado para arranque automático:
sudo systemctl enable apache2
sudo systemctl start apache2
3.1.2 Generación del Certificado SSL Autofirmado
Se utilizó OpenSSL para generar simultáneamente una llave privada RSA de 2048 bits y un
certificado X.509 autofirmado con validez de 365 días. El parámetro -newkey rsa:2048 fue
empleado deliberadamente para garantizar compatibilidad con la versión de OpenSSL 3.x presente
en Debian 13:
# Crear directorio para almacenar certificados
sudo mkdir -p /etc/ssl/grd53
# Generar clave privada y certificado autofirmado
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout /etc/ssl/grd53/[Link] \
-out /etc/ssl/grd53/[Link] \
-subj "/C=CO/ST=Cundinamarca/L=Bogota/O=SENA/CN=[Link]"
ℹ NOTA: El flag -nodes (no DES) evita que se solicite contraseña al cargar la clave privada, lo cual es
necesario para que Apache2 inicie sin intervención manual.
Descripción de los parámetros clave utilizados:
Parámetro Descripción
SENA — Servicio Nacional de Aprendizaje | Confidencial Página 4 de 17
Informe Técnico — Configuración de Servidor Debian 13 Proyecto: Formación Tecnológica SENA
-x509 Genera un certificado autofirmado en lugar de una CSR (Certificate Signing
Request).
-nodes Genera la clave privada sin cifrado por contraseña (no DES encryption).
-days 365 Define la validez del certificado en 365 días.
-newkey Crea simultáneamente una nueva clave privada RSA de 2048 bits.
rsa:2048
-keyout Ruta de destino para la clave privada generada.
-out Ruta de destino para el certificado generado.
-subj Datos del sujeto del certificado (CN=Common Name del dominio).
3.1.3 Configuración del Virtual Host HTTPS
Se editó el archivo de configuración del sitio SSL por defecto de Apache2 para adaptarlo al dominio
local [Link] y apuntar a los certificados generados:
sudo nano /etc/apache2/sites-available/[Link]
Contenido relevante del Virtual Host configurado:
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
ServerAdmin webmaster@[Link]
ServerName [Link]
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/[Link]
CustomLog ${APACHE_LOG_DIR}/[Link] combined
SSLEngine on
SSLCertificateFile /etc/ssl/grd53/[Link]
SSLCertificateKeyFile /etc/ssl/grd53/[Link]
</VirtualHost>
</IfModule>
3.1.4 Activación de Módulos y Sitio SSL
Se habilitaron los módulos necesarios y se activó la configuración del sitio seguro mediante las
herramientas de administración de Apache2:
# Habilitar módulo SSL
sudo a2enmod ssl
# Habilitar módulo de redirección (opcional)
SENA — Servicio Nacional de Aprendizaje | Confidencial Página 5 de 17
Informe Técnico — Configuración de Servidor Debian 13 Proyecto: Formación Tecnológica SENA
sudo a2enmod rewrite
# Activar el sitio SSL
sudo a2ensite [Link]
# Verificar sintaxis de configuración
sudo apache2ctl configtest
# Recargar Apache2 para aplicar cambios
sudo systemctl reload apache2
⚠ ADVERTENCIA: El comando apache2ctl configtest debe retornar 'Syntax OK' antes de proceder
con el reload. Cualquier error de sintaxis en los archivos .conf impedirá el inicio del servicio.
SENA — Servicio Nacional de Aprendizaje | Confidencial Página 6 de 17
Informe Técnico — Configuración de Servidor Debian 13 Proyecto: Formación Tecnológica SENA
3.2 Fase II: Despliegue de Aplicación Web desde GitHub
3.2.1 Instalación y Configuración de Git
Se instaló Git en el servidor y se configuraron los parámetros de identidad básicos requeridos para
las operaciones de clonado:
# Instalación de Git
sudo apt install git -y
# Verificar versión instalada
git --version
# Configuración de identidad (requerida por Git)
git config --global [Link] "Administrador SENA"
git config --global [Link] "admin@[Link]"
3.2.2 Clonado del Repositorio
El repositorio del proyecto fue clonado directamente en el directorio raíz del servidor web
/var/www/html/, utilizando rutas relativas para garantizar la correcta ubicación de los activos web:
# Navegar al directorio raíz del servidor web
cd /var/www/html/
# Clonar repositorio del proyecto
sudo git clone [Link] .
# Listar contenido para verificar el clonado
ls -la /var/www/html/
ℹ NOTA: El punto '.' al final del comando git clone indica que el contenido se clona directamente en el
directorio actual, sin crear un subdirectorio adicional. Esto es crítico para que Apache2 sirva los
archivos correctamente.
3.2.3 Gestión de Permisos
Se ajustaron los permisos de los archivos y directorios para que el usuario www-data (proceso de
Apache2) tuviera los accesos correctos de lectura y ejecución:
# Asignar propiedad de archivos al usuario de Apache2
sudo chown -R www-data:www-data /var/www/html/
# Establecer permisos: directorios 755, archivos 644
sudo find /var/www/html/ -type d -exec chmod 755 {} \;
sudo find /var/www/html/ -type f -exec chmod 644 {} \;
SENA — Servicio Nacional de Aprendizaje | Confidencial Página 7 de 17
Informe Técnico — Configuración de Servidor Debian 13 Proyecto: Formación Tecnológica SENA
# Verificar permisos aplicados
ls -la /var/www/html/
Permisos Aplica a Justificación
755 (rwxr-xr- Directorios Permite a Apache2 listar y acceder al contenido de cada directorio.
x)
644 (rw-r--r-- Archivos Apache2 puede leer los archivos; otros usuarios no pueden
) modificarlos.
www-data:www- Propietario El proceso de Apache2 opera bajo el usuario www-data,
data garantizando aislamiento de seguridad.
SENA — Servicio Nacional de Aprendizaje | Confidencial Página 8 de 17
Informe Técnico — Configuración de Servidor Debian 13 Proyecto: Formación Tecnológica SENA
3.3 Fase III: Configuración de Servicios de Red
3.3.1 Activación y Gestión de Servicios con systemctl
Se utilizó systemctl como interfaz de administración de servicios del sistema, permitiendo controlar
el ciclo de vida de cada daemon de forma centralizada:
# Habilitar servicio para inicio automático
sudo systemctl enable <servicio>
# Iniciar servicio
sudo systemctl start <servicio>
# Reiniciar servicio (aplicar cambios de configuración)
sudo systemctl restart <servicio>
# Ver estado detallado y últimos logs
sudo systemctl status <servicio>
# Ver logs en tiempo real
sudo journalctl -u <servicio> -f
3.3.2 Configuración del Servidor DHCP
Se instaló y configuró el servidor DHCP isc-dhcp-server para asignar dinámicamente direcciones IP
a los clientes de la red local de laboratorio:
# Instalación del servidor DHCP
sudo apt install isc-dhcp-server -y
# Editar configuración principal
sudo nano /etc/dhcp/[Link]
Fragmento de la configuración del archivo [Link]:
# Configuración global
default-lease-time 600;
max-lease-time 7200;
authoritative;
# Definición de subred
subnet [Link] netmask [Link] {
range [Link] [Link];
option routers [Link];
option domain-name-servers [Link], [Link];
SENA — Servicio Nacional de Aprendizaje | Confidencial Página 9 de 17
Informe Técnico — Configuración de Servidor Debian 13 Proyecto: Formación Tecnológica SENA
option domain-name "[Link]";
}
Se configuró la interfaz de red sobre la cual el servidor DHCP escucha las solicitudes:
# Definir interfaz de escucha
sudo nano /etc/default/isc-dhcp-server
# Modificar la línea INTERFACESv4
INTERFACESv4="enp0s3" # Adaptar al nombre de interfaz real
# Reiniciar y verificar servicio
sudo systemctl restart isc-dhcp-server
sudo systemctl status isc-dhcp-server
3.3.3 Configuración de Resolución DNS
Se editó el archivo /etc/[Link] para establecer los servidores DNS que el sistema utiliza para
resolver nombres de dominio, resolviendo problemas de conectividad durante el clonado del
repositorio:
sudo nano /etc/[Link]
# Contenido del archivo
nameserver [Link] # DNS primario (Google)
nameserver [Link] # DNS secundario (Google)
nameserver [Link] # Gateway local (resolución interna)
search [Link]
⚠ ADVERTENCIA: En Debian 13, /etc/[Link] puede ser gestionado por systemd-resolved. Si los
cambios no persisten tras un reinicio, considerar configurar DNS directamente en
/etc/systemd/[Link] o usar resolvectl.
SENA — Servicio Nacional de Aprendizaje | Confidencial Página 10 de 17
Informe Técnico — Configuración de Servidor Debian 13 Proyecto: Formación Tecnológica SENA
3.4 Fase IV: Troubleshooting y Ajustes Finales
3.4.1 Error: "Could not resolve host"
Durante el proceso de clonado del repositorio se presentó el error git clone: Could not resolve host:
[Link], indicando que el sistema no podía resolver nombres de dominio externos.
✖ ERROR: Causa raíz: /etc/[Link] estaba vacío o contenía únicamente entradas de la red
interna sin acceso a Internet.
Proceso de diagnóstico y solución:
# 1. Verificar contenido actual de [Link]
cat /etc/[Link]
# 2. Probar resolución de nombres
nslookup [Link]
ping -c 3 [Link]
# 3. Aplicar DNS temporales para verificar
echo 'nameserver [Link]' | sudo tee /etc/[Link]
# 4. Confirmar resolución
nslookup [Link]
# 5. Agregar DNS permanentes
sudo nano /etc/[Link]
3.4.2 Configuración del Archivo hosts en el Cliente
Para que los clientes de la red local pudieran acceder al servidor por su nombre de dominio
([Link]) sin requerir un servidor DNS dedicado, se editó el archivo hosts en cada máquina
cliente:
# En el cliente Windows:
# C:\Windows\System32\drivers\etc\hosts
# En el cliente Linux:
sudo nano /etc/hosts
# Agregar entrada al final del archivo
[Link] [Link] [Link]
# Verificar resolución desde el cliente
ping [Link]
SENA — Servicio Nacional de Aprendizaje | Confidencial Página 11 de 17
Informe Técnico — Configuración de Servidor Debian 13 Proyecto: Formación Tecnológica SENA
curl -k [Link]
3.4.3 Depuración de Errores de Carga de Assets
Al acceder a la aplicación web desde el navegador se observaron errores en la consola de
desarrollo indicando que archivos JavaScript y CSS no cargaban correctamente. El diagnóstico se
realizó mediante las herramientas de desarrollador del navegador (F12):
Errores típicos identificados:
• 404 Not Found para rutas de archivos .js y .css — indicaba rutas absolutas incorrectas en el
HTML.
• Mixed Content Warning — recursos HTTP cargados desde una página HTTPS.
• CORS errors — archivos referenciados desde dominios externos no disponibles en la red
local.
Acciones correctivas aplicadas:
1. Inspección de rutas en [Link] para identificar referencias absolutas incorrectas.
2. Corrección de rutas a relativas (./assets/css/[Link] en lugar de /assets/css/[Link]).
3. Verificación de permisos en subdirectorios assets/, js/ y css/.
4. Recarga forzada del caché del navegador con Ctrl+Shift+R para descartar archivos en
caché.
# Verificar que los archivos existen en el servidor
ls -la /var/www/html/assets/
ls -la /var/www/html/js/
ls -la /var/www/html/css/
# Corregir permisos si es necesario
sudo chown -R www-data:www-data /var/www/html/
sudo chmod -R 755 /var/www/html/
# Revisar logs de Apache2 para errores específicos
sudo tail -n 50 /var/log/apache2/[Link]
sudo tail -n 50 /var/log/apache2/[Link]
ℹ NOTA: Las animaciones CSS/JS pueden fallar si las rutas a las librerías externas (CDN) no están
disponibles en la red de laboratorio. Solución: descargar las librerías localmente y referenciarlas con
rutas relativas.
SENA — Servicio Nacional de Aprendizaje | Confidencial Página 12 de 17
Informe Técnico — Configuración de Servidor Debian 13 Proyecto: Formación Tecnológica SENA
4. Conclusiones
La implementación del servidor web seguro sobre Debian 13 (Trixie) fue completada exitosamente,
alcanzando todos los objetivos planteados para el entorno de laboratorio del proyecto Formación
Tecnológica SENA. A continuación se detallan las conclusiones principales:
• Se logró desplegar un servidor Apache2 con HTTPS funcional mediante certificado SSL
autofirmado, permitiendo comunicaciones cifradas entre servidor y clientes en la red local.
• La generación del certificado con -newkey rsa:2048 garantizó compatibilidad con OpenSSL
3.x de Debian 13, evitando errores que se presentaban con parámetros de versiones
anteriores.
• El despliegue de la aplicación web desde GitHub resultó exitoso tras resolver los problemas
de resolución DNS, y la gestión adecuada de permisos con www-data aseguró el correcto
funcionamiento de Apache2.
• La configuración del servidor DHCP permitió automatizar la asignación de IPs en la red
local, simplificando la gestión de los clientes del laboratorio.
• La fase de troubleshooting evidenció la importancia del diagnóstico sistemático: partir de la
capa de red (DNS), seguir por el servidor (logs de Apache2) y finalmente verificar en el
cliente (herramientas de desarrollador del navegador).
El proceso completo consolidó competencias en administración de sistemas Linux, seguridad en
comunicaciones web, control de versiones con Git y diagnóstico de servicios de red en entornos
productivos.
SENA — Servicio Nacional de Aprendizaje | Confidencial Página 13 de 17
Informe Técnico — Configuración de Servidor Debian 13 Proyecto: Formación Tecnológica SENA
5. Recomendaciones
Con base en las lecciones aprendidas durante el laboratorio, se formulan las siguientes
recomendaciones para futuros despliegues o para la evolución de este mismo entorno:
5.1 Seguridad
• Migrar a certificados SSL/TLS emitidos por una Autoridad Certificadora reconocida (Let's
Encrypt u otra CA pública) si el servidor se expone fuera de la red local.
• Implementar redirección automática de HTTP a HTTPS mediante mod_rewrite para evitar
accesos no cifrados.
• Configurar cabeceras de seguridad HTTP en Apache2: Strict-Transport-Security (HSTS), X-
Content-Type-Options, X-Frame-Options y Content-Security-Policy.
• Restringir los permisos del directorio .git en /var/www/html/ para evitar la exposición del
repositorio a través del navegador.
5.2 Infraestructura y Disponibilidad
• Implementar un servidor DNS local (Bind9 o dnsmasq) para eliminar la dependencia del
archivo /etc/hosts en los clientes y centralizar la resolución de nombres del dominio
[Link].
• Configurar /etc/systemd/[Link] en lugar de editar /etc/[Link] directamente, para
garantizar la persistencia de la configuración DNS tras reinicios del sistema.
• Establecer un proceso de CI/CD básico (mediante GitHub Actions o webhooks) para
automatizar el despliegue de actualizaciones del repositorio en el servidor.
5.3 Monitoreo y Mantenimiento
• Habilitar y revisar regularmente los logs de Apache2 en /var/log/apache2/ para detectar
patrones de error o intentos de acceso no autorizados.
• Programar la renovación automática del certificado SSL y la actualización periódica del
sistema con apt upgrade.
• Documentar todos los cambios de configuración en un registro de cambios (changelog)
para facilitar el mantenimiento futuro y el trabajo colaborativo.
5.4 Buenas Prácticas de Desarrollo
• Utilizar siempre rutas relativas en los archivos HTML/CSS/JS para garantizar portabilidad
entre entornos (desarrollo, laboratorio, producción).
• Almacenar las dependencias de la aplicación localmente o en un servidor de archivos de la
red local para evitar dependencias de CDN externos no disponibles en entornos aislados.
• Implementar un archivo .gitignore adecuado para evitar incluir archivos sensibles (claves,
configuraciones locales) en el repositorio público.
SENA — Servicio Nacional de Aprendizaje | Confidencial Página 14 de 17
Informe Técnico — Configuración de Servidor Debian 13 Proyecto: Formación Tecnológica SENA
SENA — Servicio Nacional de Aprendizaje | Confidencial Página 15 de 17
Informe Técnico — Configuración de Servidor Debian 13 Proyecto: Formación Tecnológica SENA
Anexo A: Resumen de Comandos Clave
A continuación se presenta un compendio de los comandos más relevantes ejecutados durante el
laboratorio, organizados por categoría para facilitar su consulta:
A.1 Apache2 y SSL
sudo apt install apache2 -y
sudo a2enmod ssl rewrite
sudo a2ensite [Link]
sudo apache2ctl configtest
sudo systemctl reload apache2
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout [Link] -out
[Link]
A.2 Git y Permisos
sudo apt install git -y
sudo git clone [Link] .
sudo chown -R www-data:www-data /var/www/html/
sudo find /var/www/html/ -type d -exec chmod 755 {} \;
sudo find /var/www/html/ -type f -exec chmod 644 {} \;
A.3 DHCP y Red
sudo apt install isc-dhcp-server -y
sudo systemctl enable isc-dhcp-server
sudo systemctl restart isc-dhcp-server
sudo systemctl status isc-dhcp-server
sudo journalctl -u isc-dhcp-server -f
A.4 Diagnóstico
ping -c 3 [Link]
nslookup [Link]
curl -k [Link]
sudo tail -n 50 /var/log/apache2/[Link]
sudo apache2ctl -S
SENA — Servicio Nacional de Aprendizaje | Confidencial Página 16 de 17
Informe Técnico — Configuración de Servidor Debian 13 Proyecto: Formación Tecnológica SENA
Anexo B: Registro de Aprobación
Elaborado por Revisado por Aprobado por
CRISTIAN CAMILO VILLADA
Aprendiz Lider Linux Instructor académico
SERVICIO NACIONAL DE APRENDIZAJE — SENA
Documento generado el lunes, 11 de mayo de 2026
SENA — Servicio Nacional de Aprendizaje | Confidencial Página 17 de 17