天天看點

簡易的vsftpd伺服器的架設

①vsftpd 是以一般身份啟動服務,是以對于 Linux 系統的使用權限較低,對于Linux 系統的危害就相對的減低了。此外, vsftpd 亦利用 chroot() 這個函式進行改換根目錄的動作,使得系統工具不會被vsftpd 這支服務所誤用;

      ②任何需要具有較高執行權限的 vsftpd 指令均以一支特殊的上層程式( parent process ) 所控制 ,該上層程式享有的較高執行權限功能已經被限制的相當的低,并以不影響Linux 本身的系統為準;

③所有來自 clients 端,想要使用這支上層程式所提供的較高執行權限之vsftpd 指令的需求,均被視為『不可信任的要求』來處理,必需要經過相當程度的身份确認後,方可利用該上層程式的功能。例如chown(), Login 的要求等等動作;

④此外,上面提到的上層程式中,依然使用 chroot() 的功能來限制使用者的執行權限。

ubuntu系統如下 sudo apt-get install vsftpd

 centos系統如下 yum -y install vsftpd

  這裡我就安裝RPM包了,其它的安裝方法就不提了,,不懂的可以查閱相關資料

首先檢視是否安裝了vsftpd,如果安裝,可以直接使用

如果沒安裝,使用RPM包進行安裝

<a href="http://blog.51cto.com/attachment/201209/203229634.png" target="_blank"></a>

 建立ftp使用者及其主目錄,若本來就存在ftp使用者,則不需要建立 我的已經建好了,具體建立方法如下:

建立vsftp需要的特殊目錄:

Mkdir  -p  /usr/share/empty

如果想要移除vsftp 時,可以這樣做

rm /usr/sbin/vsftpd   或是  rm /usr/local/sbin/vsftpd

rm /usr/local/man/man5/vsftpd.conf.5

rm /usr/local/man/man8/vsftpd.8

rm /etc/xinetd.d/vsftpd

rm /etc/vsftpd.conf  或是rm /etc/vsftpd/vsftpd.conf

因為剛剛安裝隻有安裝這幾個檔案檔案而已,是以,vsftpd 真的是挺安全的說!

啟動和關閉vsftpd

啟動vsftp 可以采用3中方式:inetd、xinetd和standalone(獨立)工作模式,由于目前使用的xinetd擴充了inetd,它比inetd更加高效和實用,是以主要以xinetd以及standalone兩種啟動方式

編輯vsftpd啟動配置檔案 将disable  = yes 該為 disable = no

<a href="http://blog.51cto.com/attachment/201209/203603361.png" target="_blank"></a>

<a href="http://blog.51cto.com/attachment/201209/203640412.png" target="_blank"></a>

确認xinetd.d沒有問題  重新開機vsftpd

還沒有配置/etc/vsftpd/vsftpd.conf  是以無法登陸還

Vsftpd的包結構 (企業版的RedHat 不同的版本可能有所不通)

/etc/vsftpd/vsftpd.conf     主配置檔案

/etc/vsftpd/banner_emails         該檔案與匿名登入有關

/usr/sbin/vsftpd/            這是vsftpd的主要執行檔案

/etc/vsftpd/user_list        檔案中指定的使用者是否可以通路ftp伺服器由vsftpd.conf檔案中userlist_deny的取值決定的

/etc/vsftpd/ftpusers       設定不允許登陸的使用者

/etc/pam.d/vsftpd     利用pam子產品來進行身份确認的動作   看/etc/pam.d/vsftpd的内容即可知道是否使用/etc/vsftpd.ftpusers或/etc/vsftpd/ftpusers

<a href="http://blog.51cto.com/attachment/201209/203713131.png" target="_blank"></a>

帶紅色下劃線的就是限制使用者無法使用vsftpd的主配置檔案

Vsftpd.conf設定說明

connect_from_port_20=YES(NO)

該設定項是在啟動主動連接配接的端口20

 listen_port=21

使用的 vsftpd指令通道的 port number 設定,如果您想要使用非正規的 ftpport,在這個設定項目修改。

dirmessage_enable=YES(NO)

當使用者進入某個目錄時,會顯示該目錄需要注意的内容,顯示的檔案是.message ,當然也可以使用下面的設定項目來修該。

message_file=.message

當 dirmessage_enable=YES時,可以設定這個項目來讓 vsftpd尋找該檔案來顯示資訊,也可以設定其他檔案名

listen=YES(NO)

若設定為YES 表示 vsftpd 是以 standalone 的方式來啟動的!

pasv_enable=YES(NO)

啟動被動式連接配接(passivemode),一定要設定為 YES !

use_localtime=YES(NO)

是否使用主機的時間?!預設使用GMT 時間(格林威治),會比中原標準時間晚8小時,一般來說,建議設定為 YES 吧!

write_enable=YES(NO)

是否允許使用者具有寫入的權限?!這包括删除與修改等功能喔!

connect_timeout=60

機關是秒(s),如果client 嘗試連接配接我們的 vsftpd 指令通道超過 60 秒,則不等待,強制斷線咯。

accept_timeout=60

當使用者以被動式PASV 來進行資料傳輸時,如果主機啟用 passive port并等待 client超過60 秒,那麼就給他強制斷線!可以修改數值 60 。

data_connection_timeout=300

如果 client與 Server 間的資料傳送在 300 秒内都無法傳送成功,那 Client的聯機就會被我們的 vsftpd 強制切斷!

idle_session_timeout=300

如果使用者在300 秒内都沒有任何指令動作,強制離線!

max_clients=0

如果 vsftpd是以 stand alone 方式啟動的,那麼這個設定項目可以設定同一時間,最多有多少client 可以同時連上 vsftpd 哩!?

max_per_ip=0

與上面 max_clients類似,這裡是同一個 IP 同一時間可允許多少聯機?

pasv_max_port=0

pasv_min_port=0

上面兩個是與passive mode 使用的端口号有關,如果您想要使用65400 到65410 這 11 個 port 來進行被動式資料的連接配接,可以這樣設定pasv_max_port=65410以及 pasv_min_port=65400

ftpd_banner=一些文字說明

當使用者無法順利連上我們的主機,例如聯機數量已經超過max_clients

的設定了,那麼client 的畫面就會顯示『一些文字說明』的字樣,你可以根據需要修改

guest_enable=YES(NO)

若這個值設定為YES 時,那麼任何非 anonymous 登入的賬号,均會被假設成為guest (通路者)。

local_enable=YES(NO)

這個設定值必須要為YES 時,在 /etc/passwd 内的賬号才能以實體使用者的方式登入我們的vsftpd 主機!

local_max_rate=0

實體使用者的傳輸速度限制,機關為bytes/second, 0 為不限制。

chroot_local_user=YES(NO)

将使用者限制在自己的家目錄之内(chroot)!這個設定在vsftpd當中預設是NO,因為有底下兩個設定項!是以不需要啟動他!

chroot_list_enable=YES(NO)

是否啟用将某些實體使用者限制在他們的家目錄内?!預設是NO ,不過,如果您想要讓某些使用者無法離開他們的家目錄時,可以考慮将這個設定為YES ,并且規劃下個設定值

chroot_list_file=/etc/vsftpd.chroot_list

如果 chroot_list_enable=YES那麼就可以設定這個項目了!他裡面可以規定

那一個實體使用者會被限制在自己的家目錄内而無法離開!(chroot) 一行一個賬号即可!

userlist_deny=YES(NO)

若此設定值為YES 時,則當使用者賬号被列入到某個檔案時,在該檔案内的使用者将無法登入vsftpd 伺服器!該檔案檔案名與下列設定項目有關。

userlist_file=/etc/vsftpd/user_list

若上面 userlist_deny=YES時,在這個檔案内的賬号都無法使用vsftpd !

關于匿名者登入的設定值

anonymous_enable=YES(NO)

設定為允許anonymous 登入我們的 vsftpd 主機!預設是 YES ,下面的所有相關設定都需要将這個設定為anonymous_enable=YES 之後才會生效!

anon_world_readable_only=YES(NO)

僅允許 anonymous具有下載下傳可讀檔案的權限,預設是 YES。

anon_other_write_enable=YES(NO)

是否允許anonymous 具有寫入的權限?預設是 NO!如果要設定為 YES,那麼開放給anonymous 寫入的目錄亦需要調整權限,讓 vsftpd 的 PID擁有者可以寫入才行!

anon_mkdir_write_enable=YES(NO)

是否讓anonymous 具有建立目錄的權限?預設值是 NO!如果要設定為 YES,那麼 anony_other_write_enable必須設定為 YES !

anon_upload_enable=YES(NO)

是否讓anonymous 具有上傳資料的功能,預設是 NO,如果要設定為 YES ,則 anon_other_write_enable=YES必須設定。

deny_email_enable=YES(NO)

拒絕某些特殊的email address ,不讓那些 anonymous 登入!如果以 anonymous登入主機時,就會要求輸入您的email address ,如果你很讨厭某些 email address ,就可以使用這個設定來将他取消登入的權限!需與下個設定項目配合:

banned_email_file=/etc/vsftpd.banned_emails

如果 deny_email_enable=YES時,可以利用這個設定項目來規定那個email address不可登入我們的 vsftpd 喔!在上面設定的檔案内,一行輸入一個email address 即可!

no_anon_password=YES(NO)

當設定為YES 時,表示 anonymous 将會略過密碼檢驗步驟,而直接進入vsftpd 伺服器内喔!是以一般預設都是 NO 的!

anon_max_rate=0

這個設定值後面接的數值機關為bytes/秒 ,限制 anonymous 的傳輸速度,如果是 0則不限制(由最大頻寬所限制),如果您想讓 anonymous 僅有30 KB/s 的速度,可以設定『anon_max_rate=30000』

anon_umask=077

限制 anonymous的權限!如果是 077 則 anonymous 傳送過來的檔案權限會是-rw------- !

關于系統安全的設定值:

ascii_download_enable=YES(NO)

如果設定為YES ,那麼 client 就可以使用 ASCII 格式下載下傳檔案。一般來說,由于啟動了這個設定項目可能會導緻DoS 的攻擊,是以預設是NO。

ascii_upload_enable=YES(NO)

與上一個設定類似的,隻是這個設定針對上傳而言!預設是NO。

async_abor_enable=YES(NO)

如果您的FTP client 會下達 "async ABOR" 這個指令時,這個設定才需要啟用一般來說,由于這個設定并不安全,是以通常都是将他取消的!

check_shell=YES(NO)

如果您想讓擁有任何特殊的shell 的使用者(在 /etc/passwd 的 shell 字段)可以使用vsftpd 的話,這個設定可以設定為 NO !

one_process_model=YES(NO)

這個設定項目比較危險一點~當設定為YES 時,表示每個建立的聯機都會擁有一支process 在負責,可以增加 vsftpd 的效能。不過,除非您的系統比較安全,而且硬體配備比較高,否則容易耗盡系統資源!一般建議設定為NO 的。

tcp_wrappers=YES(NO)

我們都習慣支援TCP Wrappers !是以設定為 YES!

xferlog_enable=YES(NO)

當設定為YES 時,使用者上傳與下載下傳檔案都會被紀錄起來。記錄檔案與下一個設定項目有關:

xferlog_file=/var/log/vsftpd.log

這是日志的檔案名如果上一個xferlog_enable=YES 的話,這裡就可以設定。

xferlog_std_format=YES(NO)

是否設定為wu ftp 相同的日志檔案格式。預設為 NO ,因為日志檔案比較容易讀!不過,如果您有使用wu ftp 登入檔案的分析軟體,這裡才需要設定為 YES

nopriv_user=nobody

vsftpd預設以 nobody 作為此服務執行者的權限。因為 nobody 的權限相當的低,是以即使被入侵,入侵者僅能取得nobody 的權限!

pam_service_name=vsftpd

上面的這些都是很常見的vsftpd的設定參數,還有很多沒有列出來,你可以使用man 5 vsftpd.conf 查閱 。。。不過,以上這些參數基本上已經夠我們設定了。

本文轉自 abc16810 51CTO部落格,原文連結:http://blog.51cto.com/abc16810/993028

繼續閱讀