建立安全的 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 
或您想設定的檔案路徑,開始自動新增使用者。 這就完成了。
arrow
arrow
    全站熱搜

    Bluelove1968 發表在 痞客邦 留言(0) 人氣()