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

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