一、簡述
FTP服務器(File Transfer Protocol Server)是在互聯網上提供文件存儲和訪問服務的計算機,它們依照FTP協議提供服務。
FTP(File Transfer Protocol: 文件傳輸協議)作用: Internet 上用來傳送文件的協議
功能:用來實現文件的上傳(upload)和下載(download)
ftp的工作端口:
21 : 控制端口,用於在客戶機和服務器之間建立連接
20 : 數據端口,用於服務器給客戶機主動進行數據連接
vsftpd:非常安全文件傳輸協議守護進程(very secure ftp daemon)
ftp的工作模式:主動port、被動passive模式
客戶端與服務端傳輸數據時,服務端傳輸端口爲20時爲主動模式,傳輸端口爲>1024的隨機端口時爲被動模式
ftp主動(port)模式工作過程:
1.客戶機和服務器建立連接關係(登錄): 客戶機(>1024的隨機端口號) <----> 服務器 21號port
2.雙方建立數據連接關係,傳輸數據:客戶機(>1024的隨機port) <----> 服務器 20號port
ftp被動(pasv)模式工作過程:
1.客戶機和服務器建立連接關係(登錄): 客戶機(>1024的隨機端口號) <----> 服務器 21號port
2.雙方建立數據連接關係,傳輸數據:客戶機(>1024的隨機port) <----> 服務器(>1024的隨機port)
說明:當ftp服務器上有防火牆時,通常客戶機是以被動模式去訪問ftp服務器的。在ftp服務器的vsftpd.conf和防火牆上要指定放行的被動模式端口範圍的最小值和最大值。
二、部署過程
1、# yum install vsftpd ftp lftp -y //會安裝以下包
ftp.x86_64 0:0.17-67.el7
vsftpd.x86_64 0:3.0.2-22.el7
lftp.x86_64 0:4.4.8-8.el7_3.2
2、相關配置文件:
/etc/vsftpd/vsftpd.conf:vsftpd 的核心配置文件
/etc/vsftpd/ftpusers:用於指定哪些用戶不能訪問FTP 服務器。 黑名單
/etc/vsftpd/user_list:指定允許使用vsftpd 的用戶列表文件。 白名單
3、備份配置文件後修改:
cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak
grep -v “^#” ./vsftpd.conf.bak>./vsftpd.conf
vim vsftpd.conf
1.允許匿名用戶訪問:
listen_port=6069 ##修改ftp服務側端口
pasv_enable=YES
pasv_min_port=10221 ##被動連接端口
pasv_max_port=10231
pasv_promiscuous=YES
ftpd_banner=Welcome to XXX.com FTP service
anonymous_enable=YES #是否允許匿名用戶訪問;(默認YES)
2.允許匿名用戶上傳文件並可以創建目錄:
anon_upload_enable=YES #允許匿名用戶上傳文件;
anon_mkdir_write_enable=YES #允許匿名用戶創建目錄;
3.允許匿名用戶刪除文件和文件命名:
anon_other_write_enable=YES #允許匿名用戶命名文件刪除文件;
4.設置匿名用戶所上傳的文件的默認掩碼值:
anon_umask=022 #......
5.設置匿名用戶的FTP根目錄(默認爲/var/ftp/)
anon_root=/var/ftp #......
給匿名用戶權限最好不要太大,建議755
注:實際生活中,匿名用戶只是只讀訪問,寫的權限也沒有。
本地用戶:
1.允許本地用戶登錄:
local_enable=YES #允許本地用戶登錄
2.設置本地用戶的FTP根目錄(默認爲用戶的宿主目錄)
Local_root=/var/ftp
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
3.本地用戶上傳的默認權限掩碼值:
Local_umask=022
4.設置本地用戶上傳寫入支持:
write_enable=YES #啓動上傳寫入支持
5.爲不同的虛擬用戶建立獨立的配置文件:
user_config_dir=/etc/vsftp/vusers_dir #設置從/etc/vsftp/vusers_dir目錄中查找每個用戶的獨立配置文件;
添加虛擬用戶:
pam_service_name=vsftpd.vu //修改
userlist_enable=NO //修改
anon_root=/var/ftp/soft //末尾添加
guest_enable=yes //添加
guest_username=zhangsan //添加
user_config_dir=/etc/vsftpd/vusers_dir //添加
allow_writeable_chroot=YES
完成修改端口還需要修改/etc/services
ftp 6069/tcp
ftp 6069/udp
注意:/etc/services文件是記錄網絡服務名和它們對應使用的端口號及協議。
文件中的每一行對應一種服務,它由4個字段組成,中間用TAB或空格分隔,分別表示“服務名稱”、“使用端口”、“協議名稱”以及“別名”。
端口說明:
1–1023 系統保留,只能由root用戶使用
1024—4999 由客戶端程序自由分配
5000—65535 由服務器端程序自由分配
4、驗證:
lftp 用戶名:密碼@ftp地址:傳送端口(默認21)