Files
2026-11-04 08:55:53 +01:00

2.8 KiB
Raw Permalink Blame History

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-inline ani unsafe-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-IP tylko od adresow z security.trusted_proxies (prawy skrajny niezaufany adres) – klient nie moze podszyc sie pod inny IP.
  • Sesje sa co session_revalidate_seconds sprawdzane 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 = true dodaje Strict-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.