用Linux構建高效FTP服務器(3)

 爲了測試不同連機用戶使用的是不同進程,可以使用ps -ef指令,顯示如下所示:

# ps -ef|grep ftp

root 12972 1356 0 13:44 pts/1 00:00:00 ftp 127.0.0.1 2121

nobody 12973 12908 0 13:44 ? 00:00:00 [vsftpd]

ylg 12975 12973 0 13:44 ? 00:00:00 [vsftpd]

user1 13013 13011 0 13:46 ? 00:00:00 [vsftpd]

root 13041 13015 0 13:47 pts/4 00:00:00 grep ftp

到現在爲止,一個基本可以滿足普通使用需求的FTP服務器就已經架設完成。

在實際應用中,有時爲了增加安全性,會將FTP服務器置於防火牆之後。如本文開頭所述,被動傳輸模式適合於帶有防火牆的情況。下面就來創建一個防火牆後的FTP服務器,該服務器FTP端口爲2121,數據傳輸端口爲2020。

執行以下兩行指令,只允許2121和2020端口打開,其餘端口關閉:

#iptables -A INPUT -p tcp -m multiport --dport 2121,2020 -j ACCEPT

#iptables -A INPUT -p tcp -j REJECT --reject-with tcp-reset

修改/etc/vsftpd/vsftpd.conf文件,在文本最後添加以下兩行:

listen_port=2121

ftp_data_port=2020

重新啓動vsftpd:

#service vsftpd restart

有時希望直接在/etc/hosts.allow中定義允許或拒絕某一源地址,可以通過以下配置來實現。先確保/etc/vsftpd/vsftpd.conf中tcp_wrappers=YES,Red Hat 9.0中,這是默認值。重新啓動vsftpd

#service vsftpd restart

假設提供168.192.2.1和210.31.8.1到210.31.8.254的連接,則可對/etc/hosts.allow進行如下設定:

vsftpd : 168.192.2.1 210.31.8. : allow

ALL : ALL : DENY

配置虛擬用戶FTP

上面配置的FTP服務器有一個特點,就是FTP服務器的用戶本身也是系統用戶。這顯然是一個安全隱患,因爲這些用戶不僅能夠訪問FTP,也能夠訪問其它的系統資源。如何解決這個問題呢?答案就是創建一個虛擬用戶的FTP服務器。虛擬用戶的特點是隻能訪問服務器爲其提供的FTP服務,而不能訪問系統的其它資源。所以,如果想讓用戶對FTP服務器站內具有寫權限,但又不允許訪問系統其它資源,可以使用虛擬用戶來提高系統的安全性。

在VSFTP中,認證這些虛擬用戶使用的是單獨的口令庫文件(pam_userdb),由可插入認證模塊(PAM)認證。使用這種方式更加安全,並且配置更加靈活。

下面介紹配置過程。

1.生成虛擬用戶口令庫文件。爲了建立此口令庫文件,先要生成一個文本文件。該文件的格式如下,單數行爲用戶名,偶數行爲口令:

#vi account.txt

ylg

1234

zhanghong

4321

gou

5678

2.生成口令庫文件,並修改其權限:

#db_load -T -t hash -f 。/account.txt /etc/vsftpd/account.db

#chmod 600 /etc/vsftpd/account.db

3.新建一個虛擬用戶的PAM文件。加上如下兩行內容:

#vi /etc/pam.d/vsftp.vu

auth required /lib/security/pam_userdb.so db=/etc/vsftpd/account

account required /lib/security/pam_userdb.so db=/etc/vsftpd/account

4.建立虛擬用戶,設置該用戶所要訪問的目錄,並設置虛擬用戶訪問的權限:

#useradd -d /ftpsite virtual_user

#chmod 700 /ftpsite

經過該步驟的設置,/ftpsite就是virtual_user用戶的主目錄,該用戶也是/ftpsite目錄的擁有者。除root用戶之外,只有該用戶具有對該目錄的讀、寫和執行的權限。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章