[Freebsd] VSFTP的安裝和配置

URL Link //n.sfs.tw/10680

2017-01-24 15:48:38 By 張○○

此文稍舊但新板本的Freebsd安裝方法也類似

Freebsd 安裝完畢會有一個 inetd 的服務,內建有一個 FTP,如果想換成 vsftp 以對FTP進行更多權限的控管,就來設定吧

系統

FreeBSD 7

一、用ports安裝 VSFTP

# cd /usr/ports/ftp/vsftpd
# make
# make install

二、設定 rc.conf

讓 vsftp 以 inetd 的方式運作而不以 standalone 的方式,對系統管理上可能較容易,所以此篇著重以 inetd 方式運作,若為 standalone 則必須先關閉 inetd 中的 ftp。

# vi rc.conf

加入

# VSFTP
inetd_enable="YES"

三、修改 /etc/inetd

把原來的 ftpd 關閉(加#)並加入vsftpd:

ftp stream tcp nowait root /usr/local/libexec/vsftpd vsftpd
#ftp stream tcp nowait root /usr/libexec/ftpd ftpd -l -l -D

四、修改 vsftpd.conf 的設置

編輯vsftpd.conf,預設ports 安裝會在 /usr/local/etc/vsftpd.conf

我的設置如下,相關的意義請參看下方的備註:

anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
ftpd_banner=This is n.sfs.tw FTP service.

chroot_list_enable=YES
chroot_local_user=YES
chroot_list_file=/etc/vsftpd/chroot_list

listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES

這裡面有一個 chroot_list 裡面把你同意登入ftp的帳號寫下來,一行一個,沒有寫下來的無法登入,例如:

axer
user1
user2

五、啟動或關閉服務

啟動服務
關閉現有 inetd
# killall –HUP inetd  
或是
# /etc/rc.d/inetd stop

重新啟動inted服務,讓配置生效
# /etc/rc.d/inetd start

重啟 inetd
# /etc/rc.d/inetd restart

參考資料

[1] 原文參考 http://xiaoc.spaces.live.com/blog/cns!1E24BC99ADB172C2!165.entry 編修

[2] FTP 的訊息代碼請參考此篇

備註

vsftpd.conf的設置參數,設定方法為「參數=值」;

相關參數說明如下(紅色為常用者):

4.1 個別使用者設定

chroot_list_enable
用法:YES/NO
如果啟動這項功能,則所有的本機使用者登入均可進到根目錄之外的數據夾,除了列在/etc/vsftpd.chroot_list 之中的使用者之外。預設值為NO。

userlist_enable
用法:YES/NO
若是啟動此功能,則會讀取/etc/vsftpd.user_list 當中的使用者名稱。此項功能可以在詢問密碼前就出現失敗訊息,而不需要檢驗密碼的程序。預設值為關閉。

userlist_deny
用法:YES/NO
這個選項只有在userlist_enable 啟動時才會被檢驗。如果將這個選項設為YES,則在/etc/vsftpd.user_list 中的使用者將無法登入 若設為NO , 則只有在/etc/vsftpd.user_list 中的使用者才能登入。而且此項功能可以在詢問密碼前就出現錯誤訊息,而不需要檢驗密碼的程序。

user_config_dir
定義個別使用者設定文件所在的目錄,例如定義user_config_dir=/etc/vsftpd/userconf,且主機上有使用者 test1,test2,那我們可以在user_config_dir 的目錄新增文件名為test1 以及test2。若是test1 登入,則會讀取user_config_dir 下的test1 這個檔案內的設定。預設值為無。

4.2 歡迎語設定

dirmessage_enable
如果啟動這個選項,使用者第一次進入一個目錄時,會檢查該目錄下是否有.message這個檔案,若是有,則會出現此檔案的內容,通常這個檔案會放置歡迎話語,或是對該目錄的說明。預設值為開啟。
banner_file
當使用者登入時,會顯示此設定所在的檔案內容,通常為歡迎話語或是說明。預設值為無。
ftpd_banner
這邊可定義歡迎話語的字符串,相較於banner_file 是檔案的形式,而ftpd_banner 是字串的格式。預設為無。

4.3 特殊安全設定

chroot_local_user
如果設定為YES,那麼所有的本機的使用者都可以切換到根目錄以外的數據夾。預設值為NO。
hide_ids
如果啟動這項功能,所有檔案的擁有者與群組都為ftp,也就是使用者登入使用ls -all之類的指令,所看到的檔案擁有者跟群組均為ftp。預設值為關閉。
ls_recurse_enable
若是啟動此功能,則允許登入者使用ls -R 這個指令。預設值為NO。
write_enable
用法:YES/NO
這個選項可以控制FTP 的指令是否允許更改file system,譬如STOR、DELE、RNFR、RNTO、MKD、RMD、APPE 以及SITE。預設是關閉。
setproctitle_enable
用法:YES/NO
啟動這項功能,vsftpd 會將所有聯機的狀況已不同的process 呈現出來,換句話說,使用ps -ef 這類的指令就可以看到連線的狀態。預設值為關閉。
tcp_wrappers
用法:YES/NO
如果啟動,則會將vsftpd 與tcp wrapper 結合,也就是可以在/etc/hosts.allow 與/etc/hosts.deny 中定義可聯機或是拒絕的來源地址。
pam_service_name
這邊定義PAM 所使用的名稱,預設為vsftpd。
secure_chroot_dir
這個選項必須指定一個空的數據夾且任何登入者都不能有寫入的權限,當vsftpd 不需要file system 的權限時,就會將使用者限制在此數據夾中。預設值為/usr/share/empty

4.4 紀錄文件設定

xferlog_enable
用法:YES/NO
如果啟動,上傳與下載的信息將被完整紀錄在底下xferlog_file 所定義的檔案中。預設為開啟。
xferlog_file
這個選項可設定紀錄文件所在的位置,預設值為/var/log/vsftpd.log。
xferlog_std_format
如果啟動,則紀錄文件將會寫為xferlog 的標準格式,如同wu-ftpd 一般。預設值為關閉。

4.5 逾時設定

accept_timeout
接受建立聯機的逾時設定,單位為秒。預設值為60。
connect_timeout
PORT 方式的數據聯機的逾時設定,單位為秒。預設值為60。
data_connection_timeout
建立數據聯機的逾時設定。預設值為300 秒。
idle_session_timeout
發呆的逾時設定,若是超出這時間沒有數據的傳送或是指令的輸入,則會強迫斷線,單位為秒。預設值為300。

4.6 速率限制

anon_max_rate
匿名登入所能使用的最大傳輸速度,單位為每秒多少bytes,0 表示不限速度。預設值為0。
local_max_rate
本機使用者所能使用的最大傳輸速度,單位為每秒多少bytes,0 表示不限速度。預設值為0。

4.7 新增檔案權限設定

anon_umask
匿名登入者新增檔案時的umask 數值。預設值為077。
file_open_mode
上傳檔案的權限,與chmod 所使用的數值相同。預設值為0666。
local_umask
本機登入者新增檔案時的umask 數值。預設值為077。

4.8 port 設定

connect_from_port_20
用法:YES/NO
若設為YES,則強迫ftp-data 的數據傳送使用port 20。預設值為YES。
ftp_data_port
設定ftp 數據聯機所使用的port。預設值為20。
listen_port
FTP server 所使用的port。預設值為21。
pasv_max_port
建立資料聯機所可以使用port 範圍的上界,0 表示任意。預設值為0。
pasv_min_port
建立資料聯機所可以使用port 範圍的下界,0 表示任意。預設值為0。

4.9 其它

anon_root
使用匿名登入時,所登入的目錄。預設值為無。
local_enable
用法:YES/NO
啟動此功能則允許本機使用者登入。預設值為YES。
local_root
本機使用者登入時,將被更換到定義的目錄下。預設值為無。
text_userdb_names
用法:YES/NO
當使用者登入後使用ls -al 之類的指令查詢該檔案的管理權時,預設會出現擁有者的UID,而不是該檔案擁有者的名稱。若是希望出現擁有者的名稱,則將此功能開啟。預設值為NO。
pasv_enable
若是設為NO,則不允許使用PASV 的模式建立數據的聯機。預設值為開啟。

4.10 更換檔案所有權

chown_uploads
用法:YES/NO
若是啟動,所有匿名上傳數據的擁有者將被更換為chown_username 當中所設定的使用者。這樣的選項對於安全及管理,是很有用的。預設值為NO。
chown_username
這裡可以定義當匿名登入者上傳檔案時,該檔案的擁有者將被置換的使用者名稱。預設值為root。

4.11 guest 設定

guest_enable
用法:YES/NO
若是啟動這項功能,所有的非匿名登入者都視為guest。預設值為關閉。
guest_username
這裡將定義guest 的使用者名稱。預設值為ftp。

4.12 anonymous 設定

anonymous_enable
用法:YES/NO
管控使否允許匿名登入,YES 為允許匿名登入,NO 為不允許。預設值為YES。
no_anon_password
若是啟動這項功能,則使用匿名登入時,不會詢問密碼。預設值為NO。
anon_mkdir_write_enable
用法:YES/NO
如果設為YES,匿名登入者會被允許新增目錄,當然,匿名使用者必須要有對上層目錄的寫入權。預設值為NO。
anon_other_write_enable
用法:YES/NO
如果設為YES,匿名登入者會被允許更多於上傳與建立目錄之外的權限,譬如刪除或是更名。預設值為NO。
anon_upload_enable
用法:YES/NO
如果設為YES,匿名登入者會被允許上傳目錄的權限,當然,匿名使用者必須要有對上層目錄的寫入權。預設值為NO。
anon_world_readable_only
用法:YES/NO
如果設為YES,匿名登入者會被允許下載可閱讀的檔案。預設值為YES。
ftp_username
定義匿名登入的使用者名稱。預設值為ftp,同時也要建立這名使用者
deny_email_enable
若是啟動這項功能,則必須提供一個檔案/etc/vsftpd.banner_emails,內容為email address。若是使用匿名登入,則會要求輸入email address,若輸入的email address 在此檔案內,則不允許聯機。預設值為NO。

4.13 Standalone 選項

listen
用法:YES/NO
若是啟動,則vsftpd 將會以獨立運作的方式執行,若是vsftpd 獨立執行,如RedHat9的預設值,則必須啟動 若是vsftpd 包含在xinetd 之中,則必須關閉此功能,如RedHat8。在RedHat9 的預設值為YES。
listen_address
若是vsftpd 使用standalone 的模式,可使用這個參數定義使用哪個IP address 提供這項服務,若是主機上只有定義一個IP address,則此選項不需使用,若是有多個IPaddress,可定義在哪個IP address 上提供ftp 服務。若是不設定,則所有的IP address均會提供此服務。預設值為無。
max_clients
若是vsftpd 使用standalone 的模式,可使用這個參數定義最大的總聯機數。超過這個數目將會拒絕聯機,0 表示不限。預設值為0。
max_per_ip
若是vsftpd 使用standalone 的模式,可使用這個參數定義每個ip address 所可以聯機的數目。超過這個數目將會拒絕聯機,0 表示不限。預設值為0。


原文 2009-11-17 09:44:17