這幾天在公司需要做基線安全,一直都沒有經驗,所以在網上找了一些,做來參考學習。
vsftp配置詳解
這里是對vsftp配置文件的詳細解釋,主要參考了《RedHat8.0網絡服務》一書中《使用vsftpd架設FTP服務器》一節的內容。
這里是對vsftp配置文件的詳細解釋,主要參考了《RedHat8.0網絡服務》一書中《使用vsftpd架設FTP服務器》一節的內容。
聲明:以 下內容基於Smartraining工作室Osmond 編著的《RedHat 8.0 網絡服務》一書中 《使用vsftpd架 設FTP服務器》 一節。為適應debian有大幅刪改,原作者聯系方法:
osmond68@163.com
一、vsftpd簡介
在穩定性方面:vsftpd可以在單機(非集群)上支持4000個以上的並發用戶同時連接。據
ftp.redhat.com的數據,vsftpd可以支持15000個並發用戶。
除了安全、高速、穩定之外,vsftpd還具有如下的特性:
除了安全、高速、穩定之外,vsftpd還具有如下的特性:
支持基於IP的虛擬FTP服務器
支持虛擬用戶
支持PAM或xinetd / tcp_wrappers的認證方式
支持兩種運行方式:獨立和Xinetd
支持每個虛擬用具有獨立的配置
支持帶寬限制等
vsftpd的配置文件有三個,分別是:
/etc/vsftpd.conf
/etc/vsftpd.ftpusers
/etc/vsftpd.user_list
/etc/vsftpd.ftpusers
/etc/vsftpd.user_list
其中,/etc/vsftpd.conf是主配置文件。/etc/vsftpd.ftpusers中指定了哪些用戶不能訪問FTP服務器。 /etc/vsftpd.user_list中指定的用戶默認情況下(即在/etc/vsftpd.conf中設置了userlist_deny= YES)不 能訪問FTP服務 器,當在/etc/vsftpd.conf中設置了userlist_deny=NO時,僅僅允許/etc/vsftpd.user_list中指定的用 戶訪問FTP服務器。
二、vsftpd的默認主配置文件
vsftpd的默認主配置文件的內容如下:
//允許匿名登錄
anonymous_enable=YES
//允許本地用戶登錄
local_enable=YES
//開放本地用戶的寫權限
write_enable=YES
//設置本地用戶的文件生成掩碼為022,默認值為077
local_umask=022
//當切換到目錄時,顯示該目錄下的.message隱含文件的內容
//這是由於默認情況下有message_file=.message的 設置
dirmessage_enable=YES
//激活上傳和下載日志
xferlog_enable=YES
//啟用FTP數據端口的連接請求
connect_from_port_20=YES
//使用標准的ftpd xferlog日志格式
xferlog_std_format=YES
//設置PAM認證服務的配置文件名稱,該文件存放 在/etc/pam.d/目錄下
#pam_service_name=vsftpd
anonymous_enable=YES
//允許本地用戶登錄
local_enable=YES
//開放本地用戶的寫權限
write_enable=YES
//設置本地用戶的文件生成掩碼為022,默認值為077
local_umask=022
//當切換到目錄時,顯示該目錄下的.message隱含文件的內容
//這是由於默認情況下有message_file=.message的 設置
dirmessage_enable=YES
//激活上傳和下載日志
xferlog_enable=YES
//啟用FTP數據端口的連接請求
connect_from_port_20=YES
//使用標准的ftpd xferlog日志格式
xferlog_std_format=YES
//設置PAM認證服務的配置文件名稱,該文件存放 在/etc/pam.d/目錄下
#pam_service_name=vsftpd
三、進一步配置vsftpd
1.允許匿名用戶上傳
為了使匿名用戶能夠上傳,需要在/etc/vsftpd中激活兩個配置選項,分別是:
為了使匿名用戶能夠上傳,需要在/etc/vsftpd中激活兩個配置選項,分別是:
anon_upload_enable=YES
//允許匿名用戶上傳
anon_mkdir_write_enable=YES
//開 啟匿名用戶的寫和創建目錄的權限
若要以上兩項設置生效,同時還要求:
//允許匿名用戶上傳
anon_mkdir_write_enable=YES
//開 啟匿名用戶的寫和創建目錄的權限
若要以上兩項設置生效,同時還要求:
write_enable=YES
//匿名用戶對文件系統的上傳目錄具有寫權限
//匿名用戶對文件系統的上傳目錄具有寫權限
添加如下的配置語句:
anon_world_readable_only=NO
//上面的配置語句用於放開匿名用戶的瀏覽權限
//上面的配置語句用於放開匿名用戶的瀏覽權限
創建匿名上傳目錄:
mkdir /var/ftp/incoming
修改上傳目錄的權限:
chmod o+w /var/ftp/incoming/
重新啟動vsftpd.
2.啟用ASCII傳輸方式
默認情況下,vsftpd為了安全,禁止了ASCII傳輸方式。雖然在ftp客戶軟件中可以使用asc命 令,但是傳輸文件時仍然使用二進制傳輸方式。可以分別啟用上傳和下載的ASCII傳輸方式,方法是編輯/etc/vsftpd配置文件,將如下兩 行前的#去掉即可 啟用:
默認情況下,vsftpd為了安全,禁止了ASCII傳輸方式。雖然在ftp客戶軟件中可以使用asc命 令,但是傳輸文件時仍然使用二進制傳輸方式。可以分別啟用上傳和下載的ASCII傳輸方式,方法是編輯/etc/vsftpd配置文件,將如下兩 行前的#去掉即可 啟用:
#ascii_upload_enable=YES
#ascii_download_enable=YES
#ascii_download_enable=YES
3.設置連接服務器后的歡迎信息
為了使用戶連接服務器后顯示信息,vsftpd提供了兩個選項,分別是:
為了使用戶連接服務器后顯示信息,vsftpd提供了兩個選項,分別是:
ftpd_banner
banner_file
banner_file
例如:可以設置如下的ftpd_banner選項的值:
ftpd_banner=Welcome to Smartraining FTP service.
即:用戶連接服務器后顯示信息“Welcome to Smartraining FTP service.”。
也可以設置如下的banner_file選項的值:
也可以設置如下的banner_file選項的值:
banner_file=/var/vsftpd_banner_file
即:用戶連接服務器后顯示文件/var/vsftpd_banner_file中的信息。
注意:(1)如果設置了ftpd_banner的值,將覆蓋vsftpd默認的服務器連接后的信息。
(2)如果ftpd_banner和banner_file同時設置,那么banner_file將覆蓋ftpd_banner的設置。
注意:(1)如果設置了ftpd_banner的值,將覆蓋vsftpd默認的服務器連接后的信息。
(2)如果ftpd_banner和banner_file同時設置,那么banner_file將覆蓋ftpd_banner的設置。
4.配置基本的性能和安全選項
//設置空閑的用戶會話的中斷時間
例如下面的配置:
//設置空閑的用戶會話的中斷時間
例如下面的配置:
idle_session_timeout=600
將在用戶會話空閑10分鍾后被中斷。
//設置空閑的數據連接的的中斷時間
例如下面的配置:
例如下面的配置:
data_connection_timeout=120
將在數據連接空閑2分鍾后被中斷。
//設置客戶端空閑時的自動中斷和激活連接的時間
例如下面的配置:
例如下面的配置:
accept_timeout=60
connect_timeout=60
connect_timeout=60
將使客戶端空閑1分鍾后自動中斷連接,並在中斷1分鍾后自動激活連接
//設置最大傳輸速率限制
例如下面的配置:
例如下面的配置:
local_max_rate=50000
anon_max_rate=30000
anon_max_rate=30000
將使本地用戶的最大傳輸速率為50kbytes / sec,匿名用戶的 傳輸速率為30 kbytes / sec。
//設置客戶端連接時的端口范圍
例如下面的配置:
例如下面的配置:
pasv_min_port=50000
pasv_max_port=60000
pasv_max_port=60000
將使客戶端連接時的端口范圍在50000和60000之間。這提高了系統的安全性。
//設置chroot
在 默認配置中,本地用戶可以切換到自家目錄以外的目錄進行瀏覽,並在權限許可的范圍內進行下載和上傳。這樣的設置對於一個FTP服務器來說是不安全的。如果希望用戶登錄后不能切換到自家目錄以外的目錄,則需要設置chroot選項,涉及如下選項:
在 默認配置中,本地用戶可以切換到自家目錄以外的目錄進行瀏覽,並在權限許可的范圍內進行下載和上傳。這樣的設置對於一個FTP服務器來說是不安全的。如果希望用戶登錄后不能切換到自家目錄以外的目錄,則需要設置chroot選項,涉及如下選項:
chroot_local_user
chroot_list_enable
chroot_list_file
chroot_list_enable
chroot_list_file
有兩種設置chroot的方法:
(1)設置對所有的本地用戶執行chroot(即活動范圍限制在自家目錄)只要將chroot_local_user的值設 為YES即可, 即:
(1)設置對所有的本地用戶執行chroot(即活動范圍限制在自家目錄)只要將chroot_local_user的值設 為YES即可, 即:
chroot_local_user=YES
(2)設置指定的用戶執行chroot需要如下的設置:
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file= /etc/vsftpd.chroot_list
chroot_list_enable=YES
chroot_list_file= /etc/vsftpd.chroot_list
這樣,只有/etc/vsftpd.chroot_list文件中指定的用戶才執行chroot。
注意 :上面所提及的文件/etc/vsftpd.chroot_list和下面將要提及的文件 /etc/vsftpd.user_list的格式要求均為每個 用戶名占一行。
注意 :上面所提及的文件/etc/vsftpd.chroot_list和下面將要提及的文件 /etc/vsftpd.user_list的格式要求均為每個 用戶名占一行。
5.配置基於本地用戶的訪問控制
要配置基於本地用戶的訪問控制,可以通過修改vsftpd的主配置文件/etc/vsftpd.conf來進行, 有兩種限制方法:
要配置基於本地用戶的訪問控制,可以通過修改vsftpd的主配置文件/etc/vsftpd.conf來進行, 有兩種限制方法:
1)限制指定的本地用戶不能訪問,而其他本地用戶可訪問
例如下面的設置:
例如下面的設置:
userlist_enable= YES
userlist_deny=YES
userlist_file= /etc/vsftpd.user_list
userlist_deny=YES
userlist_file= /etc/vsftpd.user_list
使文件/etc/vsftpd.user_list中 指定的本地用戶不能訪問FTP服務器,而其他本地用戶可訪問FTP服務器。
2)限制指定的本地用戶可以訪問,而其他本地用戶不可訪問
例如下面的設置:
例如下面的設置:
userlist_enable= YES
userlist_deny= NO
userlist_file= /etc/vsftpd.user_list
userlist_deny= NO
userlist_file= /etc/vsftpd.user_list
使文件/etc/vsftpd.user_list中 指定的本地用戶可以訪問FTP服務器,而其他本地用戶不可以訪問FTP服務器。
注意:對於userlist_enable可以這樣理解:
如 果userlist_enable=YES,表示vsftpd將從userlist_file選項給出的文件名中裝載一個含有用戶名的清單。然后再讀取 userlist_deny的值來確定vsftpd.user_list中的用戶是否允許訪問FTP服 務器。如果用戶不能訪問,將在輸入用戶口令前被拒絕。
注意:對於userlist_enable可以這樣理解:
如 果userlist_enable=YES,表示vsftpd將從userlist_file選項給出的文件名中裝載一個含有用戶名的清單。然后再讀取 userlist_deny的值來確定vsftpd.user_list中的用戶是否允許訪問FTP服 務器。如果用戶不能訪問,將在輸入用戶口令前被拒絕。
6.配置基於主機的訪問控制
由於vsftpd有兩種運行方式,即:由inetd啟動和獨立啟動。 這兩種運行方式的主機訪問控制配置是不同的,下面介紹的是由xinetd啟動的vsftpd的主機訪問控制的配置。顯然,要配置這種主機訪問控制,需要修 改配置文件/etc/xinetd.d/vsftpd。
由於vsftpd有兩種運行方式,即:由inetd啟動和獨立啟動。 這兩種運行方式的主機訪問控制配置是不同的,下面介紹的是由xinetd啟動的vsftpd的主機訪問控制的配置。顯然,要配置這種主機訪問控制,需要修 改配置文件/etc/xinetd.d/vsftpd。
1)只允許指定的主機訪問
在配置文件/etc/xinetd.d/vsftpd的{}中添加如下的配置語句:
在配置文件/etc/xinetd.d/vsftpd的{}中添加如下的配置語句:
only_from <主機表>
例如:only_from 192.168.1.0
表示只允許192.168.1.0網段內的主機訪問。
表示只允許192.168.1.0網段內的主機訪問。
2)指定不能訪問的主機
在配置文件/etc/xinetd.d/vsftpd的{}中添加如下的配置語句:
在配置文件/etc/xinetd.d/vsftpd的{}中添加如下的配置語句:
no_access <主機表>
例如:no_access 192.168.1.0
表示只有192.168.1.0網段內的主機不能訪問。
表示只有192.168.1.0網段內的主機不能訪問。
關於主機表的書寫形式,見下表:
訪問控制表時主機表的書寫語法
選項值 含義
Hostname 可解析的主機名
IP Address 十進制表示的IP地址
Net_name 在/etc/networks中定義的網絡名
x.x.x.0 x.x.0.0 x.0.0.0 0.0.0.0 0作為通配符看待。如:191.72.61.0匹配從191.72.61.0到191.72.61.255的所有IP地址。0.0.0.0表示匹配所有的IP地址
x.x.x.{a,b,.} x.x.{a,b,.} x.{a,b,.} 指定主機表。如:191.72.61.{1,3,123}表示包含地址191.72.61.1、191.72.61.2和191.72.61.123
IPAddress/netmask 定義要匹配的網絡或子網。如:172.19.16/20匹配從172.19.16.0到172.19.31.255
訪問控制表時主機表的書寫語法
選項值 含義
Hostname 可解析的主機名
IP Address 十進制表示的IP地址
Net_name 在/etc/networks中定義的網絡名
x.x.x.0 x.x.0.0 x.0.0.0 0.0.0.0 0作為通配符看待。如:191.72.61.0匹配從191.72.61.0到191.72.61.255的所有IP地址。0.0.0.0表示匹配所有的IP地址
x.x.x.{a,b,.} x.x.{a,b,.} x.{a,b,.} 指定主機表。如:191.72.61.{1,3,123}表示包含地址191.72.61.1、191.72.61.2和191.72.61.123
IPAddress/netmask 定義要匹配的網絡或子網。如:172.19.16/20匹配從172.19.16.0到172.19.31.255
3)配置每個客戶機的最大連結數
//在置文件/etc/xinetd.d/vsftpd的{}中添加如下的配置語句:
per_source = 數值
例如:per_source = 5表示每個客戶機的最大連接數為5。
4)配置服務器總的並發連接數
在配置文件/etc/xinetd.d/vsftpd的{}中添加如下的配置語句:
在配置文件/etc/xinetd.d/vsftpd的{}中添加如下的配置語句:
instances = 數值
例如:instances = 200 表示FTP服務器總共支持的最高連接數為200。
5)配置訪問時間限制
在配置文件/etc/xinetd.d/vsftpd的{}中添加如下的配置語句:
access_time = hour:min-hour:min
例如:access_time = 18:00-23:59 表示只有在下午6點到午夜0點之前才能訪問此FTP服務器;
又如:access_time = 8:30-11:30 13:00-18:00 表示只有在上午8點半到11點半和下午1點到下午6點才能訪問此FTP服務器。
又如:access_time = 8:30-11:30 13:00-18:00 表示只有在上午8點半到11點半和下午1點到下午6點才能訪問此FTP服務器。
6)指定連接失敗時顯示的信息
在配置文件/etc/xinetd.d/vsftpd的 {}中添加如下的配置語句:
在配置文件/etc/xinetd.d/vsftpd的 {}中添加如下的配置語句:
banner_fail =文件名
例如:banner_fail = /etc/vsftpd.busy_banner 表示當連接失敗時顯示文件/etc/vsftpd.busy_banner中的內容。
可以用下面的命令生成文件/etc/vsftpd.busy_banner:
可以用下面的命令生成文件/etc/vsftpd.busy_banner:
echo "421 Server busy, please try later."> /etc/vsftpd.busy_banner
下面內容是基於xinetd的,因為debian用的是inetd,所以懶得修改了:(
四、使用vsftpd配置高安全級別的匿名服務器
高安全級別匿名FTP服務器的配置要求:
高安全級別匿名FTP服務器的配置要求:
僅僅允許匿名用戶訪問
不允許本地用戶訪問
關閉所有寫權限
不允許匿名用戶上傳
設置客戶端連接時的端口范圍
設置匿名用戶的最大傳輸速率限制
設置空閑的數據連接的中斷時間
設置客戶端空閑時的自動中斷和激活連接的時間
配置每個主機的最大連接數
配置總的並發連接數
配置禁止訪問的主機
配置安全日志
不允許本地用戶訪問
關閉所有寫權限
不允許匿名用戶上傳
設置客戶端連接時的端口范圍
設置匿名用戶的最大傳輸速率限制
設置空閑的數據連接的中斷時間
設置客戶端空閑時的自動中斷和激活連接的時間
配置每個主機的最大連接數
配置總的並發連接數
配置禁止訪問的主機
配置安全日志
vsftpd推薦使用這種近乎於偏執的安全 配置,如果用戶只想架設匿名FTP下載服務器,出於安全性的考慮,請參考使用這種謹慎配置。
這種安全匿名服務器的配置,可以從vsftpd的源代碼樹中獲得,具體操作步驟如下:
進入vsftp源代碼樹的EXAMPLE/INTERNET_SITE目錄復制默認配置文件:
# cd /usr/local/src/vsftpd-1.1.3/EXAMPLE/INTERNET_SITE
# cp vsftpd.conf /etc
# cp vsftpd.xinetd /etc/xinetd.d/vsftpd
//修改主配置文件/etc/vsftpd.conf,添加一 個連接后的信息
# cat >>/etc/vsftpd.conf < > ftpd_banner=This FTP server is anonymous only.
> !
//顯示主配置文件的內容如下:
# cat /etc/vsftpd.conf
# Access rights
anonymous_enable=YES
local_enable=NO
write_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
# Security
anon_world_readable_only=YES
connect_from_port_20=YES
hide_ids=YES
pasv_min_port=50000
pasv_max_port=60000
# Features
xferlog_enable=YES
ls_recurse_enable=NO
ascii_download_enable=NO
async_abor_enable=YES
# Performance
one_process_model=YES
idle_session_timeout=120
data_connection_timeout=300
accept_timeout=60
connect_timeout=60
anon_max_rate=50000
ftpd_banner=This FTP server is anonymous only.
# cd /usr/local/src/vsftpd-1.1.3/EXAMPLE/INTERNET_SITE
# cp vsftpd.conf /etc
# cp vsftpd.xinetd /etc/xinetd.d/vsftpd
//修改主配置文件/etc/vsftpd.conf,添加一 個連接后的信息
# cat >>/etc/vsftpd.conf < > ftpd_banner=This FTP server is anonymous only.
> !
//顯示主配置文件的內容如下:
# cat /etc/vsftpd.conf
# Access rights
anonymous_enable=YES
local_enable=NO
write_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
# Security
anon_world_readable_only=YES
connect_from_port_20=YES
hide_ids=YES
pasv_min_port=50000
pasv_max_port=60000
# Features
xferlog_enable=YES
ls_recurse_enable=NO
ascii_download_enable=NO
async_abor_enable=YES
# Performance
one_process_model=YES
idle_session_timeout=120
data_connection_timeout=300
accept_timeout=60
connect_timeout=60
anon_max_rate=50000
ftpd_banner=This FTP server is anonymous only.
//接下來查看/etc/xinetd.d/vsftpd
# cat /etc/xinetd.d/vsftpd
# cat /etc/xinetd.d/vsftpd
service ftp
{
disable = no
socket_type = stream
wait = no
user = root
server = /usr/local/sbin/vsftpd
per_source = 5
instances = 200
no_access = 192.168.1.3
banner_fail = /etc/vsftpd.busy_banner
log_on_success += PID HOST DURATION
log_on_failure += HOST
}
//重新啟動xinetd
{
disable = no
socket_type = stream
wait = no
user = root
server = /usr/local/sbin/vsftpd
per_source = 5
instances = 200
no_access = 192.168.1.3
banner_fail = /etc/vsftpd.busy_banner
log_on_success += PID HOST DURATION
log_on_failure += HOST
}
//重新啟動xinetd
# service xinetd restart
//配置結束
五、配置基於IP的虛擬FTP服務器
vsftpd支持基於IP的虛擬FTP服務器配置。其主要配置步驟為:
配置虛擬IP地址
建立虛擬FTP的服務器目錄並設置適當的權限
建立虛擬FTP的服務器的xinetd配置文件
建立虛擬FTP的服務器的主配置文件
建立虛擬FTP的服務器目錄並設置適當的權限
建立虛擬FTP的服務器的xinetd配置文件
建立虛擬FTP的服務器的主配置文件
注意:虛擬FTP的服務器要有單獨的xinetd配置文件和單獨的主配置文件, 這兩個文件不能與原配置文件重名。
具體操作過程如下:
1.查看本機現有的IP地址
# ifconfig |grep -1 eth0
eth0 Link encap:Ethernet HWaddr 00:50:56:C7:22:DF
inet addr:192.168.1.222 Bcast:192.168.1.255 Mask:255.255.255.0
//可以看出本機的第一個網絡接口eth0的IP為192.168.1.222
2.配置一個虛擬網絡接口eth0:1
# ifconfig eth0:1 192.168.1.234 up
# ifconfig |grep -1 eth0:1
eth0:1 Link encap:Ethernet HWaddr 00:50:56:C7:22:DF
inet addr:192.168.1.234 Bcast:192.168.1.255 Mask:255.255.255.0
//可以看出本機的虛擬網絡接口eth0:1的IP為192.168.1.234
3.建立虛擬FTP的服務器目錄
# mkdir -p /var/ftp2/pub
//確保目錄具有如下的權限
# ll -d /var/ftp2
drwxr-xr-x 3 root root 4096 3月12 03:00 /var/ftp2
# ll -d /var/ftp2/pub
drwxr-xr-x 2 root root 4096 3月12 03:00 /var/ftp2/pub
4.創建此虛擬服務器的匿名用戶所映射的本地用戶ftp2
# useradd -d /var/ftp2 -M ftp2
5.更改現有的配置文件/etc/xinetd.d/vsftpd
# vi /etc/xinetd.d/vsftpd
// 在此文件的{}中添加如下的配置語句:
// bind = 192.168.1.222
// 將原FTP服務綁定到eth0接口,之后保存退出vi
6.生成並修改新的虛擬FTP服務器的配置文件/etc/xinetd.d/vsftpd2
# cp /etc/xinetd.d/vsftpd /etc/xinetd.d/vsftpd2
//更改新的配置文件/etc/xinetd.d/vsftpd2
# vi /etc/xinetd.d/vsftpd2
//在此文件的{}中添加如下的配置語句:
bind = 192.168.1.234
//將虛擬FTP服務綁定到eth0:1接口
//另外添加如下的配置語句:
server_args = /etc/vsftpd_site2.conf
//使vsftpd讀取虛擬FTP服務器的主配置文件,之后保存退出vi
7.生成並修改虛擬FTP服務器的主配置文件/etc/vsftpd_site2.conf
# cp /etc/vsftpd.conf /etc/vsftpd_site2.conf
//修改新的主配置文件
# vi /etc/vsftpd_site2.conf
//將如下的配置語句行:
ftpd_banner=This FTP server is anonymous only.
//修改為:
ftpd_banner=This is the alternative FTP site.
//添加如下的配置語句:
ftp_username=ftp2
//使此虛擬服務器的匿名用戶映射到本地用戶ftp2
//這樣匿名用戶登錄后才能進入本地用戶ftp2的/var/ftp2目錄
//修改后,保存退出vi
#
8.重新啟動xinetd
# service xinetd restart
#
//配置結束
六、配置獨立運行的vsftpd
顯然,這種啟動方式將不再需要/etc/xinetd.d下面的配置文件。要配置獨立運行的vsftpd很簡單,只需要在前面的
主配置文件的基礎上添加如下的配置即可:
設置listen=YES
指明vsftpd以獨立運行方式啟動。
為了實現訪問控制,需要添加如下的配置項:
設置max_clients=200
指明服務器總的並發連接數
設置max_per_ip=4
指明每個客戶機的最大連接數。
具體操作步驟如下:
//復制一個新的主配置文件
# cp /etc/vsftpd.conf /etc/vsftpd.standalone.conf
//編輯新的配置文件/etc/vsftpd.standalone.conf
# vi /etc/vsftpd.standalone.conf
//在文件開始處插入下面的行
listen=YES
max_clients=200
max_per_ip=4
//並將下面的配置語句
ftpd_banner=This FTP server is anonymous only.
//改為:
ftpd_banner=This FTP server is anonymous only, and vsftpd in "standalone" mode.
//(注意:要寫在一行里)
//退出vi
//將由xinetd啟動的配置停用
# vi /etc/xinetd.d/vsftpd
//將disable = no
//設為disable = yes
//保存后退出vi
# vi /etc/xinetd.d/vsftpd2
//將disable = no
//設為disable = yes
//保存后退出vi
//重新啟動xinetd
# service xinetd restart
//啟動獨立運行的vsftpd守護進程
# /usr/local/sbin/vsftpd /etc/vsftpd.standalone.conf &
七、配置獨立運行的vsftpd在非標准端口下提供服務
為了配置獨立運行的vsftpd在非標准端口下提供服務需要添加listen_port配置語句。具體操作步驟如下:
//修改獨立運行的主配置文件,添加listen_port配置語句:
# echo listen_port=10021>> /etc/vsftpd.standalone.conf
//重新啟動vsftpd守護進程
# killall vsftpd
# /usr/local/sbin/vsftpd /etc/vsftpd.standalone.conf &
獨立啟動和xinetd啟動的vsftpd服務器配置和啟動的比較
獨立啟動
xinetd啟動
所需的配置文件
主配置文件
主配置文件
xinetd配置文件
配置
listen
listen_address
bind
listen_port
max_per_ip
per_source
max_clients
instances
only_from和no_access
access_time
server_args
啟動
將配置文件作為參數運行
啟動xinetd
八、用vsftpd配置獨立運行的虛擬FTP服務器
為了配置獨立運行的虛擬FTP服務器需要使用listen_address配置語句。以上面的配置為基礎進行下面的配置,具
體步驟如下:
//修改原獨立運 行的服務器配置文件
# vi /etc/vsftpd.standalone.conf
//添加listen_address=192.168.1.222的配置行
//將原FTP服務綁定到eth0接口。之后用:wq退出vi
//由xinetd運行的虛擬服務器的配置文件創 建一個新的配置文件
# cp /etc/vsftpd_site2.conf /etc/vsftpd.standalone2.conf
//修改新的配置文件
# vi /etc/vsftpd.standalone2.conf
//在文件開始處插入下面的行
listen=YES
listen_address=192.168.1.234 將虛擬服務器綁定到eth0:1接口
max_clients=200
max_per_ip=4
//並將下面的配置語句
ftpd_banner=This is the alternative FTP site.
//改為:
ftpd_banner=This is the alternative FTP site, and vsftpd in "standalone" mode.
//用:wq退出vi
//讓原FTP服務器重新讀取配置文件
/usr/local/sbin/vsftpd /etc/vsftpd.standalone.conf
# kill -HUP `pidof vsftpd`
//啟動新的虛擬FTP服務器
# /usr/local/sbin/vsftpd /etc/vsftpd.standalone2.conf &
九、配置虛擬用戶的FTP服務器
該部分講述虛擬用戶(virtual users)的FTP服務器的配置。虛擬用戶只能訪問為其 提供的FTP服 務,而不能像本地
的實用戶那樣登錄系統訪問系統的其他資源。若要某用戶對FTP服務器站內具有寫權限但不允許訪問系統的其他
資源,則該用戶應該使用虛擬用戶才能提高系統的安全性。
傳統的FTP服務器采用如下的方法實現虛擬用戶:
在本地建立普通用戶賬號並設置密碼
將其登錄shell設為不可登錄
由passwd/shadow口令系統進行認證
vsftpd的虛擬用戶 采用了不與系統賬戶口令文件合二為一的方法,也就是說,為了認證這些虛擬用戶vsftpd使用單
獨的口令庫文件(pam_userdb),由可插拔認證模塊(PAM)進行認證。使用這種方式更加安全,並且配置更靈
活。
比較vsftpd中的三類用戶:
vsftp中有三類用戶,即:本地用戶、虛擬用戶和匿名用 戶。下面將這三類用戶進行比較,見下表。
比較vsftpd中的三類用戶
本地用戶
虛擬用戶
匿名用戶
用戶名
本地用戶名
虛擬用戶口令庫中指定的用戶名
Anonymous或ftp
登錄用戶名
本地用戶名
虛擬用戶口令庫中所有用戶名
Anonymous或ftp
用戶口令
本地用戶的口令
虛擬用戶口令庫中指定的口令
Email地址
口令的認證方式
由基於passwd/shadow的口令系統認證
DB口令庫由PAM進行認證
由vsftpd認證
登錄映射的本地用戶名
本地用戶名
guest_username所指定的本地 用戶,默認為空
ftp_username所指定的本地用 戶,默認為ftp
登錄后進入
的目錄
本地用戶的
自家目錄
guest_username所指定的本地 用戶的自家目錄
ftp_username所指定的本地用戶 的自家目錄,默認為/var/ftp
對登錄后的目錄是否可瀏覽
可以
anon_world_readable_only=NO時可以
anon_world_readable_only=NO時可以
對登錄后的目錄是否可上傳
write_enable=YES時可以
write_enable=YES,同時anon_upload_enable=YES時可以
write_enable=YES,同時anon_upload_enable=YES時可以
對登錄后的目錄是否可創建目錄
write_enable=YES時可以
write_enable=YES,同時anon_mkdir_write_enable=YES時可以
write_enable=YES,同時anon_mkdir_write_enable=YES時可以
對登錄后的目錄是否可改名和刪除
write_enable=YES時可以
write_enable=YES,同時anon_other_write_enable=YES時可以
write_enable=YES,同anon_other_write_enable=
YES時可以
是否有用戶
自家目錄
有
無
無
是否能切換到登錄目錄以外的目錄
chroot_local_user=NO時 能,其值為YES時不能
chroot_local_user=NO時 能,其值為YES時不能
不能,即設置chroot_local_user=YES
不能激活此類用戶的命令
local_enable=YES
guest_enable=YES
anonymous_enable=YES
不能激活此類用戶的命令
local_enable=YES
guest_enable=YES
anonymous_enable=YES
為了配置虛擬用戶的FTP服務器,其主要配置步驟為:
生成虛擬用戶口令庫文件
配置生成vsftpd的認證文件
建立虛擬用戶所要訪問的目錄並設置相應權限
建立配置文件
生成虛擬用戶口令庫文件
配置生成vsftpd的認證文件
建立虛擬用戶所要訪問的目錄並設置相應權限
建立配置文件
下面以獨立運行的vsftpd為例進行配置,具體的操作過程 如下:
//生成虛擬用戶口令庫文件,以mysql數據庫為例:
//修改口令庫 文件的權限
# chmod 600 /etc/vsftpd_login.db
//生成虛擬用戶口令庫文件,以mysql數據庫為例:
//修改口令庫 文件的權限
# chmod 600 /etc/vsftpd_login.db
//編輯生成虛擬用戶所 需的PAM配置文件:
# vi /etc/pam.d/ftp
//插入如下兩行
auth required /lib/security/pam_userdb.so db=/etc/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd_login
//保存后退出vi
# vi /etc/pam.d/ftp
//插入如下兩行
auth required /lib/security/pam_userdb.so db=/etc/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd_login
//保存后退出vi
//用戶也可以用下面的命令從源代碼分發包中復制此文件
// cd /usr/local/src/vsftpd-1.1.3/EXAMPLE/
// cp VIRTUAL_USERS/vsftpd.pam /etc/pam.d/ftp
//建立虛擬用戶所要訪問的目錄並設置僅virtual用戶訪問的權限
// cd /usr/local/src/vsftpd-1.1.3/EXAMPLE/
// cp VIRTUAL_USERS/vsftpd.pam /etc/pam.d/ftp
//建立虛擬用戶所要訪問的目錄並設置僅virtual用戶訪問的權限
# useradd -d /home/ftpsite virtual
# chmod 700 /home/ftpsite/
# chmod 700 /home/ftpsite/
//生成主配置文件
# vi /etc/vsftpd.standalone.vu.conf
//在此文件中插入下面的配置語句
listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
chroot_local_user=YES
guest_enable=YES 啟用虛擬用戶
guest_username=virtual 將虛擬用戶映射為本地virtual用戶
# vi /etc/vsftpd.standalone.vu.conf
//在此文件中插入下面的配置語句
listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
chroot_local_user=YES
guest_enable=YES 啟用虛擬用戶
guest_username=virtual 將虛擬用戶映射為本地virtual用戶
//這樣虛擬用戶登錄后才能進入本地用戶virtual的目錄/home/ftpsite/
pasv_min_port=30000
pasv_max_port=30999
ftpd_banner=This FTP server is virtual user only.
pam_service_name=ftp 指定PAM配置文件為 ftp.vu
//插入完畢,保存退出。
pasv_min_port=30000
pasv_max_port=30999
ftpd_banner=This FTP server is virtual user only.
pam_service_name=ftp 指定PAM配置文件為 ftp.vu
//插入完畢,保存退出。
//下面先關閉原來的服務,而后啟動新的服務
# killall vsftpd
# /usr/local/sbin/vsftpd /etc/vsftpd.standalone.vu.conf &
//配置結束
# killall vsftpd
# /usr/local/sbin/vsftpd /etc/vsftpd.standalone.vu.conf &
//配置結束
注意:配置文件中anon_world_readable_only的默認值為YES。這樣的設置是最安全的,是建議的配置,即虛擬用戶不能瀏覽目錄中的內容。若要虛擬用戶口令庫中的用戶都能看到登錄目錄的內容,應該在配置文件
/etc/vsftpd.standalone.vu.conf中添加配置語句anon_world_readable_only=NO
配置好后,新的口令庫中的所有用戶就都可以登錄此FTP服務器了。
/etc/vsftpd.standalone.vu.conf中添加配置語句anon_world_readable_only=NO
配置好后,新的口令庫中的所有用戶就都可以登錄此FTP服務器了。
對不同的虛擬用戶進行不同權限的配置
對於配置本地組中各用戶訪問FTP服務器的不同權限,可將某文件歸屬於希望 具有讀寫(包括列文件目錄、上 傳、下載)權限的用戶,而對該組中其他用戶則可設置對該文件只具有只讀(包括列文件目錄、下載)權限。 這是借助在本地文件系 統上分配權限來實現的,但是若要讓兩個用戶同時都具有讀寫權限,則用這種方法就不能實現了。
vsftpd支持對不同的虛擬用戶進行不同配置的方式。例如,vsftpd可以實現如下的配置:
虛擬用戶valid具有瀏覽目錄、上傳和下載的權限
虛擬用戶dede具有瀏覽目錄、上傳、下載、文件改 名和刪除的權限
虛擬用戶tom和fred具有瀏覽目錄和下載的權限
虛擬用戶valid具有瀏覽目錄、上傳和下載的權限
虛擬用戶dede具有瀏覽目錄、上傳、下載、文件改 名和刪除的權限
虛擬用戶tom和fred具有瀏覽目錄和下載的權限
下面以簡單的虛擬用戶FTP服務器的配置為基礎進行說明,具體配置步驟為:
//首先編輯配置文件/etc/vsftpd.standalone.vu.conf
//激活對不同的虛擬用戶進行不同權限配置的配置語句
//激活對不同的虛擬用戶進行不同權限配置的配置語句
# vi /etc/vsftpd.standalone.vu.conf
//在文件中添加如下的配置行
user_config_dir=/etc/vsftpd_user_conf
user_config_dir=/etc/vsftpd_user_conf
//指定不同虛擬用戶配置文件的存放路徑
//添加后保存退出vi
//接下來創建此目錄
# mkdir /etc/vsftpd_user_conf
//添加后保存退出vi
//接下來創建此目錄
# mkdir /etc/vsftpd_user_conf
//下面分別創建虛擬用戶tom和fred的配置文件
//開放tom和fred的讀權限
#echo "anon_world_readable_only=NO">/etc/vsftpd_user_conf/tom
#echo "anon_world_readable_only=NO">/etc/vsftpd_user_conf/fred
#echo "anon_world_readable_only=NO">/etc/vsftpd_user_conf/tom
#echo "anon_world_readable_only=NO">/etc/vsftpd_user_conf/fred
//下面分別創建虛擬用戶valid和dede的配置文件
//開放valid和dede的讀寫權限
//開放valid和dede的讀寫權限
# cat > anon_world_readable_only=NO
> write_enable=YES
> anon_upload_enable=YES
> !
> write_enable=YES
> anon_upload_enable=YES
> !
# cp /etc/vsftpd_user_conf/valid /etc/vsftpd_user_conf/dede
# echo “anon_other_write_enable=YES”>>/etc/vsftpd_user_conf/dede
//經過以上的設置虛擬用戶valid能瀏覽、下載和上傳
//而虛擬用戶dede除此之外還具有文件改名和刪除文件 的權限
//下面讓守護進程vsftpd重新讀取配置文件/etc/vsftpd.standalone.vu.conf
/usr/local/sbin/vsftpd /etc/vsftpd.standalone.vu.conf
# kill -HUP `pidof vsftpd`
#
//配置結束,測試略。
重點:當一個虛擬用戶登錄FTP服務器時,vsftpd的守護進程首先查看主配置文件 的權限配置,然后再用此用戶
單獨的配置文件中的配置覆蓋主配置文件中的配置。vsftpd的這種配置機制,類似於Apache配置中的
httpd.conf和.htaccess。只不過前者是針對不同虛擬用戶的,而后者是針對不同目錄的。因此在對不同虛
擬用戶進行配置時要注意:
(1)在主配置文件中設置最低的權限,這些設 置對虛擬用戶口令庫中的所有用戶均生效;
(2)分別在不同的虛擬用戶的配置文件中開放此虛擬用戶應該具有的權限。
注意:上面講述的虛擬用戶FTP服務器的配置是基於獨立運行的vsftpd守護進程講解的。也可以配置為基於
xinetd啟動的FTP服務器,同時也可以將虛擬用戶的FTP服務器配置為基於IP的虛擬FTP服務器
http://blog.chinaunix.net/uid-9288192-id-80169.html