240 likes | 358 Views
21. 檔案伺服器之三 : FTP 伺服器. FTP 的資料連結原理 FTP (File transfer protocol) 是相當古老的傳輸協定之一,他最主要的功能是在伺服器與用戶端之間進行檔案的傳輸。這個古老的協定使用的是明碼傳輸方式,且過去有相當多的安全危機歷史。為了更安全的使用 FTP 協定,我們主要介紹較為安全但功能較少的 vsftpd 這個軟體吶。. P.21-2. 請參閱書籍. FTP 功能 簡介 不同等級的使用者身份: user, guest, anonymous
E N D
21 • 檔案伺服器之三:FTP 伺服器
FTP 的資料連結原理 • FTP (File transfer protocol) 是相當古老的傳輸協定之一,他最主要的功能是在伺服器與用戶端之間進行檔案的傳輸。這個古老的協定使用的是明碼傳輸方式,且過去有相當多的安全危機歷史。為了更安全的使用 FTP 協定,我們主要介紹較為安全但功能較少的 vsftpd這個軟體吶。 • P.21-2 請參閱書籍
FTP 功能簡介 • 不同等級的使用者身份:user, guest, anonymous • FTP 伺服器在預設的情況下,依據使用者登入的情況而分為三種不同的身份,分別是: (1)實體帳號,real user;(2)訪客, guest;(3)匿名登入者, anonymous 這三種。 • 命令記錄與登錄檔記錄 • 限制使用者活動的目錄: (change root, 簡稱 chroot) • 為了避免使用者在你的 Linux 系統當中隨意逛大街 (意指離開使用者自己的家目錄而進入到 Linux 系統的其他目錄去),所以將使用者的工作範圍『侷限』在使用者的家目錄底下,嗯!實在是個不錯的好主意!FTP 可以限制使用者僅能在自己的家目錄當中活動喔!如此一來,由於使用者無法離開自己的家目錄,而且登入 FTP 後,顯示的『根目錄』就是自己家目錄的內容,這種環境稱之為 change root ,簡稱 chroot,改變根目錄的意思啦! • P.21-2 請參閱書籍
FTP 的運作流程與使用到的埠口 • FTP 伺服器是比較麻煩一些,因為 FTP 伺服器使用了兩個連線,分別是命令通道與資料流通道 (ftp-data) 。這兩個連線都需要經過三向交握,因為是 TCP 封包嘛!那麼這兩個連線通道的關係是如何呢?底下我們先以 FTP 預設的主動式 (active) 連線來作個簡略的說明囉: • 主動式連線使用到的埠號 利用上述的說明來整理一下 FTP 伺服器端會使用到的埠號主要有: • 命令通道的 ftp (預設為 port 21) 與 • 資料傳輸的 ftp-data (預設為 port 20)。 • P.21-3~4 請參閱書籍
在主動連線的 FTP 伺服器與用戶端之間具有防火牆的 • : • 回想一下我們的第九章防火牆!一般來說,很多的區域網路都會使用防火牆 (iptables) 的 NAT 功能,那麼在 NAT 後端的 FTP 用戶如何連接到 FTP 伺服器呢?我們可以簡單的以下圖來說明 目前有兩個簡易的方法可以克服這個問題: • 使用 iptables所提供的 FTP 偵測模組 • 用戶端選擇被動式 (Passive) 連線模式 • P.21-4~5 請參閱書籍
用戶端選擇被動式連線模式 • 那麼什麼是被動式連線呢?我們可以使用底下的圖示來作個簡略的介紹喔: • P.21-6 請參閱書籍
FTP 的安全性問題與替代方案 • 拜 SSH 所賜,目前我們已經有較為安全的 FTP 了,那就是 ssh提供的 sftp這個 server 啊!這個 sftp-server 最大的優點就是:『在上面傳輸的資料是經過加密的』!所以在網際網路上面流竄的時候,嘿嘿!畢竟是比較安全一些啦!所以建議你,除非必要,否則的話使用 SSH 提供的 sftp-server 功能即可~ • 隨時更新到最新版本的 FTP 軟體,並隨時注意漏洞訊息; • 善用 iptables來規定可以使用 FTP 的網域; • 善用 TCP_Wrappers來規範可以登入的網域; • 善用 FTP 軟體的設定來限制使用你 FTP 伺服器的使用者的不同權限啊; • 使用 Super daemon 來進階管理你的 FTP 伺服器; • 隨時注意使用者的家目錄、以及匿名使用者登入的目錄的『檔案權限』; • 若不對外公開的話,或許也可以修改 FTP 的 port 。 • 也可以使用 FTPs 這種加密的 FTP 功能! • P.21-7 請參閱書籍
vsftpd伺服器基礎設定 • vsftpd是基於上面的說明來設計的一個較為安全的 FTP 伺服器軟體,他具有底下的特點喔: • vsftpd這個服務的啟動者身份為一般使用者,所以對於 Linux 系統的使用權限較低,對於 Linux 系統的危害就相對的減低了。此外,vsftpd亦利用 chroot() 這個函式進行改換根目錄的動作,使得系統工具不會被 vsftpd這支服務所誤用; • 任何需要具有較高執行權限的 vsftpd指令均以一支特殊的上層程序所控制,該上層程序享有的較高執行權限功能已經被限制的相當的低,並以不影響 Linux 本身的系統為準; 續下頁 • P.21-9~10 請參閱書籍
絕大部分 ftp 會使用到的額外指令功能 (dir, ls, cd ...) 都已經被整合到 vsftpd主程式當中了,因此理論上 vsftpd不需要使用到額外的系統提供的指令,所以在 chroot的情況下,vsftpd不但可以順利運作,且不需要額外功能對於系統來說也比較安全。 • 所有來自用戶端且想要使用這支上層程序所提供的較高執行權限之 vsftpd指令的需求,均被視為『不可信任的要求』來處理,必需要經過相當程度的身份確認後,方可利用該上層程序的功能。例如 chown(), Login 的要求等等動作; • 此外,上面提到的上層程序中,依然使用 chroot() 的功能來限制使用者的執行權限。 • P.21-10 請參閱書籍
所需要的軟體以及軟體結構 • /etc/vsftpd/vsftpd.conf 嚴格來說,整個 vsftpd的設定檔就只有這個檔案!這個檔案的設定是以 bash 的變數設定相同的方式來處理的,也就是『參數=設定值』來設定的,注意,等號兩邊不能有空白喔!至於詳細的 vsftpd.conf可以使用 『 man 5 vsftpd.conf 』來詳查。 • P.21-10~11 請參閱書籍
CentOS的 vsftpd預設值 • 在 CentOS的預設值當中,vsftpd是同時開放實體用戶與匿名使用者的,CentOS的預設值如下: • P.21-19 請參閱書籍
你可以使用 anonymous 這個匿名帳號或其他實體帳號 (/etc/passwd) 登入; • anonymous 的家目錄在 /var/ftp ,且無上傳權限,亦已經被 chroot了; • 實體用戶的家目錄參考 /etc/passwd,並沒有被 chroot,可前往任何有權限可進入的目錄中; • 任何於 /etc/vsftpd/ftpusers內存在的帳號均無法使用 vsftpd (PAM); • 可利用 /etc/hosts.{allow|deny} 來作為基礎防火牆; • 當用戶端有任何上傳/下載資訊時,該資訊會被紀錄到 /var/log/xferlog中; • 主動式連線的埠口為 port 20; • 使用格林威治時間 (GMT)。 • P.21-19~20 請參閱書籍
針對實體帳號的設定 • 希望使用台灣本地時間取代 GMT 時間; • 使用者登入時顯示一些歡迎訊息的資訊; • 系統帳號不可登入主機 (亦即 UID 小於 500 以下的帳號); • 一般實體用戶可以進行上傳、下載、建立目錄及修改檔案等動作; • 使用者新增的檔案、目錄之 umask希望設定為 002; • 其他主機設定值保留預設值即可。 • P.21-20~21 請參閱書籍
先建立主設定檔 vsftpd.conf,這個設定檔已經包含了主要設定值: • P.21-21 請參閱書籍
建立歡迎訊息: • 建立限制系統帳號登入的檔案 • /etc/vsftpd/ftpusers:就是 /etc/pam.d/vsftpd這個檔案的設定所影響的; • /etc/vsftpd/user_list:由 vsftpd.conf的 userlist_file所設定。 • P.21-22 請參閱書籍
實體帳號的 SELinux議題 • P.21-23 請參閱書籍
對使用者 (包括未來新增用戶) 進行 chroot • P.21-23~24 請參閱書籍
僅有匿名登入的相關設定 • 使用台灣本地的時間,而非 GMT 時間; • 提供歡迎訊息,說明可提供下載的資訊; • 僅開放 anonymous 的登入,且不需要輸入密碼; • 檔案傳輸的速限為 1 Mbytes/second; • 資料連接的過程 (不是命令通道!) 只要超過 60 秒沒有回應,就強制 Client 斷線! • 只要 anonymous 超過十分鐘沒有動作,就予以斷線; • 最大同時上線人數限制為 50 人,且同一 IP 來源最大連線數量為 5 人; • P.21-26 請參閱書籍
預設的 FTP 匿名者的根目錄所在: ftp 帳號的家目錄 • OK!那如何設定呢?首先我們必須要知道的是匿名使用者的目錄在哪裡?事實上匿名者預設登入的根目錄是以 ftp 這個使用者的家目錄為主,所以你可以使用『 finger ftp 』來查閱。咱們的 CentOS預設的匿名者根目錄在 /var/ftp/ 中。且匿名登入者在使用 FTP 服務時,他預設可以使用『 ftp 』 這個使用者身份的權限喔,只是被 chroot到 /var/ftp/ 目錄中就是了。 • P.21-26 請參閱書籍
建立 vsftpd.conf的設定資料 • P.21-27 請參閱書籍
建立歡迎畫面與下載提示訊息 • P.21-27~28 請參閱書籍
讓匿名者可上傳/下載自己的資料 (權限開放最大) • P.21-28~29 請參閱書籍
讓匿名者僅具有上傳權限,不可下載匿名者上傳的東西讓匿名者僅具有上傳權限,不可下載匿名者上傳的東西 • 被動式連線埠口的限制 • P.21-29~30 請參閱書籍
防火牆設定 • 加入 iptables的 ip_nat_ftp, ip_conntrack_ftp兩個模組 • 開放 port 21 給網際網路使用 • 開放前一小節提到的 port 65400~65410 埠口給 Internet 連線用 • P.21-31 請參閱書籍