Linux下FTP服務器原理簡介及簡單應用

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用戶的類型

ü 匿名用戶:anonymousftp

ü 本地用戶:

?  帳號名稱、密碼等信息保存在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 』這個參數了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章