guest sshd: drop DEBUG3 + StrictModes no; normalise /root perms
Previously /etc/ssh/sshd_config.d/99-banger.conf landed with: LogLevel DEBUG3 PermitRootLogin yes PubkeyAuthentication yes AuthorizedKeysFile /root/.ssh/authorized_keys StrictModes no DEBUG3 was debug leftover that floods journald in normal use. StrictModes no was a workaround for /root perm drift on the work disk — the real fix is to make those perms correct at provisioning time. New drop-in: PermitRootLogin prohibit-password PubkeyAuthentication yes PasswordAuthentication no KbdInteractiveAuthentication no AuthorizedKeysFile /root/.ssh/authorized_keys prohibit-password blocks password root login even if PasswordAuth gets flipped on elsewhere; KbdInteractiveAuth no closes the last interactive fallback; StrictModes is now on (sshd's default). normaliseHomeDirPerms chown/chmods /root to 0755 root:root at every work-disk mount (ensureAuthorizedKeyOnWorkDisk, seedAuthorizedKeyOnExt4Image); the .ssh dir also explicitly chown'd root:root. Verified end-to-end against a real VM: `sshd -T` reports strictmodes yes and all five directives match. Regression test (sshd_config_test.go) pins the allow-list and the deny-list (DEBUG3, StrictModes no, bare `PermitRootLogin yes`) so the next accidental reintroduction fails fast. README's Security section updated to reflect the new posture.
This commit is contained in:
parent
6cd52d12f4
commit
2e6e64bc04
6 changed files with 175 additions and 22 deletions
25
README.md
25
README.md
|
|
@ -187,20 +187,27 @@ documented in [`docs/advanced.md`](docs/advanced.md).
|
|||
## Security
|
||||
|
||||
Guest VMs are single-user development sandboxes, not multi-tenant
|
||||
servers. Every provisioned image is configured with:
|
||||
servers. Each guest's sshd is configured with:
|
||||
|
||||
```
|
||||
PermitRootLogin yes
|
||||
StrictModes no
|
||||
PermitRootLogin prohibit-password
|
||||
PubkeyAuthentication yes
|
||||
PasswordAuthentication no
|
||||
KbdInteractiveAuthentication no
|
||||
AuthorizedKeysFile /root/.ssh/authorized_keys
|
||||
```
|
||||
|
||||
The host SSH key is the only authentication mechanism, no password
|
||||
auth is enabled, and VMs are reachable only through the host bridge
|
||||
network (`172.16.0.0/24` by default). Do not expose the bridge
|
||||
interface or guest IPs to an untrusted network.
|
||||
The host SSH key is the only authentication mechanism. `StrictModes`
|
||||
is on (sshd's default); banger normalises `/root`, `/root/.ssh`, and
|
||||
`authorized_keys` perms at provisioning time so the default passes.
|
||||
|
||||
The web UI (when enabled) binds `127.0.0.1` by default. Do not
|
||||
expose it to a shared network.
|
||||
VMs are reachable only through the host bridge network
|
||||
(`172.16.0.0/24` by default). Do not expose the bridge interface or
|
||||
guest IPs to an untrusted network.
|
||||
|
||||
The web UI is disabled by default. If you opt in via
|
||||
`web_listen_addr`, it binds `127.0.0.1` — do not publish it to a
|
||||
shared network.
|
||||
|
||||
## Further reading
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue