VSFTP安全加固

這幾天在公司須要作基線安全,一直都沒有經驗,因此在網上找了一些,作來參考學習。
vsftp配置詳解 
這裏是對vsftp配置文件的詳細解釋,主要參考了《RedHat8.0網絡服務》一書中《使用vsftpd架設FTP服務器》一節的內容。
 
聲明:以 下內容基於Smartraining工做室Osmond 編著的《RedHat 8.0 網絡服務》一書中 《使用vsftpd架 設FTP服務器》 一節。爲適應debian有大幅刪改,原做者聯繫方法: osmond68@163.com

1、vsftpd簡介
在穩定性方面:vsftpd能夠在單機(非集羣)上支持4000個以上的併發用戶同時鏈接。據 ftp.redhat.com的數據,vsftpd能夠支持15000個併發用戶。 
除了安全、高速、穩定以外,vsftpd還具備以下的特性:

支持基於IP的虛擬FTP服務器 
支持虛擬用戶 
支持PAM或xinetd / tcp_wrappers的認證方式 
支持兩種運行方式:獨立和Xinetd 
支持每一個虛擬用具備獨立的配置 
支持帶寬限制等
vsftpd的配置文件有三個,分別是:
/etc/vsftpd.conf 
/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服務器。

2、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

3、進一步配置vsftpd
1.容許匿名用戶上傳 
爲了使匿名用戶可以上傳,須要在/etc/vsftpd中激活兩個配置選項,分別是:
anon_upload_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配置文件,將以下兩 行前的#去掉便可 啓用:
#ascii_upload_enable=YES 
#ascii_download_enable=YES
3.設置鏈接服務器後的歡迎信息 
爲了使用戶鏈接服務器後顯示信息,vsftpd提供了兩個選項,分別是:
ftpd_banner 
banner_file
例如:能夠設置以下的ftpd_banner選項的值:
ftpd_banner=Welcome to Smartraining FTP service.
即:用戶鏈接服務器後顯示信息「Welcome to Smartraining FTP service.」。 
也能夠設置以下的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的設置。
4.配置基本的性能和安全選項 
//設置空閒的用戶會話的中斷時間 
例以下面的配置:
idle_session_timeout=600
將在用戶會話空閒10分鐘後被中斷。
//設置空閒的數據鏈接的的中斷時間 
例以下面的配置:
data_connection_timeout=120
將在數據鏈接空閒2分鐘後被中斷。
//設置客戶端空閒時的自動中斷和激活鏈接的時間 
例以下面的配置:
accept_timeout=60 
connect_timeout=60
將使客戶端空閒1分鐘後自動中斷鏈接,並在中斷1分鐘後自動激活鏈接
//設置最大傳輸速率限制 
例以下面的配置:
local_max_rate=50000 
anon_max_rate=30000
將使本地用戶的最大傳輸速率爲50kbytes / sec,匿名用戶的 傳輸速率爲30 kbytes / sec。
//設置客戶端鏈接時的端口範圍 
例以下面的配置:
pasv_min_port=50000 
pasv_max_port=60000
將使客戶端鏈接時的端口範圍在50000和60000之間。這提升了系統的安全性。
//設置chroot 
在 默認配置中,本地用戶能夠切換到自家目錄之外的目錄進行瀏覽,並在權限許可的範圍內進行下載和上傳。這樣的設置對於一個FTP服務器來講是不安全的。若是但願用戶登陸後不能切換到自家目錄之外的目錄,則須要設置chroot選項,涉及以下選項:
chroot_local_user 
chroot_list_enable 
chroot_list_file
有兩種設置chroot的方法: 
(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
這樣,只有/etc/vsftpd.chroot_list文件中指定的用戶才執行chroot。 
注意 :上面所說起的文件/etc/vsftpd.chroot_list和下面將要說起的文件 /etc/vsftpd.user_list的格式要求均爲每一個 用戶名佔一行。
5.配置基於本地用戶的訪問控制 
要配置基於本地用戶的訪問控制,能夠經過修改vsftpd的主配置文件/etc/vsftpd.conf來進行, 有兩種限制方法:
1)限制指定的本地用戶不能訪問,而其餘本地用戶可訪問 
例以下面的設置:
userlist_enable= YES 
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
使文件/etc/vsftpd.user_list中 指定的本地用戶能夠訪問FTP服務器,而其餘本地用戶不能夠訪問FTP服務器。 
注意:對於userlist_enable能夠這樣理解: 
如 果userlist_enable=YES,表示vsftpd將從userlist_file選項給出的文件名中裝載一個含有用戶名的清單。而後再讀取 userlist_deny的值來肯定vsftpd.user_list中的用戶是否容許訪問FTP服 務器。若是用戶不能訪問,將在輸入用戶口令前被拒絕。
6.配置基於主機的訪問控制 
因爲vsftpd有兩種運行方式,即:由inetd啓動和獨立啓動。 這兩種運行方式的主機訪問控制配置是不一樣的,下面介紹的是由xinetd啓動的vsftpd的主機訪問控制的配置。顯然,要配置這種主機訪問控制,須要修 改配置文件/etc/xinetd.d/vsftpd。
1)只容許指定的主機訪問 
在配置文件/etc/xinetd.d/vsftpd的{}中添加以下的配置語句:
only_from <主機表>
例如:only_from 192.168.1.0 
表示只容許192.168.1.0網段內的主機訪問。
2)指定不能訪問的主機 
在配置文件/etc/xinetd.d/vsftpd的{}中添加以下的配置語句:
no_access <主機表>
例如:no_access 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.一、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的{}中添加以下的配置語句:
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服務器。
6)指定鏈接失敗時顯示的信息 
在配置文件/etc/xinetd.d/vsftpd的 {}中添加以下的配置語句:
banner_fail =文件名
例如:banner_fail = /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,因此懶得修改了:(
4、使用vsftpd配置高安全級別的匿名服務器 
高安全級別匿名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.
//接下來查看/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
# service xinetd restart
//配置結束

5、配置基於IP的虛擬FTP服務器
vsftpd支持基於IP的虛擬FTP服務器配置。其主要配置步驟爲:
配置虛擬IP地址 
創建虛擬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

#

//配置結束
 
 
6、配置獨立運行的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 &
 
 
 

7、配置獨立運行的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
 
 
 
 
 
 
8、用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 &
 
 
 

9、配置虛擬用戶的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=YES 
不能激活此類用戶的命令 
local_enable=YES 
guest_enable=YES 
anonymous_enable=YES
爲了配置虛擬用戶的FTP服務器,其主要配置步驟爲:
生成虛擬用戶口令庫文件
配置生成vsftpd的認證文件
創建虛擬用戶所要訪問的目錄並設置相應權限 
創建配置文件
下面以獨立運行的vsftpd爲例進行配置,具體的操做過程 以下: 
//生成虛擬用戶口令庫文件,以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
//用戶也能夠用下面的命令從源代碼分發包中複製此文件 
// 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/
//生成主配置文件 
# 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 
//插入完畢,保存退出。
//下面先關閉原來的服務,然後啓動新的服務 
# 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服務器了。
對不一樣的虛擬用戶進行不一樣權限的配置
對於配置本地組中各用戶訪問FTP服務器的不一樣權限,可將某文件歸屬於但願 具備讀寫(包括列文件目錄、上 傳、下載)權限的用戶,而對該組中其餘用戶則可設置對該文件只具備只讀(包括列文件目錄、下載)權限。 這是藉助在本地文件系 統上分配權限來實現的,可是若要讓兩個用戶同時都具備讀寫權限,則用這種方法就不能實現了。
vsftpd支持對不一樣的虛擬用戶進行不一樣配置的方式。例如,vsftpd能夠實現以下的配置: 
虛擬用戶valid具備瀏覽目錄、上傳和下載的權限 
虛擬用戶dede具備瀏覽目錄、上傳、下載、文件改 名和刪除的權限 
虛擬用戶tom和fred具備瀏覽目錄和下載的權限

下面以簡單的虛擬用戶FTP服務器的配置爲基礎進行說明,具體配置步驟爲:
//首先編輯配置文件/etc/vsftpd.standalone.vu.conf 
//激活對不一樣的虛擬用戶進行不一樣權限配置的配置語句
# vi /etc/vsftpd.standalone.vu.conf
//在文件中添加以下的配置行 
user_config_dir=/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
//下面分別建立虛擬用戶valid和dede的配置文件 
//開放valid和dede的讀寫權限
# cat > anon_world_readable_only=NO 
> 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
相關文章
相關標籤/搜索