Servidor HTTP sencillo
100%

Compartir Red · Lección 3

Servidor HTTP sencillo

Aprende a exponer temporalmente un directorio controlado mediante el servidor HTTP de Python.

El módulo http.server de Python puede servir archivos estáticos para una prueba breve o una transferencia de confianza. No es un servidor web de producción y no proporciona autenticación, autorización, TLS, limitación de frecuencia ni un tratamiento reforzado del tráfico hostil.

Preparar un directorio compartido

Crea un directorio dedicado que solo contenga archivos destinados a exponerse. Revisa los archivos ocultos, los enlaces simbólicos, los permisos y los metadatos sensibles antes de iniciarlo. Evita servir un directorio personal, la raíz de un repositorio, un directorio de credenciales o una ruta del sistema.

Utiliza --directory para que la raíz compartida sea explícita:

$ python3 -m http.server 8000 --directory /srv/temporary-share

Cuando no hay un archivo de índice, el módulo normalmente genera un listado del directorio. Cualquier persona que pueda llegar al listener puede enumerar y descargar el contenido servido.

¿Por qué debes utilizar --directory /srv/temporary-share?

Controlar la dirección de escucha

Vincula a loopback cuando solo deba conectarse el mismo host:

$ python3 -m http.server 8000 --bind 127.0.0.1 --directory /srv/temporary-share

Para compartir en una red de confianza, vincula deliberadamente a una dirección de interfaz apropiada y confirma la política del cortafuegos. Ejecutarlo sin una vinculación restrictiva suele escuchar en todas las interfaces disponibles, lo que puede exponer el directorio más allá de la red prevista.

¿Quién puede llegar normalmente a un servidor vinculado a 127.0.0.1?

Probar el acceso

Desde el host que sirve los archivos, solicita un archivo conocido e inspecciona la respuesta:

$ curl -f http://127.0.0.1:8000/example.txt

Para una prueba remota autorizada, utiliza la dirección de la interfaz seleccionada en lugar de loopback. Confirma tanto que el archivo previsto sea accesible como que uno situado fuera de la raíz de documentos no lo sea. Que el navegador funcione no demuestra por sí solo que la exposición o la confidencialidad sean apropiadas.

¿Qué puerto se selecciona explícitamente en python3 -m http.server 8000?

Detener y limpiar

Ejecuta el servicio temporal en una terminal supervisada y detenlo con Ctrl-C cuando termine la transferencia. Comprueba que el listener haya desaparecido:

$ ss -ltn 'sport = :8000'

Elimina las copias temporales según la política de tratamiento de datos y revierte cualquier regla temporal del cortafuegos. Para una distribución persistente, autenticada o expuesta a Internet, utiliza un servidor mantenido y configurado con control de acceso y TLS.

¿Qué debe ocurrir después de completar la transferencia temporal?

Lección completada

Has completado Servidor HTTP sencillo

Ahora puedes ejecutar un servidor HTTP temporal de Python con una exposición limitada.

  • Sirve únicamente un directorio dedicado y revisado.

  • Vincula a la dirección apropiada más restrictiva.

  • Prueba el acceso previsto y los límites no deseados.

  • Detén el listener y elimina después el acceso temporal.

Guarda tu progreso

Crea una cuenta gratuita para guardar esta lección y continuar en cualquier dispositivo.

Crear una cuenta gratuita
Siguiente Lección
Volver a Compartir Red