vsftp功能分析及虛擬用戶服務

目錄

目錄... 1

ftp配置文件簡單解析... 1

ftp簡單配置及使用功能簡單說明... 2

建立基於虛擬用戶的vsftpd服務... 5

一、建立虛擬用戶的用戶名/密碼數庫... 5

二、增加虛擬用戶... 5

三、建立PAM認證文件... 5

四、修改vsftpd.conf配置文件,添加虛擬用戶支持... 6

五、爲不同的虛擬用戶建立獨立的配置文件... 6

六、匿名賬戶權限羅列... 7

創建一個用戶,可以登錄FTP但不能登錄系統... 8

 

 

ftp配置文件簡單解析

ftpusers和user_list文件中包含一份FTP用戶的列表.

ftpusers文件:該文件包含的用戶賬戶將被禁止登錄vsftp服務器,通常將root,bin,daemon等特殊用戶在該文件中,禁止用於登錄FTP服務

user_list文件:該文件中包含的用戶賬戶可能被禁止登錄,也可能被允許登錄,具體在主配置文件vsftpd.conf中決定。

當存在“userlist_enable=YES”配置項時,user_list文件生效,如果配置“userlist_deny=YES” 則僅禁止列表中的用戶賬戶登錄,如果配置“userlist_deny=NO”則僅允許列表中的用戶賬戶登錄

 

anon_root=/var/ftp 設置匿名用戶的FTP根目錄(缺省爲/var/ftp)

anon_other_write_enable=YES 是否允許匿名用戶有其他寫入權限。如對文件改名,覆蓋及刪除文件

anon_max_rate=0 限制匿名用戶的最大傳輸速率(0爲無限制)單位爲字節

本地用戶

local_enable=YES 是否允許本地系統用戶訪問

local_root=/var/ftp 設置本地用戶的FTP根目錄(缺省爲用戶的宿主目錄

chroot_local_user=YES 是否將FTP本地用戶禁止在宿主目錄中

local_max_rate=0 限制本地用戶的最大傳輸速率(0爲無限制)單位爲字節

全局配置 listen=YES 是否以獨立運行的方式監聽服務

listen_port=21 設置監聽FTP服務的端口號

download_enable=YES 是否允許下載文件(建立僅限於瀏覽,上傳的FTP服務器是可將其設爲NO)

pasv_enable=YES 允許被動模式連接

pasv_max_port=24600 設置用於被動模式的服務器最大端口號

pasv_min_port=24500 設置用於被動模式的服務器最小端口號

pam_service_name=vsftpd 設置用戶認證的PAM文件位置(/etc/pam.d/目錄中對應的文件名)

userlist_enable=YES 是否啓用user_list用戶列表文件

userlist_deny=YES 是否禁止user_list列表文件中的用戶賬號

max_per_ip=0 對來自相同IP地址的客戶端,最多允許多個併發連接(0爲無限制)

tcp_wrappers=YES 是否啓用TCP_Wrappers主機訪問控制匿名FTP:訪問匿名FTP服務器時不需要密碼,只需要用戶名“ftp”或“anonymous”即可通過驗證。當需要提供公開訪問的文件下載資源(如[url=ftp://ftp.redhat.com]ftp.redhat.com[/url]),或者上用戶上傳一些無需保密的數據資料時,可以選擇搭建匿名FTP服務器。

匿名用戶對應的系統賬號爲ftp,其宿主目錄爲“/var/ftp”該目錄也就是匿名用戶訪問vsftp服務時所在的根目錄(可以通過anon_root配置項更改)。將其中pub子目錄的屬主修改爲ftp,保留其可寫權限,可提供給匿名用戶上傳文件使用。

調整匿名上傳目錄權限,並準備下載測試文件。

# ls -dl /var/ftp/pub/ //查看vsftp的根目錄權限

drwxr-xr-x 2 root root 4096 2009-12-04/var/ftp/pub/

# chown ftp /var/ftp/pub/ //修改根目錄的屬主

# ls -dl /var/ftp/pub/ //修改後的結果

drwxr-xr-x 2 ftp root 4096 2009-12-04/var/ftp/pub/

# tar jcf /var/ftp/pub/ftpconfig.tar.bz2 /etc/vsftpd/ //複製文件供下載測試使用

tar: 從成員名中刪除開頭的“/”

#

# vim /etc/vsftpd/vsftpd.conf //修改主配置文件

anonymous_enable=YES //允許匿名用戶訪問

local_enable=NO //若不需要啓用本地用戶,可以將此項設置爲NO

write_enable=YES //允許開放寫入權限

anon_umask=022 //設置匿名用戶上傳建立文件時的權限掩碼

anon_upload_enable=YES //允許匿名上傳文件

anon_mkdir_write_enable=YES //允許匿名用戶創建目錄

dirmessage_enable=YES

xferlog_enable=YES

connect_from_port_20=YES

xferlog_std_format=YES

listen=YES

pam_service_name=vsftpd

userlist_enable=NO //未啓用本地用戶時,可以將用戶列表功能禁用

tcp_wrappers=YES

…..上下配置文件中以#開頭的註釋文全爲略過

如果希望匿名用戶在上傳目錄中能夠進行覆蓋,刪除,重命名文件等寫入操作,還可以添加“anon_other_write_enable=YES”的配置項。此項配置可能帶來安全性問題,應謹慎使用

更詳細的說明詳見: # man vsftpd.conf 

ftp簡單配置及使用功能簡單說明

# service vsftpd start //啓用FTP服務

爲 vsftpd 啓動 vsftpd: [確定]

以命令方式訪問FTP服務

[root@linux5 ~]# ftp 192.168.1.1 //登錄vsftpd服務器

Connected to 192.168.1.1.

220 (vsFTPd 2.0.5)

530 Please login with USER and PASS.

530 Please login with USER and PASS.

KERBEROS_V4 rejected as an authentication type

Name (192.168.1.1:root): ftp //以匿名用戶進行認證

331 Please specify the password.

Password: //密碼可以爲空或任意字符

230 Login successful.

Remote system type is UNIX.

Using binary mode to transfer files.

ftp> ls //查看FTP根目錄下的文件,目錄列表

227 Entering Passive Mode (192,168,1,1,150,9)

150 Here comes the directory listing.

drwxr-xr-x 2 14 0 4096 Jan 09 02:27 pub

226 Directory send OK.

ftp> cd pub //切換目錄

250 Directory successfully changed.

ftp> ls //確定是否切換

227 Entering Passive Mode (192,168,1,1,36,86)

150 Here comes the directory listing.

-rw-r--r-- 1 0 0 2655 Jan 09 01:50 ftpconfig.tar.bz2

226 Directory send OK.

ftp> get ftpconfig.tar.bz2 //下載服務器中的ftpconfig.tar.bz2文件到本地

local: ftpconfig.tar.bz2 remote: ftpconfig.tar.bz2

227 Entering Passive Mode (192,168,1,1,59,99)

150 Opening BINARY mode data connection for ftpconfig.tar.bz2 (2655bytes).

226 File send OK.

2655 bytes received in 0.024 seconds (1.1e+02 Kbytes/s)

ftp> put install.log //上傳本地的install.log文件到服務器

local: install.log remote: install.log

227 Entering Passive Mode (192,168,1,1,186,32)

150 Ok to send data.

226 File receive OK.

30057 bytes sent in 0.048 seconds (6.1e+02 Kbytes/s)

ftp> ls //查看上傳目錄中的文件屬性

227 Entering Passive Mode (192,168,1,1,72,154)

150 Here comes the directory listing.

-rw-r--r-- 1 0 0 2655 Jan 09 01:50 ftpconfig.tar.bz2

-rw-r--r-- 1 14 50 30057 Jan 09 02:38 install.log

226 Directory send OK.

ftp> quit //斷開FTP連接並退出

421 Timeout.

[root@linux5 ~]# ls -lh ftpconfig.tar.bz2

-rw-r--r-- 1 root root 2.6K 01-09 10:37 ftpconfig.tar.bz2

如果只下載文件也可以使用wget工具,指定服務器地址及文件路徑即可進行下載

本地用戶FTP

vsftpd可以直接使用linux系統的本地用戶作爲FTP用戶,提供基於用戶/密碼的登錄驗證。使用本地用戶登錄FTP服務器後,默認將位於自己的宿主目錄中,且在宿主目錄中擁有讀寫權限,並允許切換到其他目錄。使用chroot_local_user配置項可以將本地用戶禁止錮在宿主目錄中(不允許切換到其他目錄)。使用local_root配置項可以將本地用戶的FTP根目錄設置爲同一個文件夾。

以配置一個基於本地用戶並進行寬帶,用戶數限制的FTP服務器爲例

添加FTP用戶(即爲本地用戶)

# useradd qiao //添加用戶

# passwd qiao //添加用戶密碼

Changing password for user qiao.

New UNIX password: //設置密碼

BAD PASSWORD: it is WAY too short

Retype new UNIX password: //確認密碼

passwd: all authentication tokens updatedsuccessfully.

# ls -lh /etc/*.conf > /home/qiao/etcconf.list//建立測試文件

# vim /etc/vsftpd/vsftpd.conf //修改配置文件

anonymous_enable=NO //若不需要啓用匿名訪問,可將此選項設爲NO

local_enable=YES //允許本地用戶訪問

write_enable=YES //允許開發寫入權限

local_umask=022 //設置本地用戶上傳建立文件時的權限掩碼

chroot_local_user=YES //爲安全起見,建議將用戶禁錮於其宿主目錄中

max_clients=20 //限制併發客戶連接數位最多20

max_per_ip=2 //限制來自同一IP的客戶連接數最多2

local_max_rate=102400 //本地用戶下載,上傳限速爲100KB/s

pasv_enable=YES //允許被動模式並設置端口範圍

pasv_min_port=24500

pasv_max_port=24600

dirmessage_enable=YES

xferlog_enable=YES

connect_from_port_20=YES

xferlog_std_format=YES

listen=YES

pam_service_name=vsftpd

userlist_enable=YES

tcp_wrappers=YES

# vim /etc/vsftpd/user_list

qiao //添加此行,並註釋掉其他內容

# vim /etc/vsftpd/vsftpd.conf //修改配置文件

userlist_enable=YES //添加此行時user_list列表用戶禁止登錄

userlist_deny=NO //添加此行時user_list列表用戶允許登錄

# service vsftpd restart //重啓服務

關閉vsftpd [確定]

vsftpd 啓動 vsftpd [確定]

建立基於虛擬用戶的vsftpd服務

vsftpd服務同時支持匿名用戶,本地用戶和虛擬用戶三類賬號,使用虛擬用戶賬號可以提供集中管理的FTP根目錄,同時將於FTP登錄的用戶名。密碼與系統用戶賬號區分開,進一步加強了FTP服務器的安全性。本實驗均在rhel5.5 64位浪潮服務器上實驗.

一、建立虛擬用戶的用戶名/密碼數庫

vsftpd服務的虛擬用戶數據庫使用BerkeleyDB格式的數據文件。建立該數據庫文件需要用到db_load命令工具

# rpm -ivh /media/RHEL_5.5\ i386\ DVD/Server/db4-utils-4.3.29-10.el5.i386.rpm

//安裝db_load命令工具

warning: /media/RHEL_5.5 i386 DVD/Server/db4-utils-4.3.29-10.el5.i386.rpm:Header V3 DSA signature: NOKEY, key ID 37017186

Preparing... ########################################### [100%]

1:db4-utils ########################################### [100%]

# vim /etc/vsftpd/vusers.list //建立文本格式的用戶名/密碼文件

usera //奇數行爲用戶名

123456 //偶數行爲上一行中用戶所對應的密碼

userb //第二個用戶

123456 //對應的密碼

# cd /etc/vsftpd/ //切換目錄

# db_load -T -t hash -f /etc/vsftpd/vusers.list/etc/vsftpd/vusers.db //將列表文件轉化爲DB數據庫

 [root@linux vsftpd]# filevusers.db //查看文件類型

vusers.db: BerkeleyDB (Hash, version 8, native byte-order)

[root@linux vsftpd]# chown 600 /etc/vsftpd/vusers.* //降低文件權限以提供安全性

在db.load命令中,“-f”選項用於指定用戶名/密碼列表文件,“-T”選項允許Berkey DB的應用程序使用從文本格式轉換的DB數據文件,“-t hash”選項允許指定讀取數據文件的基本方法。

二、增加虛擬用戶

# useradd -d /var/ftproot -s /sbin/nologin virtual //建立映射賬號virtual

# chmod 755 /var/ftproot/ //更改FTP根目錄權限

# ls -lh /boot > /var/ftproot/vutest.file //建立測試文件

vsftpd虛擬用戶需要有一個對應的系統用戶賬號(該賬號無需設置密碼及登錄Shell),該用戶賬號的宿主目錄作爲所有虛擬用戶登錄後共同FTP根目錄。

三、建立PAM認證文件

PAM配置文件主要用於爲程序提供用戶認證控制,vsftpd服務使用的默認PAM配置文件爲“/etc/pam.d/vsftpd”可以參考該文件的格式建立新的PAM配置文件,用於虛擬用戶認證控制,配置時注意將db選項指定爲先前建立的虛擬用戶數據文件vusers(省略.db擴展名)。

# vim /etc/pam.d/vsftpd.vu

#%PAM-1.0

auth required pam_userdb.so db=/etc/vsftpd/vusers

account required pam_userdb.so db=/etc/vaftpd/vusers

四、修改vsftpd.conf配置文件,添加虛擬用戶支持

在vsftpd.conf配置文件中添加guest_enable,guest_username配置項,將訪問FTP服務的所有虛擬用戶對應到同一系統用戶賬號virtual,並修改pam_service_name配置項,指定上一步建立的PAM配置文件“/etc/pam.d/vsftpd.vu”。

anonymous_enable=NO

local_enable=YES //使用虛擬用戶需要啓用本地用戶

write_enable=YES

anon_umask=022 //設置虛擬用戶所上傳文件 的默認權限掩碼

dirmessage_enable=YES

xferlog_enable=YES

connect_from_port_20=YES

xferlog_std_format=YES

listen=YES

userlist_enable=YES

tcp_wrappers=YES

 

guest_enable=YES //啓用用戶映射功能

guest_username=virtual //將映射用戶指定爲virtual

pam_service_name=/etc/pam.d/vsftpd.vu //修改使用的PAM文件位置

在vsftpd服務中, 虛擬用戶賬號默認作爲匿名用戶處理以降低權限,因此對應的權限設置通常使用anon_開頭的配置項。例如,在設置虛擬用戶所有上傳文件的默認權限掩碼時應採用配置項anon_uamsk而不是local_umask。

通過以上四個步驟,實際上已經可以重新啓動vsftpd提供服務了,使用虛擬用賬號可以登錄FTP服務器並下載文件。測試是否能夠使用虛擬帳號密碼登錄,登陸成功則表示配置成功.

五、爲不同的虛擬用戶建立獨立的配置文件

以下步驟將設置如何爲個別虛擬用戶設置不同的訪問權限。

修改vsftpd.conf主配置文件,添加用戶配置目錄支持

# vim /etc/vsftpd/vsftpd.conf //修改主配置文件

user_config_dir=/etc/vsftpd/vuser_dir //添加此行配置項,指定用戶配置目錄位置

注意:要是獨立配置文件生效,需要先把主配置文件/etc/vsftpd/vsftpd.conf中的相應的選項註釋掉:

#anon_upload_enable=YES

#anon_mkdir_write_enable=YES

vsftp首先以主配置文件爲準,其次纔是獨立配置文件.

# mkdir /etc/vsftpd/vusers_dir //創建用戶配置目錄

# cd /etc/vsftpd/vusers_dir/ //切換目錄

[root@linux vusers_dir]# vim usera //爲usera用戶建立獨立的配置文件

anon_upload_ enable =YES //允許用戶有上傳文件的權限

anon_mkdir_write_enable=YES //允許用戶有創建目錄的寫入權限

[root@linux vusers_dir]# touch userb //爲userb用戶創建空配置文件(無額外權限設置)

# service vsftpd restart //重新啓動

關閉 vsftpd: [確定]

爲 vsftpd 啓動 vsftpd: [確定]

# chkconfig --list vsftpd

vsftpd 0:關閉 1:關閉 2:關閉 3:關閉 4:關閉 5:關閉 6:關閉

# chkconfig --level 35 vsftpd on

# chkconfig --list vsftpd

vsftpd 0:關閉 1:關閉 2:關閉 3:啓用 4:關閉 5:啓用 6:關閉

如果需要禁用或者僅允許一部分虛擬用戶賬號,同樣可以使用“/etc/vsftpd/user_list”列表文件。需要注意的是,在“/etc/vaftpd/ftpusers”文件中加入虛擬用戶名,並不能禁用對應的系統賬號。

測試虛擬用戶賬戶將得到以下結果

使用usera用戶可以登錄vsftpd服務器,且可以瀏覽,下載文件,也可以上傳文件。

使用userb用戶可以登錄vsftpd服務器,並可以瀏覽,下載文件,但無法上傳文件。

使用匿名用戶或其他系統用戶時,將不能登錄該vsftpd服務器。

六、匿名賬戶權限羅列

anon_mkdir_write_enable

如果設置是,匿名用戶被允許創建文件夾。前提是,write_enable必須開啓,匿名用戶在父目錄有寫權限.

              If  set  toYES, anonymous users will be permitted to create new directories under certainconditions. For this to work, the option write_enable must be activated,and theanonymous ftp user must have write permission on the parent directory.

              Default: NO

 

anon_other_write_enable

          如果設置是,匿名用戶被允許寫操作文件,例如刪除和重命名文件文件,不允許上傳和創建文件夾.前提是,write_enable必須開啓,匿名用戶在父目錄有寫權限.

          # chmod -R 777 /var/ftproot/

If set to YES, anonymous users will be permitted to perform writeoperations other than upload and create directory, such as deletion and renaming.This is  generally not recommended butincluded for completeness.

                     這個功能通常不被推薦。

              Default: NO

       anon_upload_enable

              If  set to  YES,  anonymous users will be permitted to uploadfiles under certain conditions. For this to work, the option write_enable mustbe activated, and the anonymous ftp user must have write permission on desiredupload locations. This setting is also required for virtual users to upload; bydefault, virtual users aretreated with anonymous (i.e. maximally restricted)privilege.

 

              Default: NO

 

      anon_world_readable_only

              When  enabled, anonymous users will only be allowed to download files which are worldreadable. This is recognising that the ftp user may own files, especially inthe presence of uploads.

 

              Default: YES

 

       anonymous_enable

              Controls whetheranonymous logins are permitted or not. If enabled, both the usernames ftp andanonymous are recognised as anonymous logins.

 

              Default: YES

創建一個用戶,可以登錄FTP但不能登錄系統

每新建一個用戶會自動生成一個跟用戶一樣名字的組

Userdel –r ixdba

Useraddd –g ftp –s /sbin/nologin ixdba

設置密碼

Passwd ixdba

zhangjunyang            20131005

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章