- 1、本文档共35页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
FTP 的资料连结原理LIUNX
FTP 的資料連結原理
FTP 是相當古老的傳輸協定之一,他最主要的功能是在伺服器與用戶端之間進行檔案的傳輸。 FTP 其實是以 TCP 封包的模式進行伺服器與用戶端電腦之間的連線,當連線建立後,使用者可以在用戶端端連上 FTP 伺服器來進行檔案的下載與上傳,此外,也可以直接管理用戶在 FTP 伺服器上面的檔案呢,相當的方便! 而這個古老的協定是使用明碼傳輸,且過去有相當多的安全危機歷史。為了更安全的使用 FTP 協定, 我們主要介紹較為安全但功能較少的 vsftpd 這個軟體吶。
FTP 功能簡介
FTP 伺服器的功能除了單純的進行檔案的傳輸與管理之外,依據伺服器軟體的設定架構, 他還可以提供幾個主要的功能,底下我們約略的來談一談:
? 不同等級的使用者身份:
FTP 伺服器在預設的情況下,依據使用者登入的情況而分為三種不同的身份,分別是 (1)實體帳號,real user;(2)訪客, guest;(3)匿名登入者, anonymous 這三種。這三種身份的使用者在系統上面的使用權限差異很大喔! 例如實體用戶取得系統的權限比較完整,所以可以進行比較多的動作;至於匿名登入者, 大概我們就僅提供他下載一下資源而已,並不許匿名者使用太多主機的資源啊! 當然,這三種人物能夠使用的『線上指令』自然也就不相同囉! ^_^
? 命令記錄與登錄檔記錄:
FTP 可以利用系統的 syslogd 這個 daemon 來進行資料的紀錄, 而記錄的資料包括了使用者曾經下達過的命令與使用者傳輸資料(傳輸時間、檔案大小等等)的紀錄呢! 所以你可以很輕鬆的在 /var/log/ 裡面找到各項登錄資訊喔!
? 限制或解除使用者家目錄所在(change root, 簡稱 chroot):
為了避免使用者在您的 Linux 系統當中隨意逛大街 (意指離開使用者自己的家目錄而進入到 Linux 系統的其他目錄去), 所以將使用者的工作範圍『侷限』在使用者的家目錄底下,嗯!實在是個不錯的好主意!FTP 可以限制使用者僅能在自己的家目錄當中活動喔!如此一來,由於使用者無法離開自己的家目錄,而且登入 FTP 後,顯示的『根目錄』就是自己家目錄的內容,這種環境稱之為 change root ,簡稱 chroot ,改變根目錄的意思啦!這有什麼好處呢?當一個惡意的使用者以 FTP 登入您的系統當中,如果沒有 chroot 的環境下,他可以到 /etc, /usr/local, /home 等其他重要目錄底下去察看檔案資料,尤其是很重要的 /etc/ 底下的設定檔,如 /etc/passwd 等等。如果您沒有做好一些檔案權限的管理與保護,那他就有辦法取得系統的某些重要資訊, 用來『入侵』您的系統呢!所以在 chroot 的環境下,當然就比較安全一些咯!
FTP 的運作流程與使用到的埠口
FTP 的傳輸使用的是較為可靠的 TCP 封包協定,在前幾章的網路基礎當中我們談過, TCP 這種封包格式在建立連線前會先進行三向交握的。不過 FTP 伺服器是比較麻煩一些,因為 FTP 伺服器使用了兩個連線,分別是命令通道與資料流通道 (ftp-data) 。這兩個連線都需要經過三向交握, 因為是 TCP 封包嘛!那麼這兩個連線通道的關係是如何呢?底下我們先以 FTP 預設的主動式 (active) 連線來作個簡略的說明囉:
圖一、FTP 伺服器的主動式連線示意圖
簡單的連線就如上圖所示,至於連線的步驟是這樣的:
建立命令通道的連線如上圖一所示,用戶端會隨機取一個大於 1024 以上的埠口 (port AA) 來與 FTP 伺服器端的 port 21 達成連線, 這個過程當然需要三向交握了!達成連線後用戶端便可以透過這個連線來對 FTP 伺服器下達指令, 包括查詢檔名、下載、上傳等等指令都是利用這個通道來下達的;
通知 FTP 伺服器端使用 active 且告知連接的埠號FTP 伺服器的 21 埠號主要用在命令的下達,但是當牽涉到資料流時,就不是使用這個連線了。 用戶端在需要資料的情況下,會告知伺服器端要用什麼方式來連線,如果是主動式 (active) 連線時, 用戶端會先隨機啟用一個埠口 (圖一當中的 port BB) ,且透過命令通道告知 FTP 伺服器這兩個資訊,並等待 FTP 伺服器的連線;
FTP 伺服器『主動』向用戶端連線FTP 伺服器由命令通道瞭解用戶端的需求後,會主動的由 20 這個埠號向用戶端的 port BB 連線, 這個連線當然也會經過三向交握啦!此時 FTP 的用戶端與伺服器端共會建立兩條連線,分別用在命令的下達與資料的傳遞。 而預設 FTP 伺服器端使用的主動連線埠號就是 port 20 囉!
如此一來則成功的建立起『命令』與『資料
文档评论(0)