mirror of
https://github.com/bolkedebruin/rdpgw.git
synced 2026-05-19 14:50:02 +00:00
Restrict the rdpgw-auth socket to its own UID by default (#190)
The auth daemon's gRPC socket was world-writable and accepted any local UID that could connect to it. On a multi-tenant host any user on the box could speak the gRPC API and run an arbitrary username/ password through PAM -- effectively an unauthenticated PAM oracle. Create the socket with mode 0660 (Umask(0117)) and gate Accept on SO_PEERCRED: only the daemon's own UID is allowed by default, plus any operator-supplied --allow-uid / --allow-gid. Privilege-separated deployments (rdpgw and rdpgw-auth as different users) need to list the gateway's UID, or share a group; the existing path otherwise would have been permissive. The peer-credentials check is Linux-only; the non-Linux build keeps the listener as-is and logs a warning, since rdpgw-auth itself requires libpam and is effectively Linux-only in practice.
This commit is contained in:
@@ -9,6 +9,11 @@ and the project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.
|
||||
|
||||
### Changed
|
||||
|
||||
- `rdpgw-auth` now creates its socket with mode `0660` and accepts only
|
||||
connections whose peer UID is on an allow-list (default: the daemon's
|
||||
own UID). Operators running rdpgw and rdpgw-auth as different users
|
||||
must list the gateway's UID via `--allow-uid` or share a group via
|
||||
`--allow-gid`. See [UPGRADING.md](UPGRADING.md).
|
||||
- `X-Forwarded-For` is now honored only when the request arrives from
|
||||
a `Server.TrustedProxies` CIDR. The default `Server.TrustedProxies`
|
||||
is empty, so by default the request's `RemoteAddr` (host portion) is
|
||||
@@ -25,6 +30,7 @@ and the project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.
|
||||
|
||||
### Added
|
||||
|
||||
- `rdpgw-auth --allow-uid` and `--allow-gid` flags (repeatable).
|
||||
- `Server.TrustedProxies` (`[]string`, CIDR, default empty).
|
||||
- `Server.AllowedDestinationPorts` (`[]int`, default `[3389]`).
|
||||
- `Server.AllowPrivateDestinations` (`bool`, default `false`).
|
||||
|
||||
Reference in New Issue
Block a user