初級FTP搭建,ftp搭建
一:瞭解FTP基本知識
Vsftpd
1.什麼是FTP?
File Transfer Protocol 基於C/S結構的檔案傳輸通訊協定
2.使用什麼協議?什麼連接埠?
TCP 21建立命令鏈路
TCP 20在主動傳輸模式下伺服器使用20連接埠向用戶端建立資料鏈路
3.FTP工作原理
--------- Client Server--------------
103121
1032 20
①用戶端向伺服器發出串連請求,同時用戶端系統動態地開啟一個大於1024的連接埠等候伺服器串連(比如1031連接埠)
②若FTP伺服器在連接埠21偵聽到該請求,則會在用戶端1031連接埠和伺服器的21連接埠之間建立一個FTP會話串連
③當需要傳輸資料時,FTP用戶端動態地開啟一個大於1024的連接埠(比如1032連接埠)串連到伺服器的20連接埠,並在這兩個連接埠之間進行資料的傳輸。當資料轉送完畢後,這兩個連接埠會自動關閉
④當FTP用戶端斷開與FTP伺服器的串連時,用戶端上動態分配的連接埠將自動釋放
4.FTP工作模式
主動傳輸模式(Active FTP):
在主動傳輸模式下,FTP用戶端隨機開啟一個大於1024的連接埠N(1025)向伺服器的21號連接埠發起串連,然後開放N+1號連接埠(1026)進行監聽,並向伺服器發送PORT 1026命令。伺服器接收到命令後,會用其本地的FTP資料連接埠(通常20)來串連用戶端指定的連接埠1026,進行資料轉送。
被動傳輸模式(Passive FTP):
在被動傳輸模式下,FTP用戶端隨機開啟一個大於1024的連接埠N(1025)向伺服器的21號連接埠發起串連,同時會開啟N+1號連接埠(1026),然後向伺服器發送PASV 命令。通知伺服器自己處於被動模式。伺服器收到命令後,會開放一個大於1024連接埠(1521)進行監聽,然後用PORT 命令通知用戶端,自己的資料連接埠是1521.用戶端收到命令後會通過1026號連接埠串連伺服器的1521,然後在兩個連接埠之間進行資料轉送。
5.FTP傳輸模式
二進位模式:圖片和執行檔案壓縮檔
文字模式:CGI指令碼和普通HTML檔案
目前伺服器上面和FTP用戶端軟體能夠自動識別檔案類型並選擇相應的傳輸方式
6.FTP賬戶類型
匿名使用者:ftp 或 anonymous
本機使用者:Linux伺服器原生系統使用者帳號
虛擬使用者:帳號資訊存放在獨立的檔案或資料庫內
7.預設安裝vsftpd特點
匿名使用者與本機使用者都可以登入
匿名使用者登入到/var/ftp,只能下載不能上傳
本機使用者登入到本機使用者的家目錄,可以上傳和下載
ftp和lftp命令
get下載
put上傳
mget下載多個,支援萬用字元
mput上傳多個,支援萬用字元
!cmd執行外面命令
lcd 切換外面路徑
9.訪問FTP地址表示方法
使用者驗證訪問
ftp://user:pass@192.168.4.5
ftp://user:pass@192.168.4.5/path/to/file
URL,統一資源定位器(網址)
Unified Resource Locator
協議://使用者名稱:密碼@伺服器位址:連接埠/目錄路徑/檔案名稱
10.RHEL6內建的ftp軟體包?主設定檔是?服務啟動指令碼?
vsftpd
/etc/vsftpd/vsftpd.conf
重點欄位意義:anonymous_enable=YES #開啟匿名共用
local_enable=YES #開啟本地賬戶共用
write_enable=YES #本地賬戶是否可寫
anon_upload_enable=YES #匿名使用者是否可以上傳檔案
anon_mkdir_write_enable=YES #匿名可建立目錄
anon_other_write_enable=YES #匿名刪除,重新命名
chroot_local_user #禁錮本地賬戶
anon_root=/abc #定義匿名使用者根目錄為/abc目錄
anon_umask=022 #定義匿名使用者上傳的掩碼值
11.設定檔:/etc/vsftpd/vsftpd.conf(主配置)
/etc/vsftpd/ftpusers(黑名單)
/etc/vsftpd/user_list(黑/白名單)
在欄位userlist_enable=YES或NO //是否開啟user_list檔案
在欄位userlist_deny=NO時user_list是白名單
12.其他常用選項
listen_port=連接埠號碼
listen_address=IP地址
14.並發串連和速度:
max_clients=最大並發串連數
max_per_ip=同一IP地址的最大並發串連數
anon_max_rate=匿名使用者存取速度(位元組/秒)
local_max_rate=本機使用者訪問速度(位元組/秒)
安裝 FTP
1.安裝軟體包
關掉防火牆和selinux,不然需要提前配好
yum -y install vsftpd
2.啟動服務
service vsftpd restart
chkconfig vsftpd on
netstat -anptu | grep vsftpd
3.建立測試檔案
ls -l /etc/* > /var/ftp/pub/anon.txt
[root@svr5 ~]# useradd lisi
[root@svr5 ~]# echo 123456 | passwd --stdin lisi
[root@svr5 ~]# ls -l /etc/* > ~lisi/lisi.txt
4.驗證:(用戶端測試)
瀏覽器測試:
ftp://192.168.4.5/
ftp://lisi:123456@192.168.4.5/ 使用者密碼登入方式
命令列測試:
[root@pc205 ~]# yum -y install ftp lftp
[root@pc205 ~]# ftp 192.168.4.5
ftp> cd pub
ftp> ls
ftp> get anon.txt
ftp> !ls
ftp> put install.log
ftp> quit
[root@pc205 ~]# lftp 192.168.4.5
lftp 192.168.4.5:~> user lisi
口令:
[root@pc205 ~]# yum -y install wget
[root@pc205 ~]# wget ftp://lisi:123456@192.168.4.5/lisi.txt 下載檔案測試
實驗總結:
匿名使用者與本機使用者都可以登入
匿名使用者登入到/var/ftp,只能下載不能上傳
本機使用者登入到本機使用者的家目錄,可以上傳和下載 使用者家目錄
實驗三:
禁錮本機使用者在自己家目錄
實驗步驟:
先在用戶端測試預設結果
[root@pc205 ~]# ftp 192.168.4.5
...
Name (192.168.4.5:root): lisi
331 Please specify the password.
Password:
...
ftp> pwd
257 "/home/lisi"
在伺服器端配置
[root@svr5 ~]# cd /etc/vsftpd/
[root@svr5 vsftpd]# cp vsftpd.conf vsftpd.conf.bak
[root@svr5 vsftpd]# vim vsftpd.conf
...
96 chroot_local_user=YES
...
[root@svr5 vsftpd]# service vsftpd restart
在用戶端測試:
[root@pc205 ~]# ftp 192.168.4.5
...
Name (192.168.4.5:root): lisi
331 Please specify the password.
Password:
230 Login successful.
ftp> pwd
257 "/"
實驗四:使用者存取控制(黑白名單)
通過ftpusers阻止mike訪問
將user_list設為白名單
允許lisi、mike訪問
分別測試匿名訪問、lisi和mike訪問
將ftp加入白名單,再測試匿名訪問
[root@svr5 ~]# useradd mike
[root@svr5 ~]# echo 123456 | passwd --stdin mike
[root@svr5 ~]# grep mike /etc/vsftpd/ftpusers
mike
[root@svr5 ~]# service vsftpd restart
測試:用mike訪問ftp
[root@svr5 ~]# vim /etc/vsftpd/vsftpd.conf
...
121 userlist_deny=NO
...
[root@svr5 ~]# service vsftpd restart
[root@svr5 ~]# grep mike /etc/vsftpd/ftpusers
[root@svr5 ~]# tail -n 2 /etc/vsftpd/user_list
lisi
mike
測試:
分別使用mike與lisi登入測試
實驗完畢,請將主設定檔121 userlist_deny=NO注釋,將user_list和ftpusers裡面添加的賬戶去掉
實驗五:
最多100個並發,每IP地址最多2個並發
限制匿名下載速度為50KB/s
限制使用者下載速度為500KB/s
通過 ftp、wget 驗證上述限制
[root@svr5 ~]# vim /etc/vsftpd/vsftpd.conf
...
122 max_clients=100
123 max_per_ip=2
124 anon_max_rate=50000
125 local_max_rate=500000
[root@svr5 ~]# service vsftpd restart
[root@svr5 ~]# dd if=/dev/zero of=/var/ftp/pub/anon.tgz bs=1M count=1000
[root@svr5 ~]# dd if=/dev/zero of=/home/lisi/local.tgz bs=1M count=1000
測試:
[root@pc205 ~]# wget ftp://192.168.4.5/pub/anon.tgz
[root@pc205 ~]# wget ftp://lisi:123456@192.168.4.5/local.tgz
補充:
匿名使用者登入對共用根目錄(/var/ftp)禁止有寫入許可權,否則禁止匿名賬戶登入!