FTP

本章主要是以vsftp(Very Safe ftp)版本vsftpd-1.1.3-8,來做為我們的server端軟體,故請你先停止(或移除)其他的ftp server軟體如:wuftp、proftp。

安裝vsftp

其實Red Hat 9 主要的 FTP 伺服器軟體就是 vsftpd,當然,我們也可下載最新的版本 http://vsftpd.beasts.org/

設定vsftp

設定檔:vsftpd.conf

可以#locate vsftpd.conf 找出這個檔案

簡易版

# Allow anonymous FTP?
anonymous_enable=NO

write_enable=YES

use_localtime=NO

這要設NO不然時間會用GMT+0
chroot_local_user=YES
限制使用者只能在家目錄中活動

chroot_list_enable=YES
啟用chroot_list_file的文字檔
chroot_list_file=/etc/vsftpd.chroot_list
此文字檔內的user可離開家目錄活動,但仍受各目錄(檔案)權限之限制。相反地,若chroot_local_user=NO,則,此檔內的user不可離開家目錄活動。

local_umask=022
如此上傳的網頁(檔案)才能讓瀏覽器使用者看到


啟動後,由client端,以ftp(ws_ftp_le) 軟體來連線試試看。

較完整版

關於主機的設定值

listen_port=21
 使用的 vsftpd 命令通道的 port number
dirmessage_enable=YES (NO)
 當使用者進入某個目錄時,會顯示該目錄需要注意的內容,顯示的
 檔案預設是 .message ,當然,可以使用底下的設定項目來修訂!
message_file=.message
 當 dirmessage_enable=YES 時,可以設定這個項目來讓 vsftpd
 尋找該檔案來顯示訊息!您也可以設定其他檔名喔!
listen=YES (NO)
 若設定為 YES 表示 vsftpd 是以 standalone 的方式來啟動的!
pasv_enable=YES (NO)
 啟動被動式連線(passive mode),一定要設定為 YES 的啦!
use_localtime=YES (NO) 這要設NO不然時間會用GMT+0
 是否使用主機的時間?!預設使用 GMT 時間(格林威治),會比台灣
 時間晚 8 小時。
write_enable=YES (NO)
 是否允許使用者具有寫入的權限?!這包括刪除與修改等功能喔!
connect_timeout=60
 單位是秒,如果 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 使用的 port number 有關,如果您想要使用
 65400 到 65410 這 11 個 port 來進行被動式資料的連接,可以這樣設定
 pasv_max_port=65410 以及 pasv_min_port=65400
ftpd_banner=歡迎來到我的FTP站
 當使用者無法順利連上我們的主機,例如連線數量已經超過 max_clients
 的設定了,那麼 client 的畫面就會顯示『一些文字說明』的字樣,您可以修改

 
關於實體用戶登入者的設定值


guest_enable=YES (NO)
 若這個值設定為 YES 時,那麼任何非 anonymous 登入的帳號,均會被
 假設成為 guest (訪客) 喔! default=NO
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
 這個是 pam 模組的名稱,我們放置在 /etc/pam.d/vsftpd 即是這個咚咚!

啟動與停止vsftpd

# /etc/rc.d/init.d/vsftpd
用法 : /etc/rc.d/init.d/vsftpd {start|stop|restart|condrestart|status}

Starting and Stopping vsftpd
The vsftpd RPM installs the /etc/rc.d/init.d/vsftpd script, which can be accessed using the /sbin/service command.

To start the server, as root type:

/sbin/service vsftpd start

To stop the server, as root type:

/sbin/service vsftpd stop

The restart option is a shorthand way of stopping and then starting vsftpd. This is the most efficient way to make configuration changes take effect after editing the configuration file for vsftpd.

To restart the server, as root type:

/sbin/service vsftpd restart

The condrestart (conditional restart) option only starts vsftpd if it is currently running. This option is useful for scripts, because it does not start the daemon if it is not running.

To conditionally restart the server, as root type:

/sbin/service vsftpd condrestart

By default, the vsftpd service does not start automatically at boot time. To configure the vsftpd service to start up at boot time, use an initscript utility, such as /sbin/chkconfig, /sbin/ntsysv, or the Services Configuration Tool program. Refer to the chapter titled Controlling Access to Services in Red Hat Enterprise Linux System Administration Guide for more information regarding these tools.

http://www.redhat.com/docs/manuals/enterprise/RHEL-3-Manual/ref-guide/s1-ftp-vsftpd-start.html

開機時自動執行

如想開機時自動執行(啟動), 請執行# chkconfig --level 3 vsftpd on,如此,當以文字模式登入後,就會自動啟動。或是可用#ntsysv來設定。

在更改過vsftpd.conf後,記得要restart,才能發生改變。

FAQ:

Q:vsftpd dead but subsys locked

A:Check /var/lock/subsys for a file named vsftpd and remove it. http://www.egr.msu.edu/mailman-archives/linux-user/2004-February/008359.html