CentOS 6 安裝vsftpd

來源:互聯網
上載者:User

標籤:centos 6 安裝vsftpd

 

FTP相關知識

1.關於FTP連接埠號碼
命令(控制)串連連接埠: TCP 21


2.資料連線連接埠:(資料連線的連接埠在伺服器上可以個人化修改指定)
主動模式:用戶端通過命令串連告訴伺服器,使用主動模式(PORT命令)進行資料轉送,並且告訴伺服器自己監聽在某一非特權連接埠(一般是命令連結所用連接埠號碼加1且大於1024

的連接埠),然後伺服器使用自己的預設資料連線連接埠 TCP 20來串連用戶端的資料連線連接埠,從而建立資料連線通訊並開始傳輸資料。
被動模式:用戶端通過命令串連告訴伺服器,使用被動模式(PASV命令)進行資料轉送。伺服器端收到命令後,告訴用戶端自己監聽在一個非特權連接埠(大於1024的連接埠),並通

知用戶端自己串連過來並擷取資料

 

3.常用FTP伺服器
Linux: WU-ftpd, vsftpd, proftpd, pureftpd
Windows: Serv-U, Filezilla

 

4.常用的FTP用戶端:
Linux: ftp,lftp,gftpd(圖形介面)
Windows: flashfxp,Filezilla, cuteftp


CentOS 6安裝vsftpd

一、安裝
1. yum install vsftpd -y

2.確認安裝PAM服務相關組件,開發包,其實不裝也沒有關係,主要的目的是確認PAM
[[email protected] ~]# yum install pam pam-devel

3.安裝DB4組件包,用來支援檔案資料庫。
yum install db4*
db4-utils-4.7.25-17.el6.x86_64
db4-4.7.25-17.el6.x86_64
[[email protected] ~]# yum install db4*
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.cqu.edu.cn
 * extras: mirrors.163.com
 * updates: mirrors.yun-idc.com
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package db4.x86_64 0:4.7.25-17.el6 will be updated
---> Package db4.x86_64 0:4.7.25-20.el6_7 will be an update
---> Package db4-cxx.x86_64 0:4.7.25-20.el6_7 will be installed
---> Package db4-devel.x86_64 0:4.7.25-20.el6_7 will be installed
---> Package db4-devel-static.x86_64 0:4.7.25-20.el6_7 will be installed
---> Package db4-java.x86_64 0:4.7.25-20.el6_7 will be installed
---> Package db4-tcl.x86_64 0:4.7.25-20.el6_7 will be installed
---> Package db4-utils.x86_64 0:4.7.25-17.el6 will be updated
---> Package db4-utils.x86_64 0:4.7.25-20.el6_7 will be an update
--> Finished Dependency Resolution

Dependencies Resolved

============================================================================================================================================================

===============
 Package                                       Arch                                Version                                      Repository                            Size
============================================================================================================================================================

===============
Installing:
 db4-cxx                                       x86_64                              4.7.25-20.el6_7                              updates                              588 k
 db4-devel                                     x86_64                              4.7.25-20.el6_7                              updates                              6.6 M
 db4-devel-static                              x86_64                              4.7.25-20.el6_7                              updates                              2.5 M
 db4-java                                      x86_64                              4.7.25-20.el6_7                              updates                              1.7 M
 db4-tcl                                       x86_64                              4.7.25-20.el6_7                              updates                              620 k
Updating:
 db4                                           x86_64                              4.7.25-20.el6_7                              updates                              563 k
 db4-utils                                     x86_64                              4.7.25-20.el6_7                              updates                              130 k

Transaction Summary
============================================================================================================================================================

===============
Install       5 Package(s)
Upgrade       2 Package(s

 

二.系統帳戶
1.建立vsftpd服務的宿主使用者:
[[email protected] ~]# useradd vsftpd -s /sbin/nologin
預設的vsftpd的服務宿主使用者是root,但是這不符合安全性的需要。這裡建立名字為vsftpd的使用者,用他來作為支援vsftpd的服務宿主使用者。由於該使用者僅用來支援vsftpd服務用,因此

沒有許可他登陸系統的必要,並設定他為不能登陸系統的使用者。

2.建立vsftpd虛擬宿主使用者:
[[email protected] nowhere]#useradd virtuser -s /sbin/nologin
本篇主要是介紹vsftp的虛擬使用者,虛擬使用者並不是系統使用者,也就是說這些FTP的使用者在系統中是不存在的。他們的總體許可權其實是集中寄託在一個在系統中的某一個使用者身上的

,所謂vsftpd的虛擬宿主使用者,就是這樣一個支援著所有虛擬使用者的宿主使用者。由於他支撐了FTP的所有虛擬使用者,那麼他本身的許可權將會影響著這些虛擬使用者,因此,處於安

全性的考慮,也要十分注意對該使用者的許可權的控制,該使用者也絕對沒有登陸系統的必要,這裡也設定他為不能登陸系統的使用者。

 

三.調整Vsftpd的設定檔:
1.編輯設定檔前先備份
[[email protected] ~]# cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.backup
 2.編輯主設定檔Vsftpd.conf
[[email protected] ~]# vi /etc/vsftpd/vsftpd.conf
這裡我將原設定檔的修改完全記錄,凡是修改的地方我都會保留注釋原來的配置。其中加入我對每條配置項的認識,對於一些比較關鍵的配置項這裡我做了我的觀點,並且原本

英語的說明我也不刪除,供參考對比用。

#anonymous_enable=YES
anonymous_enable=NO
設定不允許匿名訪問
xferlog_file=/var/log/xferlog
nopriv_user=vsftpd
# You may fully customise the login banner string:
ftpd_banner=Welcome to  My FTP service.
ls_recurse_enable=NO
#KC: The following entries are added for supporting virtual ftp users.
以下這些是關於Vsftpd虛擬使用者支援的重要設定項目。預設Vsftpd.conf中不包含這些設定項目,需要自己手動添加配置。
guest_enable=YES
設定啟用虛擬使用者功能。
guest_username=virtuser
指定虛擬使用者的宿主使用者。
virtual_use_local_privs=YES
設定虛擬使用者的許可權符合他們的宿主使用者。
user_config_dir=/etc/vsftpd/vconf
設定虛擬使用者個人Vsftp的設定檔存放路徑。也就是說,這個被指定的目錄裡,將存放每個Vsftp虛擬使用者個性的設定檔,一個需要注意的
地方就是這些設定檔名必須和虛擬使用者名稱相同。

3.建立Vsftpd的記錄檔,並更該屬主為Vsftpd的服務宿主使用者:
[[email protected] ~]# touch /var/log/vsftpd.log
[[email protected] ~]# chown vsftpd.vsftpd /var/log/vsftpd.log
 4.建立虛擬使用者設定檔存放路徑:
[[email protected] ~]# mkdir /etc/vsftpd/vconf/
 
 

三.製作虛擬使用者資料庫檔案
1.先建立虛擬使用者名稱單檔案:
[[email protected] ~]# touch /etc/vsftpd/virtusers
建立了一個虛擬使用者名稱單檔案,這個檔案就是來記錄vsftpd虛擬使用者的使用者名稱和口令的資料檔案,我這裡給它命名為virtusers。為了避免檔案的混亂,我把這個名單檔案就放置

在/etc/vsftpd/下。
 
2.編輯虛擬使用者名稱單檔案:
[[email protected] ~]#vi /etc/vsftpd/virtusers
tom
123456
jack
123456

3.產生虛擬使用者資料檔案:
[[email protected] vsftpd]# db_load -T -t hash -f /etc/vsftpd/virtusers /etc/vsftpd/virtusers.db

4.察看產生的虛擬使用者資料檔案
[[email protected] ~]# ll /etc/vsftpd/virtusers.db
-rw-r--r-- 1 root root 12288 Sep 16 03:51 /etc/vsftpd/virtusers.db
需要特別注意的是,以後再要添加虛擬使用者的時候,只需要按照“一行使用者名稱,一行口令”的格式將新使用者名稱和口令添加進虛擬使用者名稱單檔案。但是光這樣做還不夠,不會生效的哦

!還要再執行一遍“ db_load -T -t hash -f 虛擬使用者名稱單檔案 虛擬使用者資料庫檔案.db ” 的命令使其生效才可以!
 
四.設定PAM驗證檔案,並指定虛擬使用者資料庫檔案進行讀取
1.察看原來的Vsftp的PAM驗證設定檔:
[[email protected] ~]# cat /etc/pam.d/vsftpd
----------------------------------------------------------------
#%PAM-1.0
session    optional     pam_keyinit.so    force revoke
auth       required     pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers nerr=succeed
auth       required     pam_shells.so
auth       include      system-auth
account    include      system-auth
session    include      system-auth
session    required     pam_loginuid.so
----------------------------------------------------------------
 
2.在編輯前做好備份:
[[email protected] ~]# cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.backup
 
3.編輯Vsftpd的PAM驗證設定檔
[[email protected] ~]# vi /etc/pam.d/vsftpd
----------------------------------------------------------------
#%PAM-1.0
auth    sufficient      /lib64/security/pam_userdb.so     db=/etc/vsftpd/virtusers
account sufficient      /lib64/security/pam_userdb.so     db=/etc/vsftpd/virtusers
以上兩條是手動添加的,內容是對虛擬使用者的安全和帳戶許可權進行驗證。
這裡的auth是指對使用者的使用者名稱口令進行驗證。
這裡的accout是指對使用者的帳戶有哪些許可權哪些限制進行驗證。
其後的sufficient表示充分條件,也就是說,一旦在這裡通過了驗證,那麼也就不用經過下面剩下的驗證步驟了。相反,如果沒有通過的話,也不會被系統立即擋之門外,因為

sufficient的失敗不決定整個驗證的失敗,意味著使用者還必須將經曆剩下來的驗證審核。
再後面的/lib/security/pam_userdb.so表示該條審核將調用pam_userdb.so這個庫函數進行。
最後的db=/etc/vsftpd/virtusers則指定了驗證庫函數將到這個指定的資料庫中調用資料進行驗證。
#KC: The entries for Vsftpd-PAM are added above.
session    optional     pam_keyinit.so    force revoke
auth       required     pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers nerr=succeed
auth       required     pam_shells.so
auth       include      system-auth
account    include      system-auth
session    include      system-auth
session    required     pam_loginuid.so
----------------------------------------------------------------

 

五.虛擬使用者的配置
1.規劃好虛擬使用者的主路徑:
[[email protected] ~]# mkdir /opt/vsftp/
 
2.建立測試使用者的FTP使用者目錄:
[[email protected] ~]# mkdir /opt/vsftp/tom/ /opt/vsftp/jack/
 
3.建立虛擬使用者設定檔模版:
[[email protected] ~]# cp /etc/vsftpd/vsftpd.conf.backup /etc/vsftpd/vconf/vconf.tmp
 
4.定製虛擬使用者模版設定檔:
[[email protected] ~]# vi /etc/vsftpd/vconf/vconf.tmp
--------------------------------
local_root=/opt/vsftp/virtuser
指定虛擬使用者的具體主路徑。
anonymous_enable=NO
設定不允許匿名使用者存取。
write_enable=YES
設定允許寫操作。
local_umask=022
設定上傳檔案許可權掩碼。
anon_upload_enable=NO
設定不允許匿名使用者上傳。
anon_mkdir_write_enable=NO
設定不允許匿名使用者建立目錄。
idle_session_timeout=600
設定空閑連線逾時時間。
data_connection_timeout=120
設定單次連續傳輸最大時間。
max_clients=10
設定並發用戶端訪問個數。
max_per_ip=5
設定單個用戶端的最大線程數,這個配置主要來照顧Flashget、迅雷等多線程下載軟體。
local_max_rate=50000
設定該使用者的最大傳輸速率,單位b/s。
--------------------------------
這裡將原vsftpd.conf設定檔經過簡化後儲存作為虛擬使用者設定檔的模版。這裡將並不需要指定太多的配置內容,主要的架構和限制交由Vsftpd的主設定檔vsftpd.conf來定義,即

虛擬使用者設定檔當中沒有提到的設定項目將參考主設定檔中的設定。而在這裡作為虛擬使用者的設定檔模版只需要留一些和使用者流量控制,訪問方式控制的設定項目就可以了

。這裡的關鍵項是local_root這個配置,用來指定這個虛擬使用者的FTP主路徑。
 
5.更改虛擬使用者的主目錄的屬主為虛擬宿主使用者:
[[email protected] ~]# chown -R virtuser.virtuser /opt/vsftp/
 
6.檢查許可權:
[[email protected] ~]#ll /opt/vsftp/
total 24
drwxr-xr-x 2 ovirtuser virtuser 4096 Sep 16 05:14 tom
drwxr-xr-x 2 ovirtuser virtuser 4096 Sep 16 05:00 jack


六.給測試使用者定製:
1.從虛擬使用者模版設定檔複製:
[[email protected] ~]# cp /etc/vsftpd/vconf/vconf.tmp /etc/vsftpd/vconf/tom
 
2.針對具體使用者進行定製:
[[email protected] ~]# vi /etc/vsftpd/vconf/tom
---------------------------------
local_root=/opt/vsftp/tom
anonymous_enable=NO
write_enable=YES
local_umask=022
anon_upload_enable=NO
anon_mkdir_write_enable=NO
idle_session_timeout=300
data_connection_timeout=90
max_clients=1
max_per_ip=1
local_max_rate=25000
---------------------------------

 

七、用戶端工具串連測試

 


 

 

本文出自 “I believe---技術成就夢想” 部落格,請務必保留此出處http://blacktoo.blog.51cto.com/623428/1769392

CentOS 6 安裝vsftpd

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.