歡迎您光臨本站 註冊首頁

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

←手機掃碼閱讀     火星人 @ 2014-03-08 , reply:0

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

Ü 匿名用戶: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 』這個參數了.

本文出自 「xjzhujunjie」 博客,請務必保留此出處http://xjzhujunjie.blog.51cto.com/3582724/811668


[火星人 ] Linux下FTP伺服器原理簡介及簡單應用已經有798次圍觀

http://coctec.com/docs/linux/show-post-46229.html