SFTP
sftp是Secure File Transfer Protocol的縮寫,安全文件傳送協議。可以為傳輸文件提供一種安全的加密方法。sftp 與 ftp 有著幾乎一樣的語法和功能。SFTP 為 SSH的一部分,是一種傳輸檔案至 Blogger 伺服器的安全方式。其實在SSH軟件包中,已經包含了一個叫作SFTP(Secure File Transfer Protocol)的安全文件傳輸子系統,SFTP本身沒有單獨的守護進程,它必須使用sshd守護進程(端口號默認是22)來完成相應的連接操作,所以從某種意義上來說,SFTP並不像一個服務器程序,而更像是一個客戶端程序。SFTP同樣是使用加密傳輸認證信息和傳輸的數據,所以,使用SFTP是非常安全的。但是,由於這種傳輸方式使用了加密/解密技術,所以傳輸效率比普通的FTP要低得多,如果您對網絡安全性要求更高時,可以使用SFTP代替FTP。
PS:FTP與SFTP的區別
FTP是文件傳輸協議。在網站上,如果你想把文件和人共享,最便捷的方式莫過於把文件上傳到FTP服務器上,其他人通過FTP客戶端程序來下載所需要的文件。
FTP進行文件傳輸需要通過端口進行。一般所需端口為:
1.控制鏈路—TCP端口21。控制器端。用於發送指令給服務器以及等待服務器響應。
2.數據鏈路---TCP端口20。數據傳輸端口。用來建立數據傳輸通道的。主要用來從客戶向服務器發送一個文件、從服務器向客戶發送一個文件、從服務器向客戶發送文件或目錄列表。
FTP為了適應不同的網絡環境,支持主動連接和被動連接兩種模式。這兩種模式都主要針對數據鏈路進行的,跟控制鏈路無關。
FTP的安全隱患:
一、FTP服務器軟件漏洞。
二、明文口令。
三、FTP旗標。
四、通過FTP服務器進行端口掃描。
五、數據劫持。
FTP的安全策略:
一、使用較比安全的系統和FTP服務軟件。
二、使用密文傳輸用戶名和口令。
三、更改服務軟件的旗標。
四、加強協議安全性。
為非SSH用戶配置SFTP環境
SFTP是Secure File Transfer Protocol的縮寫,是安全文件傳送協議。可以為傳輸文件提供一種安全的加密方法。跟ftp幾乎語法功能一樣。
步驟:1 創建組
代碼如下:
[root@localhost ~]# groupadd sftp_users
步驟:2 分配附屬組(sftp_users)給用戶
如果用戶在系統上不存在,使用以下命令創建( LCTT 譯注:這裡給用戶指定了一個不能登錄的 shell,以防止通過 ssh 登錄):
代碼如下:
[root@localhost ~]# useradd -G sftp_users -s /sbin/nologin jack
< p>[root@localhost ~]# passwd jack
對於已經存在的用戶,使用以下usermod命令進行修改:
代碼如下:
[root@localhost ~]# usermod –G sftp_users -s /sbin/nologin jack
注意:如果你想要修改用戶的默認家目錄,那麼可以在useradd和usermod命令中使用‘-d’選項,並設置合適的權限。
步驟:3 現在編輯配置文件 “/etc/ssh/sshd_config”
代碼如下:
# vi /etc/ssh/sshd_config
< p>#comment out the below line and add a line like below
< p>#Subsystem sftp /usr/libexec/openssh/sftp-server
< p>Subsystem sftp internal-sftp
< p># add Below lines at the end of file
< p>Match Group sftp_users
< p>X11Forwarding no
< p>AllowTcpForwarding no
< p>ChrootDirectory %h
< p>ForceCommand internal-sftp
此處:
Match Group sftp_users – 該參數指定以下的行將僅僅匹配sftp_users組中的用戶
ChrootDirectory %h – 該參數指定用戶驗證後用於chroot環境的路徑(默認的用戶家目錄)。對於用戶 Jack,該路徑就是/home/jack。
ForceCommand internal-sftp – 該參數強制執行內部sftp,並忽略任何~/.ssh/rc文件中的命令。
重啟ssh服務
代碼如下:
# service sshd restart
步驟:4 設置權限:
代碼如下:
[root@localhost ~]# chmod 755 /home/jack
< p>[root@localhost ~]# chown root /home/jack
< p>[root@localhost ~]# chgrp -R sftp_users /home/jack
如果你想要允許jack用戶上傳文件,那麼創建一個上傳文件夾,設置權限如下:
代碼如下:
[root@localhost jack]# mkdir /home/jack/upload
< p>[root@localhost jack]# chown jack. /home/jack upload/
步驟:5 現在嘗試訪問系統並進行測試
嘗試通過ssh訪問系統
正如下圖所示,用戶jack通過SFTP登錄,而且因為chroot環境不能切換目錄。
現在進行上傳和下載測試,如下圖:
正如上圖所示,jack用戶的上傳下載功能都工作得很好。