1. 更新系统及安装OpenSSH服务器
确保Debian系统为最新状态,修复已知安全漏洞:
sudo apt update && sudo apt upgrade -y
安装OpenSSH服务器(若未安装):
sudo apt install openssh-server -y
2. 配置SSH服务限制SFTP访问
编辑SSH主配置文件/etc/ssh/sshd_config
,进行以下关键设置:
PermitRootLogin no
Subsystem sftp internal-sftp
Match
指令针对特定用户或组应用严格规则(以组sftpusers
为例)。Match Group sftpusers
ChrootDirectory %h # 将用户根目录限制为其家目录(如/home/sftpuser)
ForceCommand internal-sftp # 强制使用SFTP,禁止SSH shell访问
AllowTcpForwarding no # 禁用TCP端口转发(防止隧道攻击)
X11Forwarding no # 禁用X11图形界面转发
PasswordAuthentication no
PubkeyAuthentication yes
保存配置后,重启SSH服务使更改生效:
sudo systemctl restart sshd
3. 创建专用SFTP用户组及用户
sudo groupadd sftpusers
sudo adduser --shell /bin/false --gecos "SFTP User" sftpuser
sudo usermod -aG sftpusers sftpuser
4. 设置用户主目录及权限
sudo chown root:root /home/sftpuser
sudo chmod 755 /home/sftpuser
upload
),并设置正确权限(属主为用户,属组为sftpusers
)。sudo mkdir /home/sftpuser/upload
sudo chown sftpuser:sftpusers /home/sftpuser/upload
sudo chmod 755 /home/sftpuser/upload
注:若需更细粒度权限(如允许用户修改自身文件),可使用ACL扩展权限:
sudo setfacl -R -m u:sftpuser:rwx /home/sftpuser/upload sudo setfacl -R -m d:u:sftpuser:rwx /home/sftpuser/upload
5. 配置防火墙限制访问
使用ufw
(Uncomplicated Firewall)限制SFTP(默认端口22)仅允许可信IP访问:
sudo apt install ufw -y
sudo ufw allow OpenSSH
192.168.1.100
)访问SSH端口(22),拒绝其他IP。sudo ufw deny from all to any port 22
sudo ufw allow from 192.168.1.100 to any port 22
sudo ufw enable
sudo ufw status verbose # 确认规则生效
注:若使用
iptables
,可通过以下命令实现相同效果:
sudo iptables -A INPUT -p tcp --dport 22 -s 192.168.1.100 -j ACCEPT sudo iptables -A INPUT -p tcp --dport 22 -j DROP sudo netfilter-persistent save # 保存规则
6. 启用SSH密钥认证(增强身份验证)
ssh-keygen -t rsa -b 4096
id_rsa.pub
)添加到服务器用户的~/.ssh/authorized_keys
文件中。ssh-copy-id sftpuser@your_server_ip
/etc/ssh/sshd_config
中以下设置已启用:PubkeyAuthentication yes
PasswordAuthentication no
重启SSH服务使密钥认证生效:
sudo systemctl restart sshd
7. 监控与维护
sudo apt update && sudo apt upgrade -y
/var/log/auth.log
,监控SFTP登录及异常活动(如多次失败尝试)。sudo tail -f /var/log/auth.log | grep sftp
/etc/ssh/sshd_config
及用户家目录权限设置,便于故障恢复。