如何配置Debian SFTP以增强安全性
小樊
45
2025-11-20 08:53:20
Debian SFTP 安全加固实操指南
一 基础安全配置
安装与更新:执行 sudo apt update && sudo apt install openssh-server -y,保持系统与软件包为最新。
编辑 SSH 服务端配置 /etc/ssh/sshd_config,建议设置:
PermitRootLogin no (禁止 root 远程登录)
PubkeyAuthentication yes (启用公钥认证)
PasswordAuthentication no (禁用密码登录,启用密钥后再关闭)
AuthorizedKeysFile .ssh/authorized_keys
ClientAliveInterval 300 、ClientAliveCountMax 0 (空闲超时断开)
可选:AllowUsers your_username (仅允许指定用户)
重启服务:sudo systemctl restart sshd 。
防火墙放行:sudo ufw allow OpenSSH ;如需限制来源 IP,可改为 ufw allow from YOUR_IP to any port 22 。
二 基于密钥的认证
客户端生成密钥:ssh-keygen -t rsa -b 4096 ,私钥权限设为 600 。
分发公钥:ssh-copy-id user@server_ip ,或手动将公钥追加到服务器用户家目录的 ~/.ssh/authorized_keys 。
服务器端确保:PubkeyAuthentication yes 、AuthorizedKeysFile .ssh/authorized_keys 已启用。
验证:sftp user@server_ip ,应无需密码即可登录(若仍提示密码,检查 .ssh 目录与文件权限:~/.ssh 700 、authorized_keys 600 )。
客户端便捷配置:在 ~/.ssh/config 增加
Host server_ip
User username
IdentityFile ~/.ssh/id_rsa
三 目录隔离与访问控制
创建 SFTP 专用组:sudo groupadd sftpusers 。
新建受限用户(禁止 shell 登录):sudo adduser --shell /bin/false --gecos “SFTP User” sftpuser ;sudo usermod -aG sftpusers sftpuser。
设置 Chroot 根目录:
家目录属主必须为 root:root ,权限 755 :sudo chown root:root /home/sftpuser ;sudo chmod 755 /home/sftpuser 。
创建可写子目录:sudo mkdir /home/sftpuser /upload;sudo chown sftpuser:sftpusers /home/sftpuser /upload;sudo chmod 755 /home/sftpuser /upload。
在 /etc/ssh/sshd_config 增加 Match 段(放在文件末尾,避免被全局配置覆盖):
Match Group sftpusers
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
AllowAgentForwarding no
PermitTunnel no
AllowStreamLocalForwarding no
重启服务:sudo systemctl restart sshd 。
说明:Chroot 要求被限制目录及其上级目录的所有权为 root ,否则会拒绝登录;如需自定义根目录,可将 ChrootDirectory 指向专用目录(如 /sftp/%u),并确保该目录属主为 root。
四 进阶加固与运维
仅密钥登录后再禁用密码:确认密钥登录稳定,再将 PasswordAuthentication 设为 no 并重启 sshd 。
精细化访问控制:
使用 AllowUsers/AllowGroups 限制可登录账户或组。
限制来源 IP:在防火墙或 /etc/hosts.allow、/etc/hosts.deny 中控制访问。
会话保活与资源控制:
保持 ClientAliveInterval 300 、ClientAliveCountMax 0 以自动断开空闲会话。
按需设置 MaxAuthTries、MaxSessions 等参数以抵御暴力尝试。
日志与监控:实时查看 /var/log/auth.log ,关注 Failed password、Connection closed 等异常;配置 logwatch 或集中日志审计。
系统加固:保持 apt 更新;启用 ufw 或 nftables 仅放行 22 端口;必要时启用 AppArmor/SELinux 对 sshd 进行最小权限约束。
五 快速验证与回滚
连接测试:
密钥登录:sftp user@server_ip (应直接登录)
失败回显:Permission denied(公钥未分发或权限错误)、Connection closed by server_ip (Chroot 权限/属主不正确)
配置语法检查:sshd -t(语法无误再重启)
回滚步骤:将 /etc/ssh/sshd_config 恢复为备份;PasswordAuthentication 临时改回 yes ;重启 sshd ;检查日志定位问题。