開啟sftp服務日誌並限制sftp訪問目錄
阿新 • • 發佈:2018-11-23
開啟sftp服務日誌並限制sftp訪問目錄
開啟sftp日誌
修改sshd_config
vim /etc/ssh/sshd_config
註釋掉Subsystem行,然後寫入新Subsystem,資訊如下
Subsystem sftp internal-sftp -l INFO -f local5
LogLevel INFO
效果如下:
修改syslogs
vim /etc/rsyslog.conf
在最後增加如下配置
auth,authpriv.*,local5.* /var/log/sftp.log
重啟服務檢視日誌
/etc/init.d/rsyslog restart
/etc/init.d/sshd restart
tailf /var/log/sftp.log
限制sftp使用者操作目錄
前提說明
如果要讓sftp使用者只能使用規定的目錄,則需要再配置檔案中開啟ChrootDirectory,並限定目錄作為sftp使用者登入的根目錄.
但這裡規定的根目錄,屬主必須是root,資料夾許可權只能是755,因此sftp使用者對此根目錄只有讀取許可權,需要再在根目錄下建立一個屬主為改sftp使用者的資料夾,用於該使用者上傳資料
由此規則,可以產生兩種sftp方案
- home目錄做根目錄
建立使用者時,不指定-M引數,預設會在home目錄下生產該使用者的家目錄,使用者對該目錄具有完全操作許可權,且不能訪問其他使用者的家目錄,因此適合作為sftp目錄
- ChrootDirectory寫法
- ChrootDirectory /home/
- 單獨建立目錄做根目錄
單獨建立一個目錄做根目錄,然後再建立下級的操作目錄,此方法需要按要求配置主目錄及下級目錄的許可權和屬主等資訊
- 使用者
- 建立使用者 加-M引數
- 主目錄
- 建立主目錄 /data/sftp
- 授權 755
- 屬主 root.root
- 下級目錄
- 建立下級目錄 /data/sftp/test_sftp
- 授權 755
- 屬主 test_sftp.test_sftp
- ChrootDirectory寫法
- ChrootDirectory /data/sftp/
方法1實操
- 建立使用者
useradd test_sftp && echo "123456"|passwd --stdin test_sftp
- 修改sshd_conf
vim /etc/ssh/sshd_config
# 在最後增加以下關鍵字
Match User test_sftp
ChrootDirectory /home
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
重要說明:配置在Match User欄位中的使用者,會被禁止使用ssh方式登入系統
- 重啟sshd服務
/etc/init.d/sshd restart
方法2實操
- 建立使用者
useradd test_sftp && echo "123456"|passwd --stdin test_sftp
- 建立主目錄並授權
mkdir -p /data/sftp/
#chown -R root.root /data/sftp/
#chmod 755 /data/sftp/
說明:註釋掉的命令預設不用執行,寫出來是為了避免亂做其他授權
- 建立操作目錄並操作
mkdir -p /data/sftp/test_sftp
chown -R test_sftp.test_sftp /data/sftp/test_sftp
#chmod 755 /data/sftp/test_sftp
說明:註釋掉的命令預設不用執行,寫出來是為了避免亂做其他授權
- 修改sshd_conf
vim /etc/ssh/sshd_config
# 在最後增加以下關鍵字
Match User test_sftp
ChrootDirectory /data/sftp
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
- 重啟sshd服務
/etc/init.d/sshd restart