使用文件傳輸協議(FTP)來通過網絡在計算機之間傳輸文件是很普遍的一種方法。幾乎在所有的平臺上面都有FTP 的客戶端和服務端的軟件,因此用FTP來傳送文件也是很方便的一個方法。 有很多配置FTP服務器的不同方法。其中一種是把FTP配置成只對系統中的用戶開放的私有服務器,這也是FTP的默認配置。一個私有的FTP服務器只運行系統中的用戶訪問,而且可以對用戶進行訪問控制,這樣可以給予或拒絕特定用戶的訪問權限。 另一種是把FTP服務器配置成匿名服務器。匿名FTP服務器允許任何人(不管有沒有帳號)訪問服務器并傳輸文件。因為可能存在潛在的安全問題,必須小心配置使得只允許訪問系統中特定的目錄。 在這一節里,我們把FTP配置成“chrooted”的方式,這種配置運行用戶訪問,例如:Web站點的目錄,但是不允許他們訪問更高一層的目錄。 注意事項 下面所有的命令都是Unix兼容的命令。 源路徑都為“/var/tmp”(當然在實際情況中也可以用其它路徑)。 安裝在RedHat Linux 6.1下測試通過。 要用“root”用戶進行安裝。 wu-ftp的版本號是2.6.0。 編譯和安裝 把軟件包(tar.gz)解壓縮: [root@deep]# cp wu-ftpd-version.tar.gz /var/tmp 編譯和優化 轉到wu-ftpd的新目錄下,運行下面的命令: 編輯“ftpcount.c”文件(vi +241 src/ftpcount.c),改變下面這一行: #if defined (LINUX) 改為: #if defined (LINUX_BUT_NOT_REDHAT_6_0) 編輯“pathnames.h.in”文件(vi +42 src/pathnames.h.in),改變下面這一行: #define _PATH_EXECPATH "/bin/ftp-exec" 改為: #define _PATH_EXECPATH "/usr/bin/ftp-exec" 我們把“ftp-exec”從“/bin”目錄改到“/usr/bin”目錄下。 先設置編譯器的編譯參數: CC="egcs" 這些編譯參數告訴編譯器如何編譯wu-ftpd: 不要用失敗的DNS查詢 加入對定額(QUOTA)的支持(如果OS支持) 加入對PAM的支持 不允許作為單獨的daemon運行 刪除過多的空行 不支持虛擬服務器 禁止PID加鎖睡眠消息(用于繁忙的站點) 被動連接的時候不要求用同樣的IP 不允許匿名ftp訪問 使用內部的“ls”命令(試驗性的) 內部的“ls”命令顯示UID而不顯示用戶名(為了提高速度) 用下面的命令編譯和安裝軟件: make 上面的“make”和“make install”可以配置軟件以保證系統中有編譯所需要的函數庫,然后把所有的源文件都編譯成可執行的二進制文件,最后把二進制文件和配置文件安裝到相應的目錄里。 “install –m”安裝“xferstats”程序,用于統計傳輸了多少文件?!皌ouch”命令為xferstats在“/var/log”目錄下創建日志文件。 “chomod”把“xferlog”的權限改為只對超級用戶“root”可讀和可寫。接著,我們為“in.ftpd”二進制文件創建符號鏈接。最后,用 “strip”命令減小所有二進制文件的大小以提高wu-ftpd的性能。 清除不必要的文件 “rm”命令刪除所有編譯和安裝wu-ftpd所需要的源程序,并且把wu-ftpd軟件的壓縮包刪除掉。 為FTP站點的用戶建立沒有shell的帳號 第一步 用下面的命令在“/etc/passwd”文件中創建用戶。對于每個允許訪問ftp服務器的新用戶都要重復這個步驟。 [root@deep]# mkdir /home/ftp Changing password for user ftpadmin 第二步 編輯“/etc/shells”文件并加入一個空shell,如:null。這個假的shell可以限制用戶對ftp服務器的訪問。 [root@deep]# vi /etc/shells /bin/bash 第三步 現在編輯“/etc/passwd”文件,手工加上“/./”把“/home/ftp”目錄和“/ftpadmin”目錄分開,用戶 “ftpadmin”會自動轉到(chdir)“/ftpadming”目錄下。在“passwd”文件中每添加一個ftp用戶都要重復這個步驟。 編輯“passwd”文件(vi /etc/passwd),把下面這一行改為: ftpadmin:x:502:502::/home/ftp/ftpadmin/:/dev/null 改為: ftpadmin:x:502:502::/home/ftp/./ftpadmin/:/dev/null
[root@deep]# cd /var/tmp
[root@deep]# tar xzpf wu-ftpd-version.tar.gz
CFLAGS="-O9 -funroll-loops -ffast-math -malign-double -mcpu=pentiumpro -march=pentiumpro -fomit-frame-
pointer -fno-exceptions"
./configure
--prefix=/usr
--sysconfdir=/etc
--localstatedir=/var
--disable-dnsretry
--enable-quota
--enable-pam
--disable-daemon
--disable-newlines
--disable-virtual
--disable-plsm
--disable-pasvip
--disable-anonymous
--enable-ls
--enable-numericuid
make install
install -m 755 util/xferstats /usr/sbin
touch /var/log/xferlog
chmod 600 /var/log/xferlog
cd /usr/sbin
ln -sf in.ftpd /usr/sbin/wu.ftpd
ln -sf in.ftpd /usr/sbin/in.wuftpd
strip /usr/bin/ftpcount
strip /usr/bin/ftpwho
strip /usr/sbin/in.ftpd
strip /usr/sbin/ftpshut
strip /usr/sbin/ckconfig
strip /usr/sbin/ftprestart
[root@deep]# cd /var/tmp
[root@deep]# rm -rf wu-ftpd-version/ wu-ftpd-version.tar.gz
首先,創建一個新的用戶,這個用戶被允許連接到ftp服務器上。因為要有“chroot”的環境,這個帳號不同于正常的用戶帳號,不能受訪問限制?!癱hroot”使用戶產生這樣的感覺好像自己已經在文件系統的最頂層了。
[root@deep]# useradd -d /home/ftp/ftpadmin/ -s /dev/null ftpadmin > /dev/null 2>&1
[root@deep]# passwd ftpadmin
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated suclearcase/" target="_blank" >ccessfully
/bin/sh
/bin/ash
/bin/bsh
/bin/tcsh
/bin/csh
/dev/null ? This is our added no existent shell 共2頁: 1 [2] 下一頁