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登錄及異?;顒樱ㄈ缍啻问L試)。sudo tail -f /var/log/auth.log | grep sftp
/etc/ssh/sshd_config
及用戶家目錄權限設置,便于故障恢復。