1.FTP介紹:
FTP (File Transfer Protocol,文件傳輸協議)主要用來文件傳輸,尤其適用於大文件傳輸,提供上傳下載功能
FTP官方網站:https://filezilla-project.org/
FTP服務器根據服務對象分為兩種:一種Linux系統用戶下控制的FTP服務器,另一種匿名FTP服務器
2.FTP工作模式
FTP采用C/S架構的服務,分為客戶端和服務器端。使用TCP做為底層傳輸協議,使用標准端口20,21: 20端口作為數據端口,21端口作為指令端口
2.1主動FTP
- 客戶端從任意一個非授權端口,即大於1024的端口N,連接到FTP服務器命令端口21,
- 然后客戶端開始監聽端口N+1,並發送FTP命令“PORT N+1”到FTP服務器
- 接着服務器再從自己的數據端口(20端口)連接到客戶端指定的數據端口(N+1)
2.2被動FTP
在被動模式中,命令連接於數據連接都有客戶端發起,這樣解決了服務器到客戶端的數據端口的入方向連接被防火牆過濾掉的問題
- 客戶端的命令端口與服務器的命令端口建立連接,並發送命令“PASV”
- 然后服務器返回命令"PORT 2024",告訴客戶端(服務器)用哪個端口偵聽數據連接
- 客戶端初始化一個從自己的數據端口到服務器端指定的數據端口的數據連接
- 最后服務器在給客戶端的數據端口返回一個"ACK"響應。
3.FTP命令行
- open host[port]:建立指定ftp服務器連接,可指定連接端口
- quit:同bye,退出ftp會話
- cdup:進入遠程主機目錄的父目錄
- close:中斷與遠程服務器的ftp會話(與open對應)
- mdelete[remote-file]:刪除遠程主機文件。
- mkdir: 在遠程主機中建一目錄
- get remote-file[local-file]: 將遠程主機的文件remote-file傳至本地硬盤的local-file
- put local-file[remote-file]:將本地文件local-file傳送至遠程主機
- mget remote-files:傳輸多個遠程文件
- mput local-file:將多個文件傳輸至遠程主機
- modtime file-name:顯示遠程主機文件的最后修改時間
- pwd:顯示遠程主機的當前工作目錄
- ascii:使用ascii類型傳輸方式
- bin:使用二進制文件傳輸方式
- help[cmd]:顯示ftp內部命令cmd的幫助信息,如:help get
ftp> ls 200 PORT command successful. Consider using PASV. 150 Here comes the directory listing. pub 226 Directory send OK. ftp: 收到 8 字節,用時 0.00秒 2.00千字節/秒。 ftp> get pub /desktop 200 PORT command successful. Consider using PASV. 550 Failed to open file. ftp> pwd #ftp用戶無權限 257 "/" ftp> mkdir 0331 550 Permission denied. ftp> ls 200 PORT command successful. Consider using PASV. 150 Here comes the directory listing. pub 226 Directory send OK. ftp: 收到 8 字節,用時 0.00秒 8000.00千字節/秒。
4.Linux下安裝FTP
在Linux命令行執行ftp 顯示沒有此命令則進行安裝:
yum install ftp -y
5.FTP環境搭建
5.1 安裝VSFTPD
先查看是否安裝vsftpd:rpm -qa |grep vsftpd
[root@H0f ~]# rpm -qa |grep vsftpd vsftpd-2.2.2-24.el6.x86_64
1. rpm -e vsftpd 進行卸載 2. yum install -y vsftpd 安裝vsftpd
5.2 啟動VSFTPD
[root@H0f ~]# chkconfig vsftpd on #加到開機自啟動 [root@H0f Desktop]# /etc/init.d/vsftpd status #查看服務是否啟動 vsftpd (pid 21318) is running... [root@H0f Desktop]# service vsftpd restart Shutting down vsftpd: [ OK ] Starting vsftpd for vsftpd: [ OK ]
5.3 SELinux設置
[root@H0f ~]# getenforce
Enforcing #強制執行
[root@H0f ~]# setenforce 0 #降低SELinux安全級別
[root@H0f ~]# getenforce #寬容模式
Permissive
5.4防火牆設置
1.允許所有FTP模式連接
iptables -A INPUT -p tcp --dport 21 -m state --state ESTABLISHED -j ACCEPT iptabels -A OUTPUT -p tcp --sport 21 -m state --state NEW,ESTABLISHED -j ACCEPT
2.主動模式設置
iptabels -A INPUT -p tcp --dport 20 -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A OUTPUT -p tcp --sport 20 -m state --state ESTABLESHED -j ACCEPT
3.被動模式設置
iptables -A INPUT -p tcp --sport 1024:65535 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT iptables -A OUTPUT -p tcp --sport 1024:65535 --deport 1024:65535 -m state --state ESTABLESHED,RELATED -j ACCEPT