CentOS SFTP用戶管理策略
創建專用SFTP用戶組
為集中管理SFTP用戶,創建專用組(如sftp
或sftpusers
),避免與系統用戶或其他服務用戶混淆。
命令示例:sudo groupadd sftp
創建SFTP用戶并配置屬性
-g
參數),禁止其通過SSH登錄系統(-s /sbin/nologin
參數),防止用戶獲得完整Shell權限。sudo useradd -g sftp -s /sbin/nologin sftpuser1
sudo passwd sftpuser1
(要求包含大小寫字母、數字和特殊字符,長度≥8位)。-d
參數),如sudo useradd -g sftp -s /sbin/nologin -d /home/sftpuser1 sftpuser1
。家目錄基礎權限
SFTP用戶的家目錄必須歸屬root
用戶和專用組(如sftp
),權限設為755
(drwxr-xr-x
),確保用戶無法修改家目錄結構(如刪除或重命名目錄)。
命令示例:
sudo mkdir -p /home/sftpuser1
sudo chown root:sftp /home/sftpuser1
sudo chmod 755 /home/sftpuser1
可寫子目錄設置
若用戶需要上傳或修改文件,需在家目錄下創建專用子目錄(如upload
),歸屬用戶自身(chown sftpuser1:sftp
),權限設為755
或775
(drwxr-xr-x
或drwxrwxr-x
)。
命令示例:
sudo mkdir /home/sftpuser1/upload
sudo chown sftpuser1:sftp /home/sftpuser1/upload
sudo chmod 755 /home/sftpuser1/upload
啟用SFTP子系統
編輯/etc/ssh/sshd_config
文件,確保Subsystem sftp internal-sftp
未被注釋(默認啟用),使用OpenSSH內置的SFTP服務替代傳統sftp-server
(更安全)。
限制用戶訪問范圍
使用Match
指令針對SFTP用戶組或單個用戶設置限制,核心配置包括:
ChrootDirectory %h
:將用戶限制在其家目錄(%h
代表用戶家目錄),防止訪問系統其他目錄;ForceCommand internal-sftp
:強制用戶只能使用SFTP,禁止SSH登錄;AllowTcpForwarding no
/X11Forwarding no
:禁用端口轉發和X11轉發,減少攻擊面。Match Group sftp
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
重啟SSH服務
修改配置后,重啟SSH服務使更改生效:sudo systemctl restart sshd
。
禁用root登錄
編輯/etc/ssh/sshd_config
,設置PermitRootLogin no
,禁止root用戶通過SSH登錄,降低系統被入侵的風險。修改后重啟SSH服務。
SELinux配置(若啟用)
若系統SELinux處于Enforcing
模式,需調整上下文以允許SFTP訪問:
sudo setenforce 0
;/etc/selinux/config
,將SELINUX=enforcing
改為SELINUX=permissive
;sudo chcon -Rt ssh_home_t /home/sftpuser1
(針對用戶家目錄)。防火墻開放端口
確保防火墻允許SSH(默認端口22)流量通過:
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --reload
定期更新系統
使用sudo yum update
命令定期更新系統和軟件包,修復已知安全漏洞,提升系統安全性。
密碼認證(默認)
在/etc/ssh/sshd_config
中設置PasswordAuthentication yes
,允許用戶通過用戶名和密碼登錄。需確保密碼強度足夠,定期更換密碼。
公鑰認證(推薦)
更安全的認證方式,步驟如下:
ssh-keygen -t rsa -b 4096
(默認保存在~/.ssh/id_rsa
和~/.ssh/id_rsa.pub
);ssh-copy-id sftpuser1@your_server_ip
(自動將公鑰添加到~/.ssh/authorized_keys
);/etc/ssh/sshd_config
中PubkeyAuthentication yes
未被注釋。其他認證方式(可選)
UsePAM yes
和LDAP客戶端);krb5-workstation
等包并配置GSSAPIAuthentication yes
);SSLCertificateFile
和SSLCertificateKeyFile
)。