FerrisGitSicherheit
Sicherheit und Ihre Daten
Die Maßnahmen, die eine Instanz schützen, genau beschrieben. Die Daten verlassen den Server nie.
Was der Server zurücksendet
Die Sicherheits-Header, wie eine Instanz sie sendet.
$ 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- Mehr-Faktor-Authentifizierung ist Pflicht
- Ein Konto ohne eingerichteten Faktor muss die Einrichtung durchlaufen, bevor es irgendetwas anderes tun kann. TOTP, Passkeys und Wiederherstellungscodes.
- Passwörter mit Argon2 gehasht
- Ein Salt pro Passwort. Ein unbekannter Benutzername kostet so viel Rechenzeit wie ein falsches Passwort und bekommt dieselbe Antwort.
- Secrets mit AES-256-GCM verschlüsselt
- CI-Variablen, Webhook-Secrets, das SMTP-Passwort und TOTP-Secrets, unter
SETTINGS_ENCRYPTION_KEY. - Tokens für Git, nie Passwörter
- Git über HTTPS authentifiziert sich mit einem persönlichen Zugriffstoken, gehasht gespeichert: der Server kann es nicht zurücklesen.
- Ein Audit-Log
- Fehlgeschlagene Anmeldungen, verweigerte Git-Zugriffe, Passwort-Resets, Beförderungen und MFA-Resets durch einen Administrator werden als Ereignisse aufgezeichnet.
- Keine Cookies, strikte Header
- Sitzungen sind JWTs. Jede Antwort trägt eine Content-Security-Policy,
X-Frame-Options: DENY, und die Anmelderouten sind pro IP ratenbegrenzt. - Ihre Daten, auf Ihrem Server
- PostgreSQL und ein Verzeichnis mit Repositories, beides von Ihnen zu sichern. Das Image läuft als unprivilegierter Benutzer auf einem schreibgeschützten Dateisystem.
FerrisGit evaluieren und die eigene Instanz betreiben.
Die öffentliche Instanz zeigt das Produkt. Die eigene Instanz behält den Code.
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