Debian 上 SFTP 的安全策略清单
一 基础与认证安全
- 保持系统与软件包为最新:执行 apt update && apt upgrade,及时修补漏洞。
- 禁用 root 直接登录:设置 PermitRootLogin no。
- 优先使用 SSH 密钥认证,必要时再启用密码:配置 PubkeyAuthentication yes、PasswordAuthentication no(或先用密钥、后逐步关闭密码)。
- 限制可登录对象:通过 AllowUsers/AllowGroups 精确放行;必要时用 DenyUsers 拉黑。
- 降低暴力破解风险:设置 MaxAuthTries(如 3–5 次)、MaxSessions(如 2–5 个);启用 Fail2Ban 自动封禁。
- 会话保活与空闲超时:设置 ClientAliveInterval 300、ClientAliveCountMax 3,及时清理僵死会话。
- 日志与审计:持续关注 /var/log/auth.log,对异常登录与失败尝试进行告警与处置。
二 传输与网络边界
- 防火墙最小化放行:仅开放 SSH/SFTP 端口(默认 22),如使用 ufw 执行 ufw allow OpenSSH;如需改端口(如 2222),同步放行新端口并限制来源网段。
- 端口与来源控制:在 sshd_config 中使用 Port 2222 并结合 AllowUsers your_username@your_ip 做来源 IP 白名单。
- 禁用不必要通道:对 SFTP 用户禁用 TCP 转发 与 X11 转发,减少攻击面。
- 可选端口变更:更改默认端口可降低自动化扫描命中率,但应与防火墙策略配套实施。
三 用户隔离与权限控制
- 使用 Chroot Jail 限制目录可见范围:对 SFTP 用户组配置 ChrootDirectory %h,并强制 ForceCommand internal-sftp。
- 正确的目录所有权与权限:Chroot 根目录需由 root:root 拥有且权限 755;可写目录(如 upload)由业务用户拥有,例如 chown sftpuser:sftpusers /home/sftpuser/upload。
- 精细化权限:在需要更细粒度控制时,使用 ACL(如 setfacl)为用户授予目录的读写执行权限。
- 专用 SFTP 用户组:创建 sftpusers 组,仅将需要 SFTP 的账号加入,避免与系统管理账号混用。
四 推荐的 sshd_config 最小安全模板
# 基础加固
Port 22
PermitRootLogin no
MaxAuthTries 3
MaxSessions 3
ClientAliveInterval 300
ClientAliveCountMax 3
# 认证方式
PubkeyAuthentication yes
PasswordAuthentication no
ChallengeResponseAuthentication no
# 仅对 SFTP 用户组生效
Match Group sftpusers
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
PasswordAuthentication no
# 可选:仅允许特定来源
# AllowUsers your_username@your_ip
- 修改后执行 systemctl restart ssh 使配置生效,并先用非生产账号验证连接与权限。
五 运维与持续安全
- 持续更新与补丁:定期执行 apt update/upgrade,关注 Debian 安全公告。
- 入侵防护:启用并调优 Fail2Ban,缩短封禁时间窗、增加白名单例外。
- 日志集中与告警:将 /var/log/auth.log 接入集中日志平台,对失败登录、异常时段与来源 IP 设置告警。
- 定期审计:复核 sshd_config 变更、用户组成员、目录权限与 ACL;对不再使用的账号执行禁用或锁定。