Tutoriales y Manuales
Entradas Mensuales
-
►
2024
(Total:
1019
)
- ► septiembre (Total: 50 )
-
►
2023
(Total:
710
)
- ► septiembre (Total: 65 )
-
▼
2022
(Total:
967
)
- ► septiembre (Total: 72 )
-
▼
enero
(Total:
88
)
- Adiós a lo gratis en Google: Drive dejará de ofrec...
- Apple presenta una guía de seguridad para AirTags ...
- Grupo Norcorenao Lazarus utiliza cliente Windows U...
- Ciberataque afecta al Senado de Puerto Rico
- Cliente de Azure de Microsoft recibe el mayor ataq...
- Traefik: un proxy inverso para contenedores Docker
- Rubber Ducky pendrive USB maligno roba datos
- Vulnerabilidad en Safari y iCloud permitía tomar e...
- Rojadirecta se enfrenta hasta a 6 años de cárcel y...
- Grave vulnerabilidad en Polkit permite obtener roo...
- Navega gratis con una IPv6 gracias a un túnel con ...
- Gestos de Android que casi nadie conoce y que son ...
- Hackean el sistema de ferrocarriles de Bielorrusia...
- Microsoft deshabilita las macros de Excel 4.0 XLM ...
- Un nuevo ataque DDoS en Andorra a varios streamers...
- Manual uso htop: monitoriza recursos servidor en t...
- Un 80% de de los españoles cree ser rastreado por ...
- La UE advierte que dos tercios de las reseñas de l...
- 1 de cada 3 webs de phishing desaparece durante su...
- Rusia y la Unión Europa se plantean prohibir el mi...
- Intel invertirá 20.000M $ para construir en Ohio l...
- Estafadores colocan falsos códigos QR en parquímet...
- Vulnerabilidades ponen en peligro a la mitad de eq...
- DevToys la "navaja suiza" de utilidades para progr...
- Google Play Juegos para Windows: jugar juegos Andr...
- Usuarios antiguos Google G Suite con correo gratui...
- Cuidado con el phishing: DHL, Microsoft y WhatsApp...
- Investigadores encuentran 1 millón de credenciales...
- Guía de medidas de ciberseguridad para protegerse ...
- OnlyOffice es la suite ofimática de código abierto...
- Ciberataque a la Cruz Roja compromete los datos de...
- Europa tendrá sus propios servidores DNS públicos ...
- Gestión contenedores: DockerFile y Docker Compose
- Mejores pendrives USB 3.2
- Antivirus Windows Defender permite ver las carpeta...
- Microsoft compra Activision Blizzard por 68.700 mi...
- Error en Safari permite filtrar el historial y dat...
- Hackean Amedia, importante medio de comunicación d...
- ¿Vale la pena seguir usando banda 2.4GHz o mejor u...
- Canadá rastreó la ubicación de 33 millones de pers...
- Las CPUs Intel Alder Lake y Windows 11 no permiten...
- Comandos y ejemplos con FFmpeg
- Disponible nueva versión convertidor multimedia Ha...
- UltraRAM es el futuro del almacenamiento híbrido d...
- Cómo utilizar Grabify IP Logger o IPLogger
- Importantes detenciones de grupos de Rusos de rans...
- Ucrania denuncia un ciberataque masivo contra webs...
- El hospital de Lucena de Córdoba víctima del ranso...
- Android permitirá desactivar el 2G para evitar su ...
- Alemania estudia bloquear Telegram si persisten su...
- Samsung presenta primer sistema computacional con ...
- Mejores sistemas protección red con sistemas IDS/IPS
- La Unión Europea realizará simulacro de ciberataqu...
- Wi-Fi 6e: la actualización más importante del Wi-F...
- Vulnerabilidad crítica en la pila HTTP (IIS) en Wi...
- Kazajistán y el minado de las criptomonedas
- Varios operadores Europeos quieren que se prohíba ...
- La velocidad de Wi-Fi 6E podría alcanzar 1-2 Gbps
- Desarrollador sabotea su proyecto open source en G...
- Canon enseña a sus clientes cómo saltarse las comp...
- Avira es otro antivirus que también mina criptomon...
- Prohíben el uso de Telegram, WhatsApp y Signal a l...
- AnonSurf permite anonimizar vía TOR todas las cone...
- Consejos para proteger la privacidad de los menore...
- Descargar vídeos con Youtube-dl: con interfaz gráf...
- Programas de captura de pantalla para Windows
- Antivirus Norton 360 se pone a minar criptomonedas...
- Detenido un jefe de la mafia italiana fugado hace ...
- Multa millonaria de Francia a Google y Facebook po...
- Instalar ADB y usar los comandos básicos
- Starlink llega oficialmente a España: precios y ve...
- SEGA Europa sufre una filtración de su Base de Datos
- Glances: herramienta monitorizar servidores Window...
- Registrarse en Skype pide rellenar un captcha 10 v...
- DanderSpritz herramienta con panel de control post...
- Críticas a Chrome por nueva API para identificarte...
- La UE desconecta 48 mil dominios .eu registrados p...
- Así te pueden hackear por copiar y pegar comandos ...
- Instaladores falsos de Telegram Desktop contienen ...
- Error efecto del año 2022 afecta servidores de cor...
- Consiguen ocultar malware en unidades SSD
- Samsung presenta en el CES el Galaxy S21 FE
- Hoy es el adiós definitivo para productos BlackBerry
- Intel muestra la increíble velocidad de las unidad...
- Google Drive borrará archivos de tu cuenta si inci...
- La Universitat Oberta de Catalunya vuelve a la nor...
- Framework post explotación Powershell-Empire
- Sandboxie Plus: ejecuta aplicaciones poco confiabl...
-
►
2021
(Total:
730
)
- ► septiembre (Total: 56 )
-
►
2020
(Total:
212
)
- ► septiembre (Total: 21 )
-
►
2019
(Total:
102
)
- ► septiembre (Total: 14 )
-
►
2017
(Total:
231
)
- ► septiembre (Total: 16 )
-
►
2016
(Total:
266
)
- ► septiembre (Total: 38 )
-
►
2015
(Total:
445
)
- ► septiembre (Total: 47 )
-
►
2014
(Total:
185
)
- ► septiembre (Total: 18 )
-
►
2013
(Total:
100
)
- ► septiembre (Total: 3 )
-
►
2011
(Total:
7
)
- ► septiembre (Total: 1 )
Blogroll
Etiquetas
Entradas populares
-
Después de ver qué es una vCPU y la diferencia entre núcleos (cores) e hilos en los procesadores, pasamos a explicar toda la nomenclatura d...
-
En el panorama en constante evolución de la seguridad de redes, OpnSense se ha convertido en una formidable solución de firewall. Nacido de...
-
Pese a que Gemini ofrece multitudes de opciones, recientemente, se ha dado a conocer una situación fuera de lo común. Hace unos días, un es...
Traefik: un proxy inverso para contenedores Docker
Traefik es un enrutador. Una herramienta que se encarga de conectar servicios con rutas. Y se encarga de hacerlo, de forma sencilla y cómoda. Traefik se encargará de dirigir el tráfico al contenedor correcto y de forma precisa. Pero además, todo esto lo puedes hacer sobre la marcha, sin necesidad de detener Traefik cada vez que pongas en marcha un nuevo servicio.
Si no conoces Docker, te recomiendo que realices el tutorial de Docker antes de adentrarte con Traefik, o al menos que le des un primer vistazo, porque de lo contrario, es posible que te pierdas.
Para utilizar Traefik, necesitarás por una parte unos mínimos conocimientos de contenedores, por lo menos para el enfoque que le voy a dar, que es dirigido básicamente a Docker. Esto no quiere decir que descarte adentrarme en otros proveedores.
Si no conoces Traefik, y por simplificar al máximo, indicarte que se trata de un enrutador. Una herramienta que te permite conectar distintas url con el servicio que tu quieras. Básicamente un proxy inverso dinámico.
Imagina que tienes varios servicios funcionando en tu VPS o en tu
servidor, y quieres que asignar a cada uno de esos servicios una url, por ejemplo servicio1.dominio.com
a tu servicio1
, servicio2.dominio.com
a tu servicio2
y así sucesivamente. Traefik se encarga de hacer esto de forma auto mágica. En cuanto a ¿que servicios pueden ser?, simplemente, los que tu quieras.
Traefik, entre otras muchas cosas, se encarga de realizar un descubrimiento automático, tanto de servicios, como de la configuración de esos servicios, a base de inspeccionar la infraestructura en la que reside Traefik.
Traefik: ¿qué es y para qué sirve?
Traefik es el mejor proxy inverso o «reverse proxy» que podemos utilizar para llegar a todos los servicios que tenemos en el servidor NAS, tan solo será necesario abrir dos puertos (el 80 y el 443), y automáticamente traefik nos redireccionará internamente a los diferentes servicios y servidores que tengamos corriendo en el servidor NAS. Según la documentación oficial, Traefik es un «Edge Router» que permite acceder a todos los servicios del interior. Este software recibe solicitudes de nombre en su sistema, y descubre qué componentes de dentro deben responder a estas solicitudes. Este software es capaz de descubrir automáticamente los contenedores Docker que tengamos, siempre y cuando le pasemos unas «labels», de esta forma, podremos automatizar el reconocimiento de los diferentes contenedores por parte de Traefik, es compatible con Docker, Docker Swarm, Kubernetes, AWS y otros. Si queremos añadir o retirar servicios lo podremos hacer en tiempo real sin necesidad de reiniciar el servicio, esto es ideal para no interrumpir el servicio.
Traefik «entiende» ficheros de configuración toml y yml, Básicamente traefik dispone de dos ficheros de configuración, el traefik.yml que es el archivo de configuración global, y otro archivo que es el dynamic-conf.yml (pero lo podemos llamar como queramos) que se encarga de interconectar los diferentes servicios internamente.
Para reconocer los diferentes servicios de los Docker podremos hacerlo vía «labels» a la hora de crear el contenedor Docker, o poniéndolo en el archivo dinámico dynamic-conf.yml, en nuestra opinión, creemos que es mejor hacerlo directamente en el archivo «file» para no depender de los labels que hayamos configurado en cada uno de los contenedores, e ir uno por uno. Es mucho más sencillo hacerlo en este archivo y realizar todas las configuraciones desde aquí de forma masiva, sin necesidad de reconfigurar el docker-compose o ir contenedor por contenedor configurándolo todo.
Conceptos Trafik
A continuación, un par de conceptos importantes. Incluyo el nombre original en inglés, y mi traducción, para que no haya lugar a dudas de a que me refiero.
- Edge Router (enrutador de borde). Traefik es un Edge Router; esto significa que es la puerta a tu plataforma. Se encarga de interceptar cada petición que se realiza y enrutarla al servicio correcto. Traefik, sabe la lógica y las reglas que determinan que servicio es el encargado de gestionar cada petición.
- Auto Service Discovery (servicio de auto descubrimiento). Mientras que los proxies tradicionales necesitan una configuración concreta que contiene las rutas a cada uno de los servicios, en el caso de Traefik, estas rutas son extraídas directamente de los propios servicios. De esta manera, cuando tu levantas, despliegas, un nuevo servicio, en él, indicas la información que Traefik necesita para gestionar el enrutamiento hacia el mismo.
Por ejemplo, pongamos que tienes dos páginas en WordPress en sus correspondientes contenedores. A la hora de desplegarlas, tu añadirás la información necesaria, para que Traefik sepa como llevar las peticiones a esos servicios. Una vez levantado el contendor, Traefik, se encarga de extraer esa información, y sin necesidad de detenerse, empezar a dirigir el tráfico a un WordPress o al otro.
Traefik, monitoriza la infraestructura sobre la que está asentado, de forma que sabe cuando se despliega un nuevo servicio, por ejemplo en un contenedor, en este caso. Una vez sabe que se ha desplegado el contenedor, extrae la información que necesita para dirigir el tráfico a ese nuevo servicio.
Pero ¿que pasa cuando detienes un servicio? Como te digo, dado que Traefik, está monitorizando la infraestructura, cuando detengas un servicio, se dará cuenta de esto, y dejará e enrutar tráfico al mismo.
- Rules (reglas). Para determinar que ruta está asociada que servicio, Traefik utiliza reglas. Estas reglas, como verás en siguientes capítulos de este tutorial, pueden ser desde palabras o expresiones regulares en el encabezado de la petición, o en la propia ruta. Pero no solo esto, sino que ademas podrás combinar diferentes reglas.
- Middleware (lo de enmedio). Traefik es capaz de modificar o incluso enriquecer una determinada petición antes de que llegue al servicio destino. Por ejemplo, puede añadir un mecanismo de autenticación previo, limitar el número de peticiones, reintentar la petición en caso de que se produzca un error.
¿Y como realiza Traefik el auto descubrimiento? Esto lo hace en base a la infraestructura sobre la que reside. Para ello, es necesario que indiques a Traefiek, el provider (proveedor) que sustenta la infraestructura.
Existen diferentes proveedores, como puede ser Docker, Kubernetes, Rancher, Consul, Redis, etc.
EntryPoints en Traefik o puntos de entrada
Como deciamos en la introducción, el viaje desde que llamas a un servicio detrás de Traefik, hasta que esa llamada llega a su destino, pasa por cuatro puntos,
- Los entrypoints o puntos de entrada. Básicamente se refiere a los elementos que están escuchando por el tráfico entrante. En general a los puertos de llegada, pero no siempre. Digamos que son las orejas de Traefik. Por ejemplo, los puntos de entrada en mi configuración están definidos de la siguiente forma en el archivo
traefik.yml
entryPoints
indica los puntos de entrada. En este caso, están indicado los dos puertos por defecto, el 80
y el 443
para conexiones seguras. En el caso de que necesites mas puertos este es el lugar correcto para hacerlo.
¿Qué es lo que sucede cuando se llama a un servicio de los que hayas levantado detrás de Traefik?. Cualquier llamada que llegue, el primer paso es conectarse a un punto de entrada, que en la mayor parte de las veces se corresponderá con un puerto, aunque no siempre. A partir, de aquí en función de la ruta que hayas pasado, y siguiendo las reglas que hayas establecido se dirigirá a uno u a otro servicio. Incluso, si has establecido algún tipo de mecanismo intermedio, middleware, es probable que se apliquen determinadas transformaciones, antes de que lleguen al servicio al que querías llegar. Aquí nos vamos a quedar en los entrypoints en Traefik. Al principio de todo.
Manos a la obra
Además de actuar cómo proxy inverso, también dispone de utilidades que nos harán la vida más sencilla con respecto a la gestión, adquisición y renovación de certificados SSL, ya que lo hace de manera automática. En este ejemplo utilizaremos LetsEncrypt como proveedor de certificados, aunque se pueden utilizar otros.
Una vez instalado el manejo es relativamente sencillo una vez se llega a comprender cómo funciona. Se gestiona mediante etiquetas (labels) en los servicios o contenedores en los que queremos que actúe.
Instalar Traefik
Para instalar Traefik en nuestro sistema, crearemos un contenedor Docker utilizando la herramienta Docker Compose. Para ello lo primero que haremos será crear una estructura de directorios y ficheros de configuración para el servicio, además de un fichero docker-compose.yml con la definición del contenedor, y después lo pondremos en ejecución en el sistema.
mkdir -p docker/traefik/traefik-data
touch docker/traefik/traefik-data/acme.json
chmod 600 docker/traefik/traefik-data/acme.json
nano docker/traefik/traefik-data/traefik.yml
Dentro del fichero traefik.yml incluimos el siguiente contenido. Cambiar la dirección de correo para que LetsEncrypt nos avise acerca de la caducidad de los certificados:
api:
dashboard: true
entryPoints:
http:
address: ":80"
https:
address: ":443"
providers:
docker:
endpoint: "unix:///var/run/docker.sock"
exposedByDefault: false
certificatesResolvers:
http:
acme:
email: email@ejemplo.com
storage: acme.json
httpChallenge:
entryPoint: http
Traefik escuchará así en los puertos 80 y 443 correspondientes a los servicios http y https respectivamente. El dashboard de monitorización de Traefik no dispone de método de autentificación, así que crearemos unas credenciales en formato htpasswd para después asignárselas al servicio del dashboard de Traefik. Cambiar el usuario y contraseña por los que deseemos:
sudo apt-get install apache2-utils
echo $(htpasswd -nb ) | sed -e s/\\$/\\$\\$/g
Ahora procedemos a crear la red virtual dónde estará enganchado Traefik y el contenedor:
docker network create traefik-proxy
cd docker/traefik
nano docker-compose.yml
Dentro del fichero docker-compose.yml incluimos el siguiente contenido. Cambiar el usuario/contraseña por los generados anteriormente, y el host de acceso por el que corresponda:
version: '3'
services:
traefik:
image: traefik:v2.4.2
container_name: traefik
restart: unless-stopped
security_opt:
- no-new-privileges:true
networks:
- traefik-proxy
ports:
- 80:80
- 443:443
volumes:
- /etc/localtime:/etc/localtime:ro
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./traefik-data/traefik.yml:/traefik.yml:ro
- ./traefik-data/acme.json:/acme.json
labels:
- "traefik.enable=true"
- "traefik.http.routers.traefik.entrypoints=http"
- "traefik.http.routers.traefik.rule=Host(`traefik.ejemplo.com`)"
- "traefik.http.middlewares.traefik-auth.basicauth.users=USUARIO:CONTRASEÑA"
- "traefik.http.middlewares.traefik-https-redirect.redirectscheme.scheme=https"
- "traefik.http.routers.traefik.middlewares=traefik-https-redirect"
- "traefik.http.routers.traefik-secure.entrypoints=https"
- "traefik.http.routers.traefik-secure.rule=Host(`traefik.ejemplo.com`)"
- "traefik.http.routers.traefik-secure.middlewares=traefik-auth"
- "traefik.http.routers.traefik-secure.tls=true"
- "traefik.http.routers.traefik-secure.tls.certresolver=http"
- "traefik.http.routers.traefik-secure.service=api@internal"
networks:
traefik-proxy:
external: true
Guardamos la información pulsando Ctrl+X, y, ENTER.
Ponemos en marcha el contenedor usando Docker Compose:
docker-compose up -d
Abrimos un navegador web, y accedemos al dashboard de Traefik que tenemos en ejecución en Docker:
https://traefik.ejemplo.com/
Fuentes:
https://atareao.es/tutorial/traefik/
https://www.redeszone.net/marcas/qnap/configurar-docker-portainer-traefik-servicios-nas-qnap/
0 comentarios :
Publicar un comentario
Los comentarios pueden ser revisados en cualquier momento por los moderadores.
Serán publicados aquellos que cumplan las siguientes condiciones:
- Comentario acorde al contenido del post.
- Prohibido mensajes de tipo SPAM.
- Evite incluir links innecesarios en su comentario.
- Contenidos ofensivos, amenazas e insultos no serán permitidos.
Debe saber que los comentarios de los lectores no reflejan necesariamente la opinión del STAFF.