docs(deployment): add daemon TLS-in-front deployment recipe (#2052)#3518
Merged
Conversation
SECURITY.md referenced TLS-in-front deployment but did not provide a runnable recipe. Add `docs/deployment/daemon-tls.md` with concrete configurations for the three supported terminators (stunnel, `ssh -L`, HAProxy TCP mode), hardened systemd unit excerpts for each scenario, and nftables/iptables/container-bridge rules that deny external access to the daemon's loopback-bound 873/tcp port. Cross-link from the SECURITY.md "Daemon TLS" hardening note and from the README "Known Limitations / Architectural Trade-offs" section so operators land on the recipe directly.
oferchen
added a commit
that referenced
this pull request
May 5, 2026
…3518) SECURITY.md referenced TLS-in-front deployment but did not provide a runnable recipe. Add `docs/deployment/daemon-tls.md` with concrete configurations for the three supported terminators (stunnel, `ssh -L`, HAProxy TCP mode), hardened systemd unit excerpts for each scenario, and nftables/iptables/container-bridge rules that deny external access to the daemon's loopback-bound 873/tcp port. Cross-link from the SECURITY.md "Daemon TLS" hardening note and from the README "Known Limitations / Architectural Trade-offs" section so operators land on the recipe directly.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Closes tracker #2052. SECURITY.md referenced "TLS-in-front" deployment as the recommended way to expose
oc-rsync --daemonover an untrusted network but did not provide a runnable recipe. This PR addsdocs/deployment/daemon-tls.mdwith concrete, copy-pasteable configurations and cross-links it from SECURITY.md and README.md so operators land on the recipe directly.Files changed
docs/deployment/daemon-tls.md- the recipe itself.SECURITY.md- inline link added under the existing "Daemon TLS" hardening note.README.md- inline link added to the "Daemon TLS" bullet under "Known Limitations / Architectural Trade-offs".No code changes; docs only.
Recipe contents
The new doc covers:
address = 127.0.0.1,port = 873) with a minimaloc-rsyncd.confplussecrets filepermissions,auth users,hosts allow/hosts deny, andrefuse optionsexamples that mirror upstreamrsyncd.conf(5)syntax.0.0.0.0:874and forwarding to127.0.0.1:873. Modeled directly on upstream'starget/interop/upstream-src/rsync-3.4.1/stunnel-rsyncd.conf. Includes a matching client-side stunnel block.ssh -Lrecipe for ad-hoc operator access, with an~/.ssh/configblock (ExitOnForwardFailure yes,ServerAliveInterval) and a systemd user unit for persistent forwards.mode tcp,bind ... ssl crt ...,server 127.0.0.1:873 check), modern TLS defaults (Mozilla intermediate 2024), optional PROXY-protocol v2 with a pointer to the daemon'sproxy_protocol.rsv1/v2 handler.oc-rsyncd.servicereinforcing the loopback bind and tightening syscall filters,stunnel-oc-rsyncd.serviceunit,haproxy.service,oc-rsyncd-tunnel.servicefor the SSH-forward case.tcp/874from authorised CIDRs and unconditionally droptcp/873on non-loopback interfaces; Docker/Podman bridge isolation patterns (--internalnetworks, host networking + firewall).ss,openssl s_client, andnc -zvprobes.Verification
873confirmed viacrates/daemon/src/daemon.rs(DEFAULT_PORT) andcrates/daemon/src/rsyncd_config/sections.rs.accept,connect,cert,key,verify,CAfile,sslVersionMin) cross-checked against the upstreamstunnel-rsyncd.confexample and stunnel(8).rsyncd.conf(5)directives (address,port,auth users,secrets file,hosts allow,hosts deny,use chroot,refuse options) verified againsttarget/interop/upstream-src/rsync-3.4.1/rsyncd.conf.5.md.host.exampleused consistently for the public hostname;198.51.100.0/24and2001:db8::/32(RFC 5737 / RFC 3849) used for documentation CIDRs.Test plan
docs/deployment/daemon-tls.mdresolve on github.com.