51 lines
2.2 KiB
Markdown
51 lines
2.2 KiB
Markdown
# 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.
|
|
|
|
## 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.:
|
|
|
|
```bash
|
|
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.
|