資安

基於ECS搭建FTP服務

介紹

FTP(File Transfer Protocol,文件傳輸協議) 是 TCP/IP 協議組中的協議之一。FTP協議包括兩個組成部分,其一為FTP服務器,其二為FTP客戶端。其中FTP服務器用來存儲文件,用戶可以使用FTP客戶端通過FTP協議訪問位於FTP服務器上的資源。在開發網站的時候,通常利用FTP協議把網頁或程序傳到Web服務器上。此外,由於FTP傳輸效率非常高,在網絡上傳輸大的文件時,一般也採用該協議。
默認情況下FTP協議使用TCP端口中的 20和21這兩個端口,其中20用於傳輸數據,21用於傳輸控制信息。但是,是否使用20作為傳輸數據的端口與FTP使用的傳輸模式有關,如果採用主動模式,那麼數據傳輸端口就是20;如果採用被動模式,則具體最終使用哪個端口要服務器端和客戶端協商決定。
同大多數Internet服務一樣,FTP也是一個客戶/服務器系統。用戶通過一個客戶機程序連接至在遠程計算機上運行的服務器程序。依照 FTP 協議提供服務,進行文件傳送的計算機就是 FTP服務器,而連接FTP服務器,遵循FTP協議與服務器傳送文件的電腦就是FTP客戶端。用戶要連上FTP 服務器,就要用到 FTP 的客戶端軟件,通常 Windows自帶“ftp”命令,這是一個命令行的 FTP客戶程序,另外常用的 FTP 客戶程序還有FileZilla、 CuteFTP、Ws_FTP、Flashfxp、LeapFTP、流星雨-貓眼等。

搭建過程

1.打開系統自帶的終端工具。

Windows:CMD或Powershell。
MAC:Terminal。
Windows用戶請檢查系統中是否安裝有ssh工具。檢查方法:

a. 在終端中輸入命令ssh -V。

b. 出現如下結果說明已安裝。

2.在終端中輸入連接命令 ssh [username]@[ipaddress]。將其中的 username 和 ipaddress 替換為雲產品資源提供的ECS服務器的 用戶和 彈性IP。
根據提示輸入密碼。

3.安裝vsftpd服務

使用 yum命令安裝,yum install -y vsftpd

4.設置ftp服務開機自啟

systemctl enable vsftpd.service

5.啟動ftp服務

systemctl start vsftpd.service

6.查看ftp監聽端口

netstat -antup | grep ftp

端口號默認為21,至此vsftpd默認開啟匿名登錄但無修改創建權限。

二、配置FTP服務

匿名用戶模式

  1. 修改配置文件vsftpd.conf。

vim /etc/vsftpd/vsftpd.conf

按 i 鍵進入編輯模式,將匿名上傳權限 anon_upload_enable=YES 的註釋解開202009232029495.jpeg

2.按ESC鍵退出編輯模式,輸入:wq 保存並退出vim。

3.更改/var/ftp/pub目錄的權限,為FTP用戶添加寫權限。

chmod o+w /var/ftp/pub/

4.重啟FTP服務。

systemctl restart vsftpd.service

本地用戶模式

1.為FTP服務創建一個Linux用戶。

adduser [username]

為用戶設置密碼。

passwd [userpassword]

2.創建一個供FTP服務使用的文件目錄。

mkdir /var/ftp/test

3.更改/var/ftp/test目錄的擁有者為ftptest。

chown -R ftptest:ftptest /var/ftp/test

4.修改vsftpd.conf配置文件。微信圖片_20201030233912.png

配置FTP為主動模式請執行如下命令:

sed -i 's/anonymous_enable=YES/anonymous_enable=NO/' /etc/vsftpd/vsftpd.conf #禁止匿名登錄FTP服務器

sed -i 's/listen=NO/listen=YES/' /etc/vsftpd/vsftpd.conf #監聽IPv4 sockets

sed -i 's/listen_ipv6=YES/#listen_ipv6=YES/' /etc/vsftpd/vsftpd.conf #關閉監聽IPv6 sockets

sed -i 's/#chroot_local_user=YES/chroot_local_user=YES/' /etc/vsftpd/vsftpd.conf #全部用戶被限制在主目錄

sed -i 's/#chroot_list_enable=YES/chroot_list_enable=YES/' /etc/vsftpd/vsftpd.conf #啟用例外用戶名單

sed -i 's/#chroot_list_file=/chroot_list_file=/' /etc/vsftpd/vsftpd.conf #指定例外用戶列表文件,列表中的用戶不被鎖定在主目錄

echo "allow_writeable_chroot=YES" >> /etc/vsftpd/vsftpd.conf

echo "local_root=/var/ftp/test" >> /etc/vsftpd/vsftpd.conf #設置本地用戶登錄後所在的目錄

配置FTP為被動模式請執行如下命令:

sed -i 's/anonymous_enable=YES/anonymous_enable=NO/' /etc/vsftpd/vsftpd.conf #禁止匿名登錄FTP服務器

sed -i 's/listen=NO/listen=YES/' /etc/vsftpd/vsftpd.conf #監聽IPv4 sockets

sed -i 's/listen_ipv6=YES/#listen_ipv6=YES/' /etc/vsftpd/vsftpd.conf #關閉監聽IPv6 sockets

sed -i 's/#chroot_local_user=YES/chroot_local_user=YES/' /etc/vsftpd/vsftpd.conf #全部用戶被限制在主目錄

sed -i 's/#chroot_list_enable=YES/chroot_list_enable=YES/' /etc/vsftpd/vsftpd.conf #啟用例外用戶名單

sed -i 's/#chroot_list_file=/chroot_list_file=/' /etc/vsftpd/vsftpd.conf #指定例外用戶列表文件,列表中的用戶不被鎖定在主目錄

echo "allow_writeable_chroot=YES" >> /etc/vsftpd/vsftpd.conf

echo "local_root=/var/ftp/test" >> /etc/vsftpd/vsftpd.conf #設置本地用戶登錄後所在的目錄

echo "pasv_enable=YES" >> /etc/vsftpd/vsftpd.conf #開啟被動模式

echo "pasv_address=" >> /etc/vsftpd/vsftpd.conf #本教程中為ECS服務器彈性IP

echo "pasv_min_port=20" >> /etc/vsftpd/vsftpd.conf #設置被動模式下,建立數據傳輸可使用的端口範圍的最小值

echo "pasv_max_port=21" >> /etc/vsftpd/vsftpd.conf #設置被動模式下,建立數據傳輸可使用的端口範圍的最大值

5.在/etc/vsftpd目錄下創建chroot_list文件,並在文件中寫入例外用戶名單。

使用vim命令編輯chroot_list文件,添加例外用戶名單。此名單中的用戶不會被鎖定在主目錄,可以訪問其他目錄。

vim /etc/vsftpd/chroot_list

說明: 沒有例外用戶時,也必須創建chroot_list文件,內容可為空。微信圖片_20201030233927.png

6.重啟FTP服務。

systemctl restart vsftpd.service

測試FTP服務

瀏覽器或資源管理器中地址欄輸入ftp://:FTP端口,輸入之前設置的賬號和密碼
若可以進行讀寫創建操作則證明服務啟用成功微信圖片_20201030233932.png

Leave a Reply

Your email address will not be published. Required fields are marked *