首页/安全/漏洞与攻击面速查/rsync 服务端未授权同步风险
主机与服务风险面53 条

rsync 服务端未授权同步风险

rsync daemon(默认 873)在未配置认证用户时,模块可能对可达者开放列表与读写;配置文件疏漏会造成数据被同步走或被覆盖。

漏洞与攻击面速查安全更新于 2026-10-13

rsync 服务端的风险

rsync 以守护进程模式运行时默认监听 873 端口,模块由 /etc/rsyncd.conf 定义。如果没有配置认证用户,模块会对任何可达主机开放列表与读写:轻则数据被同步走,重则可写模块被覆盖甚至写入后门文件。问题基本都来自配置疏漏——只写 hosts allow 不写认证、忘记 list = no、read only 未开启。这类服务常用于备份与分发,往往跨网段可达。

基本信息

组件rsync daemon(独立服务模式),不是 ssh 通道模式
默认端口873 TCP
配置文件/etc/rsyncd.conf,口令文件常为 /etc/rsyncd.secrets
主要风险无认证模块、允许列出模块、可写模块、来源未限制
加固项auth users、secrets file、hosts allow 与 deny、read only、list
权限要求口令文件权限 600,属主 root
检查方式ss 查看端口监听,rsync 列出模块确认是否受限

配置项与作用

配置项作用建议值
read only禁止客户端在此模块写入yes,除非确实需要接收数据
list是否允许列出模块名no,减少枚举面
auth users允许连接的用户清单明确列出用户名,不用通配
secrets file用户名与口令文件权限 600,属主 root
hosts allow来源白名单只写业务需要的网段
hosts deny来源黑名单0.0.0.0/0 作为兜底

加固要点(rsyncd.conf)

加固要点(rsyncd.conf)
uid = nobody
gid = nobody

[backup]
    path = /data/backup
    read only = yes
    list = no
    auth users = rsyncuser
    secrets file = /etc/rsyncd.secrets   # 权限 600,属主 root
    hosts allow = 10.0.0.0/24
    hosts deny = 0.0.0.0/0

核查命令

核查命令
ss -ltnp | grep 873
# 授权范围内的连通性确认:能列出模块说明未限制列表
rsync rsync://<目标IP>/
# 列出指定模块,正常应要求认证
rsync rsync://<目标IP>/backup/
# 检查口令文件权限是否为 600
ls -l /etc/rsyncd.secrets

典型使用场景

  • 备份通道上线前的配置评审
  • 季度巡检中的文件共享服务暴露面核查
  • 渗透测试报告里未授权同步问题的整改
  • 迁移备份方案时与现有配置做对照
  • 应急时确认是否存在异常同步记录
  • 审计举证:说明哪些主机可读写哪些模块
read only 与 list = no 是低成本高收益的两个配置项。绝大多数分发场景只需要「只读 + 认证 + 来源限制」这三项。
可写模块配合弱认证风险最高:攻击者可以覆盖目标目录文件,甚至替换脚本或配置实现持久化,影响不止数据泄露。

易错点

  • 只配 hosts allow 不做认证:网段内任何主机都可读写共享模块
  • 口令文件权限过宽(如 644),同机普通用户可直接读取账号口令
  • 备份模块设为可写,攻击者可覆盖目标目录文件实现持久化
  • 忘记 list = no,模块名称与目录结构被轻易枚举
  • 改完配置未重启或未验证,改动实际没有生效

数据来源与参考

  • rsync 官方文档(rsyncd.conf 手册页)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌