建立安全的 FTP 伺服器 (Wu-Ftp)
本文會講述一些範例,令您的 FTP 伺服器更加安全。例如,標準的安裝允許匿名登入,因此所有人都可以在您的伺服器隱藏很多廢物。只要跟隨以下步驟,您就可以為每個使用者在伺服器上設定家目錄,而他們不能瀏覽自己目錄以外的東西。
1. 匿名登入
修改/etc/ftpaccess 檔案,刪除所有匿名的記錄。
以下是 ftpaccess 檔案的範例:
| /etc/ftpaccess |
class all real,guest * email your@email.com loginfails 3 readme README* login readme README* cwd=* message /welcome.msg login message .message cwd=* compress yes all tar yes all chmod no guest delete no guest overwrite no guest rename no guest log transfers anonymous,real inbound, outbound shutdown /etc/shutmsg passwd-check rfc822 warn guestgroup FTPgroup greeting full |
2. 新增使用者
首先建立一個特別的使用者群組,您可以將所有使用者放在這群組內。例如 FTPgroup
>> groupadd FTPgroup現在您可以新增一些使用者:
>> adduser -g FTPgroup "username"(如果您選擇不讓這些使用者存取 shell,請看第四段。)
>> passwd "username"確定將 "bin", "etc" 和 "lib" 及當中的檔案由 /home/ftp 或 /var/ftp 複製至使用者的家目錄。可使用cp -R 指令如下:
>> cp -R /var/ftp/pub /home/username在 "pub" 目錄建立一個叫 Download 和 Upload 的目錄,讓使用者上載及下載檔案。
>> mkdir /home/username/pub/download >> mkdir /home/username/pub/upload確定在這些剛建立的目錄上設定權限和擁有權。
>> chown username:FTPgroup upload download >> chmod 500 /home/username/pub/download >> chmod 700 /home/username/pub/upload這樣,使用者在上載目錄便有讀取/寫入權限,而下載目錄就有讀取權限。
3. 讓使用者只能在自己的家目錄
要讓使用者只能在自己的家目錄,您要在 ftpaccess 檔案新增一個 "guestgroup FTPgroup"
。
以您喜歡的文字編輯器開啟 /etc/ftpacces並加入:
guestgroup FTPgroup
4. 不能存取 shell
如果您選擇拒絕讓使用者透過 telnet 或 ssh 存取 shell,您需要做的就是建立一個假的 shell,改名為NoAccess
,並將它放在 /etc/目錄下。
>> touch /etc/NoAccess以編輯器開啟檔案,加上類似以下的東西:
| /etc/NoAccess |
#!/bin/sh # echo " Shell Access denied! " echo " " echo " You don't have a valid login for this server " exit 0 |
儲存檔案並確定可以執行 shell:
>> chmod +x /etc/NoAccess.完成後,修改/etc/shells 檔案,並加入剛建立的 shell。
/ etc/shells 檔案如下:
| /etc/shells |
/bin/bash2 /bin/bash /bin/sh /bin/ash /bin/bsh /bin/tcsh /etc/NoAccess |
如果您手動新增使用者而沒有使用我的 shell-script,就需要修改 /etc/passwd ,並為使用者更改
shell。
記錄會類似下列這樣:
username:x:100:100::/home/username:/bin/bash更改 /bin/bash to /etc/NoAccess 便可。
如果一切完成而您選擇手動新增使用者,可用以下指令將使用者新增至適當的 shell:
>> adduser -g FTPgroup -s /etc/NoAcces "username"為了令使用者的建立自動化,我做了一個細小的 shell-script,可以新增使用者至 FTPgroup ,設定 shell,建立上載和下載目錄,以及從 FTP 目錄複製所需的目錄。
| ftpuseradd_script |
#!/usr/bin/perl
print "Username: ";
chomp ($Name =<STDIN>);
system("adduser -g FTPgroup -s /etc/NoAccess $Name");
system("cp -R /var/ftp/pub /home/$Name");
system("cp -R /var/ftp/bin /home/$Name");
system("cp -R /var/ftp/lib /home/$Name");
system("cp -R /var/ftp/etc /home/$Name");
system("mkdir /home/$Name/pub/upload");
system("mkdir /home/$Name/pub/download");
system("chown $Name: $Name/pub/download");
system("chown $Name: $Name/pub/upload");
system("chmod 500 /home/$Name/pub/download");
system("chmod 700 /home/$Name/pub/upload");
system("passwd $Name");
print "Done! user $Name has been added.\n";
|
您不可以在 windows 下建立文字檔案,然後複製到伺服器,這樣不能正確運作的。
建立一個叫 useradd 的檔案,加入幾行資料,在指令行執行檔案,但首先要設定權限如下:
>> chmod +x useradd >> chown root:root useradd接著:
>> /usr/local/scripts/useradd或您想設定的檔案路徑,開始自動新增使用者。
這就完成了。如果有任何有關 FTP 保安的新聞,我會繼續為您報導。