資安

【ECS七天實踐訓練營】——基於ECS搭建FTP服務

初識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;如果採用被動模式,則具體最終使用哪個端口要服務器端和客戶端協商決定。

遠程連接ECS服務器

1. 打開系統自帶的終端工具。
    Windows:CMD或Powershell
    MAC:Terminal
   Windows用戶請檢查系統中是否安裝有ssh工具。檢查方法:
    a.在終端中輸入命令ssh -V
    b.出現如下結果說明已安裝
    c.否則請下載安裝OpenSSH

image.png
2.在終端中輸入連接命令 ssh [username]@[ipaddress]。將其中的 username 和 ipaddress 替換為雲產品資源提供的ECS服務器的 用戶和 彈性IP。例如:ssh [email protected]
image.png
3.按照頁面提示依次往下操作 , 其中登錄密碼為資源提供的ECS服務器的登錄密碼。
4.登錄成功後會顯示如下信息。
image.png

安裝vsftpd

1.運行以下命令安裝vsftpd。

yum install -y vsftpd

返回如下圖所示界面時,表示安裝成功。
image.png
2.運行以下命令設置FTP服務開機自啟動。

systemctl enable vsftpd.service

3.啟動FTP服務。

systemctl start vsftpd.service

4.運行以下命令查看FTP服務監聽的端口。

netstat -antup | grep ftp

出現如下圖所示界面,表示FTP服務已啟動,監聽的端口號為 21。此時,vsftpd默認已開啟匿名訪問功能,您無需輸入用戶名密碼即可登錄FTP服務器,但沒有修改或上傳文件的權限。
image.png

配置vsftpd

vsftpd(very secure FTP daemon)是一款在Linux發行版中最受推崇的FTP服務器。vsftpd支持匿名訪問和本地用戶模式兩種訪問方式。匿名訪問方式任何用戶都可以訪問搭建的FTP服務;本地用戶模式只支持添加的本地用戶訪問搭建的FTP服務。
說明: 匿名用戶模式和本地用戶模式只可同時配置一種。
匿名用戶模式
1.修改配置文件vsftpd.conf。

vim /etc/vsftpd/vsftpd.conf

按 i 鍵進入編輯模式,將匿名上傳權限 anon_upload_enable=YES 的註釋解開。
image.png
2.按ESC鍵退出編輯模式,輸入:wq 保存並退出vim。
3.更改/var/ftp/pub目錄的權限,為FTP用戶添加寫權限。

chmod o+w /var/ftp/pub/

4.重啟FTP服務。

systemctl restart vsftpd.service

image.png
本地用戶模式
1.為FTP服務創建一個Linux用戶。

adduser ftptest

為用戶設置密碼。

passwd ftptest

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

mkdir /var/ftp/test

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

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

4.修改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 #設置本地用戶登錄後所在的目錄

配置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=<FTP服務器公網IP地址>" >> /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文件,內容可為空。
6.重啟FTP服務。

systemctl restart vsftpd.service

客戶端測試

FTP客戶端、Windows命令行工具或瀏覽器均可用來測試FTP服務器。(此步驟僅適用於本地用戶,匿名模式無需進行測試操作)
說明:使用瀏覽器訪問FTP服務器出錯時,建議您清除瀏覽器緩存後再嘗試。
1.打開Chrom瀏覽器,在地址欄中輸入ftp://:FTP端口,FTP服務器公網IP地址為ECS服務器的彈性IP地址。例如:ftp://139.0.0.1:21。
2.在彈出的對話框中,輸入用戶名和密碼。
image.png
3.登錄成功界面如下,此時可對FTP文件進行相應權限的操作。
image.png

Leave a Reply

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