FerrisGitSeguridad
Seguridad y datos
Las medidas que protegen una instancia, descritas con precisión. Los datos nunca salen del servidor.
Lo que devuelve el servidor
Las cabeceras de seguridad, tal como las envía una instancia.
$ curl -s -D - -o /dev/null http://localhost:8080/health
HTTP/1.1 200 OK
content-type: text/plain; charset=utf-8
content-security-policy: default-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data:; object-src 'none'; base-uri 'self'; frame-ancestors 'none'
x-frame-options: DENY
x-content-type-options: nosniff
referrer-policy: no-referrer
x-robots-tag: noindex, nofollow
content-length: 2
date: Sun, 04 Oct 2026 11:41:43 GMT- La autenticación multifactor es obligatoria
- Una cuenta sin ningún factor activo pasa por la configuración antes de poder hacer cualquier otra cosa. TOTP, passkeys y códigos de respaldo.
- Contraseñas con hash Argon2
- Una sal por contraseña. Un nombre de usuario desconocido cuesta tanto cálculo como una contraseña errónea, y recibe la misma respuesta.
- Secretos cifrados con AES-256-GCM
- Variables de CI, secretos de webhooks, contraseña SMTP y secretos TOTP, bajo
SETTINGS_ENCRYPTION_KEY. - Tokens para Git, nunca contraseñas
- Git sobre HTTPS se autentica con un token de acceso personal, guardado con hash: el servidor no puede volver a leerlo.
- Un registro de auditoría
- Inicios de sesión fallidos, accesos Git denegados, restablecimientos de contraseña, promociones y restablecimientos de MFA por un administrador se registran como eventos.
- Sin cookies, cabeceras estrictas
- Las sesiones son JWT. Cada respuesta lleva una Content-Security-Policy,
X-Frame-Options: DENY, y las rutas de acceso tienen límite de peticiones por IP. - Sus datos, en su servidor
- PostgreSQL y un directorio de repositorios, ambos a su cargo para las copias de seguridad. La imagen corre con un usuario sin privilegios sobre un sistema de archivos de solo lectura.
Evaluar FerrisGit y desplegar una instancia propia.
La instancia pública permite conocer el producto. Una instancia propia conserva el código.
git clone https://github.com/Masmarino/FerrisGit.git
cd FerrisGit
cp .env.example .env
# set POSTGRES_PASSWORD, JWT_SECRET, SETTINGS_ENCRYPTION_KEY and the admin password in .env
docker compose up -d --build