Debian SFTP 配置审计清单与实操
一 审计目标与范围
- 覆盖 配置合规性、身份鉴别、传输与访问控制、日志与完整性、可用性与加固 五个维度,形成可复用的审计基线。
- 重点核对:仅使用 internal-sftp、正确的 Chroot 根目录所有权与权限、禁用不必要通道(如 TCP 转发、X11 转发、隧道)、启用 公钥认证、限制可登录用户/来源 IP、开启 Fail2ban、落实 文件级审计 与 定期巡检。这些做法与 Debian 上 SFTP 的安全配置与加固实践一致,可作为审计基准。
二 配置合规性检查
- 配置文件与生效项
- 核对 /etc/ssh/sshd_config 是否存在且由 root:root 644 保护;备份并集中管理版本。
- 确认仅保留一个 Subsystem sftp internal-sftp 声明,避免与旧式 /usr/lib/openssh/sftp-server 并存引发冲突或绕过风险。
- 关键安全指令
- 对受限组使用 Match 块,统一设置:ChrootDirectory(根目录必须为 root 所有且权限 ≤ 755)、ForceCommand internal-sftp、AllowTcpForwarding no、X11Forwarding no、PermitTunnel no。
- 登录认证策略:PubkeyAuthentication yes,PasswordAuthentication no(在确认公钥已分发且可用后再禁用密码);必要时用 AllowUsers/AllowGroups 白名单化登录主体。
- 目录与权限
- Chroot 根目录不可被非 root 写入;用户可写目录置于根下并单独赋权(如 755/750/700 分级),避免因权限不当导致登录或上传失败。
- 服务与连通
- 服务状态与开机自启:systemctl status ssh、systemctl is-enabled ssh;端口与防火墙策略一致(仅放通 22/TCP 的来源网段/主机)。
三 身份鉴别与访问控制审计
- 用户与组
- 专用组(如 sftpusers)集中管理;受限用户使用 /usr/sbin/nologin 或 /bin/false 作为登录 Shell,确保无法通过 SSH 获取交互式 shell。
- 公钥与本地账户
- 核查 ~/.ssh/authorized_keys 权限为 600、目录 700;清理过期/未使用密钥;禁用或移除共享账号与默认测试账号。
- 来源限制
- 通过 UFW/iptables 或云安全组仅允许受控 IP/网段 访问 22/TCP;结合 AllowUsers/AllowGroups 做二次白名单。
- 暴力防护
- Fail2ban 启用并针对 sshd 配置合理阈值(如 maxretry、findtime、bantime),定期复核封禁列表与日志。
四 日志与完整性审计
- 连接与认证日志
- 确认 LogLevel 不低于 INFO,关键环境建议 VERBOSE;集中采集 /var/log/auth.log(Debian 常用路径)至 SIEM/LM,关注 Failed/Accepted 与关键事件(如 root 登录、SFTP 子系统启动)。
- 内部 SFTP 可提升日志细粒度:在 Subsystem sftp internal-sftp -l VERBOSE -f AUTHPRIV 下记录更详细的会话与操作信息,便于审计追溯。
- 文件与目录审计
- 对 SFTP 根及可写目录部署 auditd 系统调用审计,记录 open/write/delete/rename 等关键行为,便于发现越权访问与数据外泄。
- 完整性校验
- 对 /etc/ssh/sshd_config 与关键目录设置 AIDE 基线,定期执行校验并告警变更。
五 可用性与加固复核
- 连通性与性能
- 定期执行 sftp 上传/下载回归测试;复核 端口占用、网络延迟/丢包、磁盘 I/O 等导致的超时或慢速问题。
- 加密与算法
- 禁用过时或不安全算法(如 diffie-hellman-group1-sha1),保持客户端/服务端算法套件一致,减少握手失败与降级风险。
- 例行巡检
- 建立 月度/季度 巡检:补丁更新(含 OpenSSH)、用户与密钥盘点、日志留存周期与归档、备份可用性与恢复演练、配置基线漂移检查。
附 一键核查命令清单
- 配置与权限
- grep -nE ‘^(Subsystem|Match|ChrootDirectory|ForceCommand|AllowTcpForwarding|X11Forwarding|PermitTunnel|PasswordAuthentication|PubkeyAuthentication|AllowUsers|AllowGroups)’ /etc/ssh/sshd_config
- stat -c ‘%U:%G %a %n’ /etc/ssh/sshd_config
- find /home /sftp -xdev -type d ( -perm -002 -o -perm -020 ) -ls
- 服务与端口
- systemctl is-active ssh && systemctl is-enabled ssh
- ss -tnlp | grep ‘:22\b’
- ufw status verbose || iptables -S | grep – ‘-p tcp --dport 22’
- 日志与审计
- tail -n50 /var/log/auth.log | egrep ‘sshd|sftp|Failed|Accepted’
- ausearch -k sftp_monitor 2>/dev/null || echo “auditd rule not found”
- aureport -f --summary
- 用户与密钥
- getent group sftpusers
- cut -d: -f1,7 /etc/passwd | awk -F: ‘$2 ~ /(nologin|false)/ {print}’
- find ~sftpuser/.ssh -type f ( -name authorized_keys -o -name id_* ) -exec stat -c ‘%U:%G %a %n’ {} ;
以上清单可直接用于建立“合规—风险—证据”闭环的审计流程,并与变更管理、告警响应、定期巡检结合,形成可持续改进的 SFTP 安全运营体系。