security(gitea): block stack.env routes
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user