Status: Security-ready beta (Gate 2)
Last updated: May 2026
- Module filesystem data (files and directories under configured module roots)
- Credentials (password file hashes, optional TLS private keys)
- Daemon configuration (
/etc/simple-rsyncd/) - Network service availability (TCP bind port, default 873)
| Boundary | Trust level |
|---|---|
| Client → daemon (network) | Untrusted unless TLS + auth configured |
| Module path → host filesystem | Semi-trusted — constrained by module root, symlink policy |
| Operator → config files | Trusted |
| Package install → host | Trusted (DEB/RPM/PKG supply chain) |
- TLS 1.2+ optional via
[ssl]/ssl.enabledwith cert/key loading - Password auth with SHA-256 hashes;
reject_plaintext_passwordsskips legacy plain entries - IP/CIDR allow/deny enforced at connection accept
- Connection rate limiting per client IP (minute/hour windows)
- Privilege drop after bind when running as root (
security.user/security.group) - Optional chroot before privilege drop (requires root)
- Path hardening — symlink escape blocked when
allow_symlinks=false
- Native
rsync(1)wire protocol not verified - Public-key auth implemented (Ed25519/RSA/ECDSA); not audited for production crypto review
- OAuth2 not implemented
- bcrypt/argon2 not used (SHA-256 + salt today)
- Bandwidth throttling not enforced
- No Prometheus / centralized audit pipeline
- Enable TLS for any non-localhost exposure
- Set
reject_plaintext_passwords=trueand migrate password file (see PASSWORD_MIGRATION.md) - Configure
access.allowed_networksto minimum required CIDRs - Enable
rate_limit.enabled - Run daemon as root only to bind port <1024, with immediate privilege drop to dedicated user
- Protection against compromised host OS
- Side-channel attacks on TLS or hashing
- Multi-tenant isolation beyond module path separation