项目地址:
受控文件交换系统
本版本可直接部署到 Rocky Linux ,固定监听同一 IP 的两个入口:
- 办公网:
https://IP:8080 - 研发网:
https://IP:8081
两个端口是逻辑入口区分,不是网闸或物理隔离。必须在 firewalld、VLAN 或上游 ACL 中限制:办公网只能访问 8080,研发网只能访问 8081。
功能
- 本地账号登录;管理员可在页面创建本地用户、授予区域和角色。
- AD 登录:仅接受 LDAPS,按 AD 组映射
user、approver、admin。 - 服务端会话、
HttpOnly/SameSite=StrictCookie、CSRF 校验和本地密码 scrypt 哈希。 - 文件提交、基础类型与敏感特征拦截、双人审批、目标用户下载、SHA-256 与审计记录。
- 已允许文本、PDF、Office(Word/Excel/PowerPoint)、常见图片、ZIP/RAR/7Z/TAR/GZ 等压缩包、RPM/DEB 和 DWG;可执行文件与脚本仍默认拒绝。



部署
在 Rocky 上将项目拷贝到 /opt/secure-file-exchange 后执行:
sudo bash deploy/rocky-install.sh
sudo install -m 0640 -o root -g sfx deploy/sfx.env.example /etc/secure-file-exchange/sfx.env
sudo vi /etc/secure-file-exchange/sfx.env
sudo systemctl enable --now secure-file-exchange
一键升级
已部署的 Rocky 服务器执行以下命令,可自动备份、拉取最新代码、更新依赖并重启服务:
cd /opt/secure-file-exchange
sudo ./deploy/rocky-upgrade.sh
脚本默认升级 codex/secure-file-exchange-system 分支,备份保存到 /var/backups/secure-file-exchange/<时间戳>/。检测到本机未提交代码时会安全停止,不会强制覆盖。
先在 sfx.env 设置一次性初始管理员(至少 8 位密码):
BOOTSTRAP_ADMIN_USERNAME=sfxadmin
BOOTSTRAP_ADMIN_PASSWORD=replace-with-a-long-random-secret
首次服务启动会创建管理员;随后从环境文件删除 BOOTSTRAP_ADMIN_PASSWORD 并执行 sudo systemctl restart secure-file-exchange。
AD / Microsoft Active Directory
使用只读服务账号与企业 CA 证书,禁止 ldap:// 和跳过证书校验:
LDAP_URL=ldaps://ad.example.local:636
LDAP_BIND_DN=CN=sfx-reader,OU=Service Accounts,DC=example,DC=local
LDAP_BIND_PASSWORD=replace-this-secret
LDAP_BASE_DN=DC=example,DC=local
LDAP_TLS_CA_FILE=/etc/pki/ca-trust/source/anchors/ad-ca.pem
LDAP_ADMIN_GROUPS=CN=SFX-Admins,OU=Groups,DC=example,DC=local
LDAP_APPROVER_GROUPS=CN=SFX-Approvers,OU=Groups,DC=example,DC=local
AD 用户首次成功认证才创建本地身份记录;非映射组默认普通用户。不要创建与 AD 用户同名的本地账户。
必须完成的网络与安全项
- 生产必须配置
TLS_CERT_FILE、TLS_KEY_FILE和COOKIE_SECURE=true,使用 HTTPS。 - 替换部署脚本的
OFFICE_CIDR和RD_CIDR,分别放行 8080、8081;不要在 public zone 开放两个端口。 - 保持 SELinux Enforcing;不要关闭 SELinux 或防火墙。
- 每日备份
/var/lib/secure-file-exchange与/etc/secure-file-exchange/sfx.env(加密保存)。
验收
systemctl is-active secure-file-exchange显示active。- 办公网访问 8080、研发网访问 8081,页面应显示对应区域。
- 管理员创建一个办公审批人、一个研发接收人;办公用户上传 → 审批人批准 → 研发接收人下载。
- 尝试上传
.exe或含SECRET的 TXT,必须拒绝。 - 跨网段访问非本区端口必须被防火墙拒绝。
本系统仍不包含网闸、多引擎杀毒、沙箱、CDR、真实 DLP、HA 或不可篡改审计,涉密/高保密场景必须在这些能力之上建设。
受控文件交换系统(开源)
