LPI Linux 認證/保護 FTP 伺服器
(LPIC-2 版本 4.5)
權重 2
描述: 候選人應該能夠為匿名下載和上傳配置 FTP 伺服器。此目標包括允許匿名上傳時應採取的預防措施,以及配置使用者訪問許可權。
關鍵知識領域
- Pure-FTPd 和 vsftpd 的配置檔案、工具和實用程式。
- 瞭解 ProFTPd。
- 瞭解被動 vs. 主動 FTP 連線
術語和實用程式
vsftpd.conf- 重要的 Pure-FTPd 命令列選項
描述:候選人應該能夠配置一個匿名下載 FTP 伺服器。此目標包括配置 FTP 伺服器以允許匿名上傳,列出允許匿名上傳時應採取的其他預防措施,配置具有 chroot 限制的訪客使用者和組,以及配置 ftpaccess 以拒絕對命名使用者或組的訪問。
關鍵檔案、術語和實用程式包括
ftpaccess, ftpusers, ftpgroups /etc/passwd chroot
保護 FTP 伺服器將包括
- FTP 警告橫幅自定義
- FTP 問候橫幅自定義
- 保護、拒絕和限制使用者帳戶
- 保護匿名訪問
- 保護匿名上傳
檔案傳輸協議 (FTP) 是一種較舊的 TCP 協議,旨在透過網路傳輸檔案。由於所有與伺服器的交易(包括使用者身份驗證)都是未加密的,因此它被認為是一種不安全的協議,應仔細配置。
我們將重點介紹華盛頓大學的 wu-ftpd FTP 伺服器
Wu-ftpd 的主要配置檔案位於 /etc:ftpusers、ftpaccess 和 ftpconversions。ftpusers 檔案包含所有不允許登入到 FTP 伺服器的使用者列表。正如你所想,使用者 root 應該列在這裡。你還應該確保其他特殊使用者帳戶(如 lp、shutdown、mail 等)也包含在這裡。
ftpaccess 檔案用於配置安全、使用者定義等問題。它實際上是通用配置檔案。你可以在此處設定的一些有趣的設定是:loginfails [數字]
where number is a number that stands for the amount of times that a user is allowed to fail to authenticate before being totally disabled.
shutdown [檔名]
where filename is the name of a file that, if it exists, automatically shuts down the FTP server without a need to actually close the port in the /etc/inetd.conf file and then restarting inetd.
最後,ftpconversions 檔案用於允許客戶端對檔案進行特殊的“即時”轉換,例如自動解壓縮下載的檔案
在 FTP 客戶端連線時返回自定義橫幅是個好主意,因為它有助於隱藏 FTP 伺服器執行的系統型別。可以使用 TCP 包裝器或以下描述的方法將橫幅傳送到傳入連線。
在它的配置檔案 /etc/ftpaccess 中新增以下行:banner /etc/banners/warning.msg
橫幅檔案的內容應該類似於:Hello, all activity on ftp.example.com is logged.
登入後,所有使用者都會看到問候橫幅。預設情況下,此橫幅包含版本資訊,這對嘗試識別系統漏洞的攻擊者很有用。要更改 wu-ftpd 的問候橫幅,請將以下指令新增到 /etc/ftpusers:greeting text <insert_greeting_here> 保護 FTP 伺服器
由於 FTP 透過不安全的網路傳遞未加密的使用者名稱和密碼進行身份驗證,因此最好拒絕系統使用者從其使用者帳戶訪問伺服器。要在 wu-ftpd 中停用使用者帳戶,請將以下指令新增到 /etc/ftpusers:deny-uid * 要在 wu-ftpd 中停用特定使用者帳戶,請將使用者名稱新增到 /etc/ftpusers
設定匿名 FTP 的最佳方法是配置一個 chroot 限制:不要允許完全訪問系統,這將限制對給定目錄的訪問。換句話說,匿名使用者登入系統後,只能訪問使用者 ftp 的主目錄,其他任何地方都無法訪問。如果她輸入 cd /,在大多數其他情況下應該將她帶到系統的根目錄,它只會將她帶到 /home/ftp(很可能是使用者 ftp 的預設主目錄)。
大多數發行版(如 RedHat)提供一個匿名 ftp 包,以幫助準備 chroot 限制。重要的是,你的嚴格 FTP 使用者在 Linux 系統上沒有真正的 shell 帳戶。這樣,如果有人設法成功地從 FTP chrooted 環境中退出(有關定義,請參見下文),由於沒有 bash shell,因此它將無法執行任何使用者任務。首先,為該目的建立新使用者。由於 chroot 環境的工作方式,這必須獨立於具有無限訪問許可權的常規使用者帳戶。Chroot 使它從使用者的角度看起來好像你放置他們的檔案系統級別是檔案系統的頂層。
用 /dev/null 作為 shell 設定這些新使用者,並在允許的 shell 列表 /etc/shells 中新增 /dev/null。還要確保在 /etc/passwd 中,他們的主目錄列為 /home/./ftp(對於使用者 ftp),即使真實目錄是 /home/ftp
設定一個 chroot 使用者環境:你實際上是在建立骨架根檔案系統,其中包含必要的元件、二進位制檔案、密碼檔案等,以允許 Unix 在使用者登入時執行 chroot。請注意,wu-ftpd 可能會使用 --enable-ls 選項進行編譯,在這種情況下,/home/ftp/bin 和 /home/ftp/lib 目錄不是必需的,因為這個新選項允許 Wu-ftpd 使用它自己的 ls 函式。我們仍然繼續展示舊方法,為那些喜歡將 /bin/ls 複製到 chroot 的 FTP 目錄 /home/ftp/bin 並建立相關的庫工具的人提供幫助。以下是在 chroot 限制中執行 Wu-ftpd 軟體所需的步驟:首先建立所有必要的 chroot 環境目錄
[root@deep ] /# mkdir /home/ftp/dev [root@deep ] /# mkdir /home/ftp/etc [root@deep ] /# mkdir /home/ftp/bin [root@deep ] /# mkdir /home/ftp/lib
將新目錄的許可權更改為 0511 以確保安全:chmod 命令將使我們的 chroot dev、etc、bin 和 lib 目錄對超級使用者 root 可讀可執行,並對使用者組和所有使用者可執行
[root@deep ] /# chmod 0511 /home/ftp/dev/ [root@deep ] /# chmod 0511 /home/ftp/etc/ [root@deep ] /# chmod 0511 /home/ftp/bin [root@deep ] /# chmod 0511 /home/ftp/lib
將 /bin/ls 二進位制檔案複製到 /home/ftp/bin 目錄,並將 ls 程式的許可權更改為 0111。你不想讓使用者能夠修改二進位制檔案
[root@deep ] /# cp /bin/ls /home/ftp/bin [root@deep ] /# chmod 0111 /bin/ls /home/ftp/bin/ls
查詢 ls Linux 二進位制程式的共享庫依賴項:
[root@deep ] /# ldd /bin/ls
libc.so.6 => /lib/libc.so.6 (0x00125000)
/lib/ld-linux.so.2 =7gt; /lib/ld-linux.so.2 (0x00110000)
將上面識別的共享庫複製到 /home/ftp 目錄下的新 lib 目錄
[root@deep ] /# cp /lib/libc.so.6 /home/ftp/lib/ [root@deep ] /# cp /lib/ld-linux.so.2 /home/ftp/lib/
建立你的 /home/ftp/dev/null 檔案
[root@deep ] /# mknod /home/ftp/dev/null c 1 3 [root@deep ] /# chmod 666 /home/ftp/dev/null
將 group 和 passwd 檔案複製到 /home/ftp/etc 目錄。它不應該是你真實檔案系統的 group 和 passwd 檔案。為此,我們將在這兩個檔案中(passwd 和 group)刪除除超級使用者 root 之外的所有非 FTP 使用者。
編輯 passwd 檔案,vi /home/ftp/etc/passwd 並刪除除超級使用者 root 和你允許的 FTP 使用者之外的所有條目。修改後的 chroot 環境 passwd 檔案中的條目非常重要,如下所示
root:x:0:0:root:/:/dev/null ftpadmin:x:502:502::/ftpadmin/:/dev/null
(在這裡注意兩點:首先,此修改後的 passwd 檔案中所有使用者的 home 目錄現在都已更改,以反映新的 chroot FTP 目錄,即 /home/ftp/./ftpadmin/ 開始於 /ftpadmin/,另外,root 帳戶的使用者登入 shell 的名稱已更改為 /dev/null) 編輯 group 檔案,vi /home/ftp/etc/group 並刪除除超級使用者 root 和所有你允許的 FTP 使用者之外的所有條目。group 檔案應該與你的正常 group 檔案相對應
root:x:0:root ftpadmin:x:502:
現在我們必須將 chroot 限制目錄中的 passwd 和 group 檔案設定為不可變,以提高安全性。
[root@deep ] /# cd /home/ftp/etc/ [root@deep ] /# chattr +i passwd
在 group 檔案上設定不可變位
[root@deep ] /# cd /home/ftp/etc/ [root@deep ] /# chattr +i group
透過建立 /etc/pam.d/ftp 檔案並新增以下行,配置你的 /etc/pam.d/ftp 檔案以使用 pam 身份驗證
#%PAM-1.0 auth required /lib/security/pam_listfile.so item=user sense=deny \ file=/etc/ftpusers onerr=succeed auth required /lib/security/pam_pwdb.so shadow nullok auth required /lib/security/pam_shells.so account required /lib/security/pam_pwdb.so session required /lib/security/pam_pwdb.so
如果您想允許匿名使用者上傳,建議您在 /var/ftp/pub/ 中建立一個只寫目錄。為此,請鍵入以下命令:
mkdir /var/ftp/pub/upload
接下來,更改許可權,以便匿名使用者無法看到目錄中的內容,請鍵入以下命令:
chmod 744 /var/ftp/pub/upload
目錄的詳細資訊列表應如下所示:
drwxr--r-- 2 root ftp 4096 Aug 20 18:26 upload