2.8 KiB
Security model
Domyslne zasady
- Panel nasluchuje domyslnie tylko na
127.0.0.1. - Produkcyjny cookie sesji:
Secure,HttpOnly,SameSite=Strict. - Kazda mutacja po zalogowaniu wymaga CSRF.
- Sesje/challenge MFA maja losowe tokeny kryptograficzne.
- Logowanie i recovery sa limitowane per IP + konto.
- CSP nie zawiera
unsafe-inlineaniunsafe-eval; dodatkowo nosniff, frame deny, no-referrer i ograniczony Permissions-Policy. - Request body i timeout sa limitowane.
- Za reverse proxy adres klienta brany jest z
X-Forwarded-For/X-Real-IPtylko od adresow zsecurity.trusted_proxies(prawy skrajny niezaufany adres) – klient nie moze podszyc sie pod inny IP. - Sesje sa co
session_revalidate_secondssprawdzane w bazie: wylaczone/usuniete konto oraz odebrane domeny dzialaja natychmiast. - Zmiana hasla wylogowuje pozostale sesje konta; zmiana hasla/dezaktywacja przez administratora wylogowuje wszystkie sesje tego konta.
- Wygasle sesje, wyzwania MFA i liczniki prob sa okresowo czyszczone z pamieci.
hsts = truedodajeStrict-Transport-Security.
Development mock DB
database.dev_mock=true jest akceptowane tylko z environment="development" i SQLite. dev.sh tworzy .dev/postfixadmin-rs.sqlite z publicznymi testowymi credentialami. Tego pliku ani tych kont nie wolno przenosic do produkcji; .dev/ jest ignorowane przez Git i nie trafia do paczki release.
Legacy hasla
Formaty MD5, SHA1, DES, cleartext i podobne sa wspierane tylko dla zgodnosci. Nie nalezy automatycznie migrowac mailbox hashy do Argon2, jesli Dovecot/Postfix SASL nie obsluguje tego samego schematu.
Weryfikator rozpoznaje samopisujace hashe i moze obslugiwac mieszana baze podczas migracji. Nowe hashe sa generowane przez password.scheme. Recovery tokeny sa zawsze Argon2id i nie dziedzicza legacy schematu.
Fallback doveadm pw nie uzywa shella. Haslo jest przekazywane przez stdin, nie przez argv procesu.
Hooki
Hook to lista [program, arg1, arg2, ...]. Program jest wykonywany bez sh -c; placeholdery sa podstawiane jawnie. allow_legacy_shell_hooks nie wlacza arbitralnej powloki.
Alias i fetchmail
Niebezpieczne cele aliasow (pipe/command) sa domyslnie blokowane. fetchmail_extra_options=false blokuje arbitrary MDA/extra options.
Sekrety
Hasla DB/SMTP trzymaj poza TOML, np.:
POSTFIXADMIN_RS__DATABASE__PASSWORD='...'
POSTFIXADMIN_RS__SMTP__PASSWORD='...'
Nie commituj .env.
Reverse proxy i IP
Obecna wersja uzywa bezposredniego TCP peer do rate limit i TOTP exception. Za reverse proxy nie wlaczaj TOTP IP exceptions, dopoki nie ma jawnie skonfigurowanego trusted-proxy header handling.
Deployment
Uruchamiaj jako dedykowany, nieuprzywilejowany user. Przyznaj tylko potrzebny dostep do doveadm, openssl, mysqldump/pg_dump i wymaganych socketow/uslug. Nie uruchamiaj jako root.