第一章 Linux網絡設定與基礎服務
五、FTP服務
1、FTP服務基礎
File Transfer Protocol,檔案傳輸協定:需要由服務端軟體、用戶端軟體兩個部分共同實作檔案傳輸功能。FTP可跨平台跨網段使用,samba隻能支援區域網路。
(1)FTP連接配接及傳輸模式
①FTP服務使用TCP的20/21端口與用戶端進行通信。20端口用于建立資料連接配接,并傳輸檔案資料;21端口用于建立控制連接配接,并傳輸FTP控制指令
②主動模式:伺服器主動發起資料連接配接。首先由用戶端想服務端的21端口建立FTP控制連接配接,當需要傳輸資料時,用戶端已PORT指令告知伺服器“我打開了某端口,你過來接我”,于是伺服器從20端口向用戶端的該端口發送請求并建立資料連接配接
③被動模式:伺服器被動等待資料連接配接。如果客戶機所在網絡防火牆進制主動模式,通常會使用被動模式。首先由用戶端想服務端的21端口建立FTP控制連結,當需要資料傳輸時,伺服器以PASV指令告知用戶端“我打開了某端口,你過來接我”,于是用戶端想伺服器的該端口(非20)發送請求并建立資料連接配接
④文本模式:又稱ASCII(美國資訊交換标準碼)模式,在傳輸檔案時使用ASCII标準字元序列,一般隻用于純文字檔案的傳輸
⑤二進制模式:又稱為Binary模式。它不會轉換檔案中的字元序列,更适合傳輸程式、圖檔等非純文字字元的檔案。(使用二進制傳輸更有效率,大多數FTP用戶端工具可以根據檔案類型自動選擇檔案傳輸模式,而無需使用者指定)
(1)FTP使用者類型
①匿名使用者:anonymous或ftp
②本地使用者:賬号密碼資訊等儲存在passwd、shadow中
③虛拟使用者:使用獨立的賬号密碼檔案
(2)常見的FTP伺服器程式
①IIS、Serv-U
②wu-ftpd、Proftpd
③vsftpd(Very Secure FTP Daemon)
(3)常見的FTP用戶端程式
①ftp指令
②cuteFTP、flashfxp、leapftp、filezilla
③gftp、kuftp
2、vsftpd
(1)配置檔案
①常用全局配置項
1)listen=YES:是否以獨立運作的方式監聽服務
2)listen_address=192.168.4.1:設定監聽的IP位址
3)listen_port=21:設定監聽FTP服務的端口
4)write_enable=YES:寫入權限
5)dowload_enable=YES:是否允許下載下傳
6)userlist_enable=YES:是否啟用user_list清單檔案
7)userlist_deny=YES:是否禁用user_list中的使用者
8)max_clients=0:限制并發用戶端連接配接數
9)max_per_ip=0:限制同一IP位址的并發連接配接數
②常用的匿名配置項
1)anonymous_enable=YES:啟用匿名通路
2)anon_umask=022:匿名使用者所上傳檔案的權限掩碼
3)anon_root=/var/ftp:匿名使用者的FTP根目錄
4)anon_uoload_enable:允許上傳
5)anon_mkdir_write_enable:允許建立目錄
6)anon_other_write_enable:允許删除
7)anon_max_rante=0:限制最大傳輸速率(位元組/秒)
③常用的本地使用者配置
1)local_enable=YES:開啟本地使用者通路
2)local_umask:用于設定非匿名使用者上傳檔案的umask值,預設值為022。
3)local_root:用于指定所有非匿名使用者的根目錄,預設情況,FTP會将各使用者引導到各自的家目錄
4)chroot_local_user=YES:是否将使用者禁锢在主目錄
5)local_max_rate=0:限制最大傳輸速率
④配置項對照表
1)accept_timeout=60:用于設定被動連接配接的逾時時間(機關:秒)。預設值為60。
2)allow_anon_ssl=YES|NO:是否允許匿名使用者通過SSL連接配接(如果設定為YES,則ssl_enable也必須設定為YES)。預設值為NO。
3)anon_max_rate=0:使用者限制匿名使用者的傳輸速度(機關:Byte/s)。預設值為0(表示無限制)。
4)anon_mkdir_write_enable=YES|NO:是否允許匿名使用者建立目錄(如果設定為YES,則write_enable也必須設定為YES)。預設值為NO。
5)anon_other_write_enable=YES|NO:是否允許匿名使用者删除和重命名檔案(如果設定為YES,則write_enable也必須設定為YES)。預設值為NO。
6)anon_umask=077:用于設定匿名使用者上傳檔案的umask值。預設值為077。
7)anon_upload_enable=YES|NO:是否允許匿名使用者上傳檔案(如果設定為YES,則write_enable也必須設定為YES)。預設值為NO。
8)anon_world_readable_only=YES|NO:預設值為YES。
9)anonymous=YES|NO:是否允許匿名使用者登入。預設值為YES。
10)ascii_download_enable=YES|NO:是否允許下載下傳檔案時使用ASCII傳輸模式。預設值為NO。
11)ascii_upload_enable=YES|NO:是否允許上傳檔案時使用ASCII傳輸模式。預設值為NO。
12)async_abor_enable=YES|NO:是否允許用戶端使用sync等指令。預設值為NO。
13)chown_uploads=YES|NO:是否改變匿名使用者上傳檔案後檔案的屬主。預設值為NO。
14)chown_username=root:用于設定匿名使用者上傳檔案後檔案的屬主(隻有chown_uploads設定為YES時該參數才生效)。預設值為root。
15)chroot_list_enable=YES|NO:如果設定為YES,則chroot_local_user也必須為YES,表示隻有在清單中的使用者能離開家目錄,如果設定為NO,則表示不啟用清單。預設值為NO。
16)chroot_list_file=/etc/vsftpd/chroot_list:用于設定清單的路徑。預設值為/etc/vsftpd/chroot_list。
17)chroot_local_user=YES|NO:是否将本地使用者控制在家目錄中。預設值為NO。
18)connect_from_port_20=YES|NO:是否使用20端口來傳輸資料。預設值為NO。
19)connect_timeout=60:用于設定主動連接配接的逾時時間(機關:秒)。預設值為60。
20)data_connection_timeout=300:用于設定資料傳輸的逾時時間(機關:秒)。預設值為300。
21)deny_file:用于限制上傳檔案的類型,例如deny_file={*.mp3,*.exe}。無預設值。
22)dirlist_enable=YES|NO:是否允許使用者使用dir之類的列目錄指令。預設值為YES。
23)dirmessage_enable=YES|NO:是否在使用者切換目錄時顯示歡迎資訊,如果設定為YES,則需要在每個需要顯示歡迎資訊的目錄下建立名為.message的檔案,并在裡面輸入歡迎資訊才會顯示。預設值為NO。
24)download_enable=YES|NO:是否允許使用者下載下傳檔案。預設值為YES。
25)ftp_data_port=20:用于設定資料傳輸端口。預設值為20。
26)ftpd_banner:指定登入到FTP時的歡迎資訊。無預設值。
27)guest_enable=YES:啟用虛拟使用者通路
28)guest_username=ftpusers:設定映射的系統賬号
29)idle_session_timeout=300:用于設定回話逾時時間(機關:秒)。預設值為300。
30)listen_address:當vsftpd伺服器連接配接多個網絡時,如果隻希望監聽某個網絡的請求時,就需要設定該參數了。無預設值。
31)listen_ipv6=YES|NO:是否啟用standalone模式并通過ipv6監聽。預設值為NO。
32)listen_port=21:用于設定監聽的端口。預設值為21。
33)listen=YES|NO:是否啟用standalone模式并通過ipv4監聽。預設值為NO。
34)local_enable=YES|NO:是否允許非匿名使用者登入。預設值為NO。
35)local_max_rate=0:用于限制非匿名使用者的傳輸速度(機關:Byte/s)。預設值為0(表示無限制)。
36)local_root:用于指定所有非匿名使用者的根目錄,預設情況,FTP會将各使用者引導到各自的家目錄,如果你希望所有使用者登入到同一個根目錄,那麼你就需要用到該參數了。無預設值。
37)local_umask=022:用于設定非匿名使用者上傳檔案的umask值。預設值為022。
38)ls_recurse_enable=YES|NO:是否允許使用者在登入到FTP伺服器後使用ls -R等比較占用系統資源的指令。預設值為NO。
39)max_clients=2000:用于設定最大連接配接數。預設值為2000。
40)max_per_ip=50:用于設定同一台主機的最大連接配接數。預設值為50。
41)message_file=.messag:用于設定儲存歡迎資訊的檔案名。預設值為.message。
42)nopriv_user=nobody:用于設定vsftpd服務的運作使用者。預設值為nobody。
43)pam_service_name=vsftpd.vu:設定PAM認證檔案(預設為vsftpd)
44)pasv_max_port:用于設定被動連接配接時,用戶端的資料連接配接端口的最大值。預設值為0(表示采用随機端口)。
45)pasv_min_port:用于設定被動連接配接時,用戶端的資料連接配接端口的最小值。預設值為0(表示采用随機端口)。
46)tcp_wrappers=YES|NO:是否啟用tcp_wrappers通路控制清單。預設值為NO。
47)use_localtime=YES|NO:是否使用本地時間。預設值為NO。
48)userlist_deny=YES|NO:如果設定為YES,則表示拒絕清單内的使用者登入,否則表示隻允許清單内的使用者登入。預設值為YES。
49)userlist_enable=YES|NO:是否啟用使用者清單。預設值為NO。
50)userlist_file=/etc/vsftpd/user_list:用于設定使用者清單的路徑。預設值為/etc/vsftpd/user_list。
51)write_enable=YES|NO:是否允許使用者具有寫權限。預設值為NO。
52)xferlog_enable=YES|NO:是否啟用日志記錄使用者的上傳/下載下傳。預設值為NO。
53)xferlog_file=/var/log/xferlog:用于設定日志檔案的路徑。預設值為/var/log/xferlog。
54)xferlog_std_format=YES|NO:是否采用标準日志檔案來記錄日志。預設值為NO。
(2)匿名通路的配置
①安裝後直接啟動服務,程式預設就為匿名通路
(3)使用者名驗證通路的配置
①修改配置檔案/etc/vsftpd/vsftpd.conf
1)anonymous_enable=NO
2)local_enable=YES
(4)基于虛拟使用者的通路配置
①建立虛拟FTP使用者賬号資料庫檔案
1)建立檔案(奇數行為賬号、偶數行為密碼)
a.vim vusers
2)轉化為資料庫檔案
a.db_load -T -t hash -f vusers vusers.db
b.完成後删除vusers檔案
3)修改檔案權限為600
a.chmod 600 vusers.db
②建立FTP根目錄及虛拟使用者映射的系統賬号
1)useradd -s /sbin/nologin -d /home/ftproot ftpusers
2)修改/home/ftproot目錄權限
a.chmod 655 /home/ftproot
③建立支援虛拟使用者的PAM認證檔案
1)/tec/pam.d/vsftpd.vu
a.#%PAM-1.0
b.auth required pam_userdb.so db=/etc/vsftpd/vusers
c.account required pam_userdb.so db=/etc/vsftpd/vusers
2)此處不需要寫vusers.db的字尾
④修改配置檔案添加虛拟賬号資料庫檔案
1)anonymous_enable=NO:關閉匿名通路
2)local_enable=YES:允許本地使用者通路
3)guest_enable=YES:啟用虛拟使用者通路
4)guest_username=ftpusers:設定映射的系統賬号
5)pam_service_name=vsftpd.vu:修改PAM認證檔案
⑤虛拟使用者權限設定
1)建立vusers_dir目錄:mkdir /etc/vsftpd/vusers_dir
2)在vusers_dir中以虛拟使用者名建立空檔案:touch boss
3)vim boss并添權重限如anon_upload_enable=YES等
4)在主配置檔案添加:user_config_dir=/etc/vsftpd/vusers_dir
⑥重新開機
⑦測試