security(gitea): block stack.env routes

This commit is contained in:
Eduardo David Paredes Vara
2026-08-16 21:46:22 +00:00
parent 4935473f3c
commit bdb83f77d3
2 changed files with 50 additions and 0 deletions
+15
View File
@@ -5,12 +5,27 @@ Gitea es un servidor Git ligero y autoalojado, similar a GitHub o GitLab.
## 📋 Descripción
Este stack despliega Gitea con:
- Base de datos PostgreSQL
- Servidor SSH para operaciones Git
- Gitea Actions (CI/CD similar a GitHub Actions)
- Act Runner para ejecutar pipelines
- Integración con Traefik y Authentik
## Protección de `stack.env`
La configuración [`traefik-dynamic.yml`](./traefik-dynamic.yml) contiene un router de prioridad alta que devuelve `403 Forbidden` para cualquier ruta de Gitea cuyo último segmento sea exactamente `stack.env`, sin importar mayúsculas o minúsculas. Esto cubre tanto la vista web como las rutas raw de cualquier repositorio.
El bloqueo se implementa en Traefik, antes de Gitea, y no usa CrowdSec. Por eso se aplica igual a todas las IP y una petición a `stack.env` no provoca por sí sola un baneo que afecte al resto del sitio. Las demás rutas siguen pasando por `crowdsec-bouncer@file`.
Instala o actualiza la configuración activa con:
```bash
sudo install -m 0644 gitea/traefik-dynamic.yml /opt/traefik/dynamic/gitea.yml
```
Traefik observa el directorio dinámico y recarga el archivo sin reiniciar el contenedor.
## 🚀 Despliegue
### Prerequisitos
+35
View File
@@ -0,0 +1,35 @@
http:
routers:
gitea-block-stack-env:
rule: 'Host(`gitea.sherlockhomeless.net`) && PathRegexp(`(?i)(^|/)stack[.]env$`)'
priority: 1000
entryPoints:
- websecure
tls:
certResolver: letsencrypt
middlewares:
- gitea-deny-stack-env
service: gitea
gitea:
rule: 'Host(`gitea.sherlockhomeless.net`)'
entryPoints:
- websecure
tls:
certResolver: letsencrypt
middlewares:
- crowdsec-bouncer@file
service: gitea
middlewares:
gitea-deny-stack-env:
ipAllowList:
sourceRange:
- 0.0.0.0/32
- ::/128
services:
gitea:
loadBalancer:
servers:
- url: http://gitea:3000