vsFTP安裝配置
阿新 • • 發佈:2019-01-09
OS:CentOS7.2
ftp:vsFTP 3.0.2
首先安裝vsftp
rpm -ivh vsftpd-3.0.2-10.el7.x86_64.rpm
安裝完畢後建立ftp使用者: useradd -d /var/www -g ftp -s /sbin/nologin ftpuser 說明: -s /sbin/nologin 是讓其不能登陸系統 -d 是指定使用者目錄為/var/www ,這裡可以替換成任何你需要的目錄。 -g ftp 把使用者加入到ftp組中(vsftp已建立) ftpuser是ftp使用者名稱,在配置時把這個ftpuser換成你的ftp使用者名稱。 執行該命令後,如果出現這樣的錯誤提示: useradd: warning: the home directory already exists. Not copying any file from skel directory into it. 這說明使用者的目錄已經存在(/var/www,這個可以是任何你設定的目錄),不可再新建此目錄,並非新增使用者失敗,可以忽略。 特別提醒:用useradd建立的使用者,如果後面不加–s /sbin/nologin引數,建立的使用者為普通系統使用者,有系統登陸centos伺服器的許可權,在虛擬主機環境下,這非常危險。所以要在useradd命令後面加上引數–s /sbin/nologin,為centos 伺服器虛擬主機新增不可以登入系統的ftp專用賬號(虛擬賬戶) 設定密碼 # passwd ftpuser 提示:重複輸入2次 修改/var/www目錄屬性:(或任何自己定義的目錄) # chown -R ftpuser /var/www 遞迴把所有目錄及檔案的擁有者設為新新增的ftp使用者 # chmod -R 755 /var/www 遞迴地設定擁護者全部許可權,其他使用者只有讀取和執行許可權 這樣,如果網站執行時需要有寫入許可權,可以直接通過ftp的使用者名稱來修改配置檔案/etc/vsftpd/vsftpd.conf 設定帳戶只能訪問自己的目錄,也就是上面建使用者的時候設定的目錄–d /var/www Chroot_local_user=yes 關閉SELINUX:
vi /etc/selinux/config
#SELINUX=enforcing 這一行註釋掉
#SELINUXTYPE=targeted 這一行註釋掉
SELINUX=disabled 增加這一行
setenforce 0 使配置立即生效
如果不關閉SELINUX,登陸ftp可能會卡頓,登陸比較慢。 注意別忘了關閉防火牆。否則會出現ftp: connect: 沒有到主機的路由這樣的提示。 下面介紹下vsftp: 一、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伺服器。 二、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
三、進一步配置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網段內的主機不能訪問。
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,所以懶得修改了。
四、使用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
//配置結束
五、配置基於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
//配置結束
六、配置獨立執行的vsftpd
顯然,這種啟動方式將不再需要/etc/xinetd.d下面的配置檔案。要配置獨立執行的vsftpd很簡單,只需要在前面的
主配置檔案的基礎上新增如下的配置即可:
設定listen=YES
指明vsftpd以獨立執行方式啟動。
為了實現訪問控制,需要新增如下的配置項:
設定max_clients=200
指明伺服器總的併發連線數
設定max_per_ip=4
指明每個客戶機的最大連線數。
八、用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)進行認證。使用這種方式更加安全,並且配置更靈活。
Vsftp的PASV mode和Port模式配置檔案的設定
FTP模式與資料埠
FTP 分為兩類,PORT FTP和PASV FTP,PORT FTP是一般形式的FTP。這兩種FTP在建立控制連線時操作是一樣的,都是由客戶端首先和FTP伺服器的控制埠(預設值為21)建立控制連結,並通過 此連結進行傳輸操作指令。它們的區別在於使用資料傳輸埠(ftp- data)的方式。PORT FTP由FTP伺服器指定資料傳輸所使用的埠,預設值為20。PASV FTP由FTP客戶端決定資料傳輸的埠。 PASV FTP這種做法,主要是考慮到存在防火牆的環境下,由客戶端與伺服器進行溝通(客戶端向伺服器發出資料傳輸請求中包含了資料傳輸埠),決定兩者之間的數 據傳輸埠更為方便一些。
port_enable=YES|NO
如果你要在資料連線時取消PORT模式時,設此選項為NO。預設值為YES。
connetc_from_port_20=YES|NO
控制以PORT模式進行資料傳輸時是否使用20埠(ftp-data)。YES使用,NO不使用。預設值為NO,但RHL自帶的vsftpd.conf檔案中此引數設為YES。
ftp_data_port=port number
設定ftp資料傳輸埠(ftp-data)值。預設值為20。此引數用於PORT FTP模式。
port_promiscuous=YES|NO
預設值為NO。為YES時,取消PORT安全檢查。該檢查確保外出的資料只能連線到客戶端上。小心開啟此選項。
pasv_enable=YES|NO
YES,允許資料傳輸時使用PASV模式。NO,不允許使用PASV模式。預設值為YES。
pasv_min_port=port number
pasv_max_port=port number
設定在PASV模式下,建立資料傳輸所可以使用port範圍的下界和上界,0 表示任意。預設值為0。把埠範圍設在比較高的一段範圍內,比如50000-60000,將有助於安全性的提高。
pasv_promiscuous=YES|NO
此選項啟用時,將關閉PASV模式的安全檢查。該檢查確保資料連線和控制連線是來自同一個IP地址。小心開啟此選項。此選項唯一合理的用法是存在於由安全隧道方案構成的組織中。預設值為NO。
pasv_address=
此選項為一個數字IP地址,作為PASV命令的響應。預設值為none,即地址是從呼入的連線套接字(incoming connectd socket)中獲取。