v 常見的FTP服務器程序
ü Win:IIS、Serv-U
ü Linux:wu-ftpd,Proftpd,vsftpd(Very Secure FTP Daemon)
v 常見的FTP客戶端程序
ü ftp命令(cmd),瀏覽器
ü CuteFTP、FlashFXP、LeapFTP、Filezilla
ü gftp、kuftp
v FTP連接方式
ü 控制連接:標準端口爲21,用於發送FTP命令信息
ü 數據連接:標準端口爲20,用於上傳、下載數據
v 數據連接的建立類型:
ü 主動模式:服務端從20端口主動向客戶端發起連接
ü 被動模式:服務端在指定範圍內的某個端口被動等待客戶端發起連接
v FTP傳輸模式
ü 文本模式:ASCII模式,以文本序列傳輸數據
ü 二進制模式:Binary模式,以二進制序列傳輸數據
v FTP用戶的類型
ü 匿名用戶:anonymous或ftp
ü 本地用戶:
? 帳號名稱、密碼等信息保存在passwd、shadow文件中
ü 虛擬用戶:
? 使用獨立的帳號/密碼數據文件
v常用的FTP指令
pwd cd lcd bye help ascii binary
dir !dir get mget put !put
[root@ftp ~]# man 5 vsftpd.conf #參考手冊
vsftpd服務基礎
vsftpd軟件包:
ü 官方站點:http://vsftpd.beasts.org/
ü 主程序:/usr/sbin/vsftpd
ü 服務名:vsftpd
ü 用戶控制列表文件
? /etc/vsftpd/ftpusers
? /etc/vsftpd/user_list
ü 主配置文件
? /etc/vsftpd/vsftpd.conf
安裝vsftpd指令:
[root@ftp ~]# yum info vsftpd
[root@ftp ~]# yum install vsftpd -y
[root@ftp ~]# rpm -qc vsftpd
/etc/vsftpd/vsftpd.conf
v常用的全局配置項
ü listen=YES:是否以獨立運行的方式監聽服務
ü listen_address=192.168.4.1:設置監聽的IP地址
ü listen_port=21:設置監聽FTP服務的端口號
ü write_enable=YES:是否啓用寫入權限
ü download_enable=YES:是否允許下載文件
ü userlist_enable=YES:是否啓用user_list列表文件
ü userlist_deny=YES:是否禁用user_list中的用戶
ü max_clients=0:限制併發客戶端連接數
ü max_per_ip=0:限制同一IP地址的併發連接數
v常用的匿名FTP配置項
ü anonymous_enable=YES:啓用匿名訪問
ü anon_umask=022:匿名用戶所上傳文件的權限掩碼
ü anon_root=/var/ftp:匿名用戶的FTP根目錄
ü anon_upload_enable=YES:允許上傳文件
ü anon_mkdir_write_enable=YES:允許創建目錄
ü anon_other_write_enable=YES:開放其他寫入權
ü anon_max_rate=0:限制最大傳輸速率,單位爲字節
v常用的本地用戶FTP配置項
ü local_enable=YES:是否啓用本地系統用戶
ü local_umask=022:本地用戶所上傳文件的權限掩碼
ü local_root=/var/ftp:設置本地用戶的FTP根目錄
ü chroot_local_user=YES:是否將用戶禁錮在主目錄
ü local_max_rate=0:限制最大傳輸速率(字節/秒)
[root@ftp ~]# man 5 vsftpd.conf #參考手冊
vsftpd主要設置文件/etc/vsftpd/vsftpd.conf詳解:
12 anonymous_enable=YES #匿名賬戶可以登錄
15 local_enable=YES #本地賬戶可以登錄
18 write_enable=YES #本地賬戶可寫權限
22 local_umask=022 #umask值(用於權限控制)
23 anon_umask=022
27 #anon_upload_enable=YES #匿名賬戶是否上傳文件
31 #anon_mkdir_write_enable=YES #匿名賬戶是否可以創建目錄
anon_other_write_enable #匿名賬戶其它的寫權限(刪除等)
35 dirmessage_enable=YES #啓用目錄說明功能
(切換到目錄下,顯示一些消息,在目錄下創建.message文件)
38 xferlog_enable=YES #是否啓用日誌文件
51 #xferlog_file=/var/log/vsftpd.log #日誌文件位置
54 xferlog_std_format=YES #日誌格式
41 connect_from_port_20=YES #連接時打開20端口
46 #chown_uploads=YES #上傳身份是否改變
47 #chown_username=whoever #改變上傳身份
57 #idle_session_timeout=600 #會話超時
60 #data_connection_timeout=120 #連接超時
79 #ascii_upload_enable=YES #是否允許使用ascii上傳
80 #ascii_download_enable=YES #是否允許使用ascii下載
83 #ftpd_banner=Welcome to blah FTP service. #歡迎條幅
87 #deny_email_enable=YES #是否拒絕郵箱登陸
88 # (default follows)
89 #banned_email_file=/etc/vsftpd/banned_emails#拒絕郵箱登陸文件
94 chroot_list_enable=YES #允許本地賬戶切換目錄(跳出家目錄)
96 chroot_list_file=/etc/vsftpd/chroot_list #此文件中的賬戶將不能切換家目錄(必須結合chroot_list_enable=YES )
#chroot_local_user=YES #禁止所有用戶切換根目錄
(chroot_list_enable=YES,chroot_local_user=YES,
chroot_list_file=/etc/vsftpd/chroot_list此時只有放入列表中的賬戶可以切換,其它賬戶不能切換)
107 listen=YES #監聽功能打開
114 pam_service_name=vsftpd #pam可插拔的驗證模塊
(設置pam的認證服務的配置文件名稱,存入/etc/pam.d/目錄下)
115 userlist_enable=YES #啓用賬戶限制,啓用/etc/vsftpd/user_list文件
userlist_deny=YES #禁止user_list中文件訪問,不讓輸密碼
userlist_deny=NO #只允許user_list中賬戶訪問
(/etc/vsftpd/user_list不讓輸密碼,/etc/vsftpd/ftpusers允許輸密碼)
【說明:在/etc/vsftpd/user_list中 # If userlist_deny=NO, only allow users in this file# If userlist_deny=YES (default), never allow users in this file, and do not even prompt for a password.】
116 tcp_wrappers=YES #啓動系統的簡易防火牆
pasv_max_port #被動連接的最大端口
pasv_min_port #被動連接的最小端口
local_max_rate=1000000 #本地賬戶最大傳輸速率1M/s
anon_max_rate=100000 #匿名賬戶最大傳輸速率100K/s
ftp服務器應用之虛擬用戶
[root@ftp ~]# mkdir /mnt/cdrom/
[root@ftp ~]# mount /dev/cdrom /mnt/cdrom/
[root@ftp Server]# rpm -ivh vsftpd-2.0.5-12.el5.i386.rpm
[root@ftp Server]# rpm -ivh db4-utils-4.3.29-9.fc6.i386.rpm
[root@ftp Server]# cd /etc/vsftpd/
[root@ftp vsftpd]# vim vuser.txt
zhangsan
123
lisi
123
[root@ftp vsftpd]# db_load -T -t hash -f vuser.txt vuser.db
[root@ftp vsftpd]# chmod 600 vuser.db
[root@ftp vsftpd]# cd /etc/pam.d/
[root@ftp pam.d]# ll
[root@ftp pam.d]# cp vsftpd vsftpd.vu
[root@ftp pam.d]# vim vsftpd.vu
#%PAM-1.0
auth required pam_userdb.so db=/etc/vsftpd/vuser
account required pam_userdb.so db=/etc/vsftpd/vuser
[root@ftp pam.d]# vim /etc/vsftpd/vsftpd.conf
114 guest_enable=YES
115 guest_username=qq
116 pam_service_name=vsftpd.vu
[root@ftp pam.d]# useradd -d /home/virtual qq
[root@ftp pam.d]# cd /home/
[root@ftp home]# chmod 755 virtual/
[root@ftp home]# mkdir virtual/d1
[root@ftp home]# touch virtual/f1
[root@ftp home]# service vsftpd start
Starting vsftpd for vsftpd: [ OK ]
客戶端測試,使用虛擬賬號zhangsan成功登錄ftp。如下所示:
參考資料:
FTP 是文件傳輸協議 (File Transfer Protocol) 的簡寫,主要的功能是進行服務器與客戶端的檔案管理、傳輸等事項;
?FTP 的服務器軟件非常多,例如 Wu FTP, Proftpd, vsftpd 等等,各種 FTP 服務器軟件的發展理念並不相同, 所以選擇時請依照你的需求來決定所需要的軟件;
?FTP 使用的是明碼傳輸,而過去一些 FTP 服務器軟件也曾被發現安全漏洞,因此設定前請確定該軟件已是最新版本,避免安全議題的衍生;
?由於 FTP 是明碼傳輸,其實可以使用 SSH 提供的 sftp 來取代 FTP ;
?大多數的 FTP 服務器軟件都提供 chroot 的功能,將實體用戶限制在他的家目錄內;
?FTP 這個 daemon 所開啓的正規埠口爲 20 與 21 ,其中 21 爲命令通道, 20 爲主動聯機的數據傳輸信道;
?FTP 的數據傳輸方式主要分爲主動與被動(Passive, PASV),如果是主動的話,則 ftp-data 在服務器端主動以 port 20 連接到客戶端,否則需開放被動式監聽的埠口等待客戶端來連接;
?在 NAT 主機內的客戶端 FTP 軟件聯機時可能發生困擾,這可以透過 iptables 的 nat 模塊或利用被動式聯機來克服;
?一般來說, FTP 上面共有三個羣組,分別是實體用戶、訪客與匿名登錄者(real, guest, anonymous);
?可以藉由修改 /etc/passwd 裏面的 Shell 字段,來讓使用者僅能使用 FTP 而無法登入主機;
?FTP 的指令、與用戶活動所造成的登錄檔是放置在 /var/log/xferlog 裏面;
?vsftpd 爲專注在安全議題上而發展的一套 FTP 服務器軟件,他的配置文件在 /etc/vsftpd/vsftpd.conf
FTP 在建立聯機以及數據傳輸時,會建立哪些聯機?
需建立兩種聯機,分別是命令信道與數據傳輸信道。在主動式聯機上爲 port 21(ftp) 與 port 20(ftp-data)。
?FTP 主動式與被動式聯機有何不同?
主動式聯機的時候,命令聯機是由 client 端主動連接到服務器端,但是 ftp-data 則是由服務器端主動的聯機到 client 端。至於被動式聯機的時候,則不論 command 還是 ftp-data 的聯機,服務器端都是監聽客戶端的要求的!
?有哪些動作可以讓你的 FTP 主機更爲安全 (secure) ?
o 隨時更新服務器軟件到最新版本;
o 讓 guest 與 anonymous 的家目錄限制在固定的目錄中(chroot 或是 restricted);
o 拒絕 root 的登入或者其他系統賬號的登入;
o 拒絕大部分的 upload 行爲!
? 我們知道 ftp 會啓用兩個 ports ,請問這兩個 port 在哪裏規範的 (以 vsftpd 爲例)?而且,一般正規的 port 是幾號?
? 若爲 stand alone 時,都是由 vsftpd.conf 規範,命令通道爲 listen_port=21 規範,數據連接爲 connect_from_port_20=YES 及pasv_max_port=0, pasv_max_port=0 所規範。 若是 super daemon 所管理時,命令信道則由 /etc/services 所規範了。
? 那幾個檔案可以用來抵擋類似 root 這種系統賬號的登入 FTP?
? /etc/vsftpd/ftpusers /etc/vsftpd/user_list
? 在 FTP 的 server 與 client 端進行數據傳輸時,有哪兩種模式?爲何這兩種模式影響數據的傳輸很重要?
? 數據的傳輸有 ASCII 與 Binary 兩種方式,在進行 ascii 傳送方式時,被傳送的檔案將會以文本模式來進行傳送的行爲, 因此,檔案的屬性會被修改過,可能造成執行檔最後卻無法執行等的問題!一般來說,ASCII 通常僅用在文本文件與一些原始碼檔案的傳送。
? 我的主機明明時區設定沒有問題,但爲何登入 vsftpd 這個 FTP 服務時,時間就是少八小時?該如何解決?
? 肯定是時區方面出了問題,應該就是 vsftpd.conf 裏面少了『 use_localtime=YES 』這個參數了。