File Transport Protocol (FTP) 是設計來透過網路傳輸檔案的一種較舊的 TCP 通訊協定,因為所有伺服器的 交易(包括使用者認證)都是未加密的,因此它被認定為一個非安全的通訊協定,且應該要小心地設定。
Red Hat Enterprise Linux 提供三種 FTP 伺服器。
gssftpd — 一個使用 Kerberos 的 xinetd FTP 系統程式, 它並不透過網路傳送認證資訊。
Red Hat Content Accelerator (tux) — 一個含有 FTP 功能的核心空間網頁伺服器。
vsftpd — 一個單機的且以安全為導向的 FTP 服務實作。
下列的安全指引可用來設定 vsftpd 的 FTP 服務。
在送出使用者名稱與密碼前,所有的使用者都會先看到一個歡迎的標題,預設情況下,這個標題含有版本的資訊, 怪客可使用它來找出系統中弱點的所在處。
如要更改 vsftpd 的歡迎標題,請增加下列的指令到 /etc/vsftpd/vsftpd.conf:
ftpd_banner=<insert_greeting_here> |
以您想要使用之歡迎標題的文字取代以上指令中的 <insert_greeting_here>。
至於多行的標題,最好使用一個標題檔案。 為了簡化多個標題的管理,請放置所有的標題在一個稱為 /etc/banners/ 的新目錄中。 在這個例子中,用於 FTP 連線的標題檔案是 /etc/banners/ftp.msg。 以下為如此檔案一個範例:
#################################################### # Hello, all activity on ftp.example.com is logged.# #################################################### |
![]() | 請注意 |
---|---|
沒有必要如 第 5.1.1.1 節 中所指定的使用 220 當作每一行的開頭。 |
如要使 vsftpd 參考這個標題檔案,請增加下列的指令到 /etc/vsftpd/vsftpd.conf:
banner_file=/etc/banners/ftp.msg |
您也可以使用如 第 5.1.1.1 節 所述的使用 TCP 包裹程式來傳送額外的標題給 外來的連線。
/var/ftp/ 目錄如果存在的話,將會啟用匿名的帳號。
建立這個目錄最簡單的方法便是安裝 vsftpd 套件,這個套件為匿名使用者設定一個目錄樹, 而且為匿名使用者設定目錄的權限設定為僅能讀取。
預設情況下,匿名使用者無法寫入任何的目錄。
![]() | 警示 |
---|---|
假如啟用匿名的存取一部 FTP 伺服器,請小心地存放重要的資料。 |
如要允許匿名使用者上載資料,建議您在 /var/ftp/pub/ 目錄中建立一個僅能寫入的目錄。
請輸入:
mkdir /var/ftp/pub/upload |
再來請輸入以下指令來更改權限設定,以使得匿名使用者無法看到目錄的內容:
chmod 730 /var/ftp/pub/upload |
一個長格式的目錄列表應該如下所示:
drwx-wx--- 2 root ftp 4096 Feb 13 20:05 upload |
![]() | 警告 |
---|---|
允許匿名使用者在目錄擁有讀寫權限的系統管理員通常發現他們的伺服器成為一個竊取軟體的庫存點。 |
在 vsftpd 中,還可以增加下列的行到 /etc/vsftpd/vsftpd.conf 檔案中:
anon_upload_enable=YES |
因為 FTP 透過非安全的網路傳送未加密的使用者名稱與密碼以用作認證,因此最好可以從他們的使用者帳號 拒絕系統使用者存取伺服器。
如要停用 vsftpd 中的特定使用者帳號,請增加下列的指令到 /etc/vsftpd/vsftpd.conf 檔案中。
local_enable=NO |
要停用一個特定帳號的群組(如 root 使用者與那些擁有 sudo 特權的人)存取一部 FTP 伺服器最簡單的方式是使用一個 PAM 列出檔案,如 第 4.4.2.4 節 所述。 vsftpd 的 PAM 設定檔案是 /etc/pam.d/vsftpd。
您也可以直接在每一個服務中停用使用者帳號。
如要停用 vsftpd 中的特定使用者帳號,請增加使用者名稱到 /etc/vsftpd.ftpusers 檔案中。
請依照 第 5.1.1 節 所述的指示使用 TCP 包裹程式來控制存取 FTP 的系統程式。