2-6-RHEL6.5搭建vsftpd服务器案例分析与总结(Red Hat Enterprise Linux Server6.3)@树袋飘零

本节内容介绍:

 

一、FTP简介

二、vsftpd服务器的安装

三、vsftpd服务器配置

四、vsftpd案例分析

五、vsftpd虚拟主机

六、虚拟账户

 

 

  • FTP简介

FTPFile Transfer Protocol)是Internet上提供文件传输的协议,,它采用c/s结构的工作模式。FTP的初衷就是为了解决存在于复杂的计算机环境中的操作系统多样化的问题,FTP为所有的使用此服务的主机建立了统一的机制协议,这样尽管大家都个性十足,但是都遵守FTP协议,文件的沟通传输也就能顺利畅通了。FTP默认会使用两个端口号,2021 通过TCP协议建立连接,20只有在传输数据的时候才打开,传输完毕之后关闭,而21端口为监听端口,默认情况下一直打开的。在服务器上运行的FTP软件有很多种,其中安全稳定开源又高性能的选择是VSFTPD,全称为Very Secure FTP Daemon

二、Vsftpd服务器的安装

[root@PAN-Server ~]# rpm -qa | grep ftp

gvfs-obexftp-1.4.3-15.el6.x86_64

[root@PAN-Server ~]# yum install -y vsftpd#安装服务端

[root@PAN-Client ~]# yum install -y lftp #安装客户端

[root@PAN-Server ~]# rpm -qc vsftpd

/etc/logrotate.d/vsftpd #日志文件

/etc/pam.d/vsftpd # vsftpd服务器认证本地用户的PAM接口配置文件

/etc/vsftpd/ftpusers #用于指定哪些用户不能访问vsftpd服务器

/etc/vsftpd/user_list #允许使用vsftpd的用户列表 白名单

/etc/vsftpd/vsftpd.conf #主配置文件

再说一下其他的重要的文件

/var/ftp #vsftpd服务器匿名用户的工作目录

/usr/share/doc/vsftpd-2.2.2#帮助说明文档存放目录

启动vsftpd

[root@PAN-Server ~]# /usr/sbin/vsftpd

[root@PAN-Server ~]# /usr/sbin/vsftpd &#后台执行

[1] 13080

如果要开机自动启动的话可以把上述的命令存放在/etc/rc.local

查看进程是否启动

[root@PAN-Server ~]# ps -eaf | grep vsftpd

root     13079      1  0 15:08 ?       00:00:00 /usr/sbin/vsftpd

root     13097  12890  0 15:11 pts/0    00:00:00 grep vsftpd

[root@PAN-Server ~]# netstat -anutp | grep21 # 查看21端口是否处于监听

tcp       0      0 0.0.0.0:21                  0.0.0.0:*                   LISTEN      13079/vsftpd       

tcp       0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      12130/master       

tcp       0      0 ::1:25                      :::*                        LISTEN      12130/master       

[root@PAN-Server ~]#

下面我们来测试一下看看服务器能否正常工作

下面的pub在本机上为/var/pub 匿名用户的工作目录

[root@PAN-Server ~]# lftp 127.0.0.1

lftp 127.0.0.1:~> ls

drwxr-xr-x    2 0       0            4096 Feb 12  2013 pub

lftp 127.0.0.1:/> bye

三、Vsftpd服务器配置 配置文件的修改=前后没有空格

[root@PAN-Server ~]# id ftp #这个用户默认存在匿名登录时权限等同于ftp用户权限

uid=14(ftp) gid=50(ftp) groups=50(ftp)

[root@PAN-Server ~]# ll -d /var/ftp ftp用户没有读写权限,需要修改

drwxr-xr-x 3 root root 4096 Aug 13 14:36/var/ftp

[root@PAN-Server ~]# grep -v "#"/etc/vsftpd/vsftpd.conf #过滤掉带#号的行

anonymous_enable=YES #允许匿名用户访问

local_enable=YES#允许本地用户登录,需要搭配PAM和虚拟账户使用

write_enable=YES#允许写入操作更改内容 需要目录包含权限

local_umask=022#设定本地用户上传文件的umask值为022,创建者有全权,其他读和执行

                                     077的话是默认值,创建者有全权而其他人没有权限。

dirmessage_enable=YES#进入目录时允许显示欢迎信息

xferlog_enable=YES#允许产生日志文件

connect_from_port_20=YES#使用数据连接建立时的源端口20

xferlog_std_format=YES#日志采用标准的xferlog格式

 

listen=YES#独立模式运行并监听IPV4端口 启动服务的命令为/usr/sbin/vsftpd

 

pam_service_name=vsftpd#指定PAM服务配置文件的名字 目录为/etc/pam.d

userlist_enable=YES #使userlist_file生效,从而定义用户列表用户访问控制

tcp_wrappers=YES#连接请求访问控制为tcp_wrappers主机访问控制

最后两项目重点解析一下,访问控制设置

 

两种控制方式:分别为主机访问控制,另一种用户访问控制。

①主机访问控制:

tcp_wrappers=YES

设置vsftpd是否与tcp wrapper相结合来进行主机的访问控制。默认值为YES。如果启用,则vsftpd服务器会检查/etc/hosts.allow /etc/hosts.deny 中的设置,来决定请求连接的主机,是否允许访问该FTP服务器。这两个文件可以起到简易的防火墙功能。

比如:若要仅允许192.168.15.1192.168.15.254的用户可以连接FTP服务器,则在/etc/hosts.allow文件中添加以下内容:

vsftpd:192.168.15. :allow

vsftpd:all :deny

②用户访问控制:

对于用户的访问控制可以通过/etc目录下的vsftpd/user_listftpusers文件来实现。

userlist_file=/etc/vsftpd/user_list

控制用户访问FTP的文件,里面写着用户名称。一个用户名称一行。

userlist_enable=YES #是否启用vsftpd/user_list文件。

userlist_deny=YES #决定vsftpd/user_list文件中的用户是否能够访问FTP服务器。若设置为YES,则vsftpd/user_list文件中的用户不允许访问FTP,若设置为NO,则只有vsftpd/user_list文件中的用户才能访问FTP

 

/etc/vsftpd/ftpusers文件专门用于定义不允许访问FTP服务器的用户列表(注意:如果userlist_enable=YES,userlist_deny=NO,此时如果在vsftpd.user_listftpusers中都有某个用户时,那么这个用户是不能够访问FTP的,即ftpusers的优先级要高)。默认情况下vsftpd.user_listftpusers,这两个文件已经预设置了一些不允许访问FTP服务器的系统内部账户。如果系统没有这两个文件,那么新建这两个文件,将用户添加进去即可。

 

 

 

上面这些基本的配置可以保证vsftpd服务器的运行,但是不符合实际需求,还有一些选项作为注释没有列出来,下面我把所有的选项都列出来看看相比较而言多出来下面的内容:

[root@PAN-Server ~]# grep '='/etc/vsftpd/vsftpd.conf | grep '#'

#anon_upload_enable=YES # 匿名用户可以上传文件,还要有write_enable=yes等的支持。

#anon_mkdir_write_enable=YES#匿名是否有创建目录这样的写权限anon_other_write_enable

#chown_uploads=YES # 上传的文件是否强制更改属主

#chown_username=whoever# 被更改的属主名,与上面选项搭配使用有效

# The name of log file whenxferlog_enable=YES and xferlog_std_format=YES

#xferlog_file=/var/log/xferlog 日志存储位置 与上面的两个配合使用

#idle_session_timeout=600 #不交互会话超时为600s

#data_connection_timeout=120#数据连接超时值,建立连接后客户端无响应

#nopriv_user=ftpsecure #vsftpd运行于非特权状态下,所使用的用户身份是ftpsecure,默认为nobady,但是其他软件有时也使用这个用户,那就重新制定一个吧,这里就制定了。

#async_abor_enable=YES#vsftpd支持 指令‘async ABOR’ 由于这条命令影响安全默认为NO,但是有些客户端可能会用到这条命令,否则挂起,所以为了少数牺牲了安全性。

#ascii_upload_enable=YES #上传文件允许ASCII模式

#ascii_download_enable=YES下载文件允许ASCII模式,为了避免DDOS攻击,这两项NO

#ftpd_banner=Welcome to blah FTP service. 登陆欢迎语,如果没有这个的话默认显示版本信息,最好写上,安全考虑,而banner_file=可以设定欢迎语信息则上面这个就ftpd_banner=banner_file

#deny_email_enable=YES  #拒绝登陆密码为mail形式的密码

#banned_email_file=/etc/vsftpd/banned_emails

#chroot_local_user=YES #改为NO,不能换根,不能切换到其他上级目录

#chroot_list_enable=YES#换根用户列表开启

#chroot_list_file=/etc/vsftpd/chroot_list 指定换根的用户列表存放位置

#ls_recurse_enable=YES#可以让ls命令使用-R参数

#listen_ipv6=YES#独立模式运行监听IPV6网络接口

配置文件的内容介绍差不多了,系统也能够安全了,但是稳定性存在问题,下面这几个参数可以提高系统的性能

#anon_max_rate #匿名客户端 单位是b/s 如果设置为0则无限制,默认情况下无限制

#local_max_rate #限制本地用户的速率

#max_clients限制接受最大客户端连接数。

#max_per_ip#限制每一台主机可以连入的客户端数,也就是说限制一台电脑连入服务器开的数目,防止一个用户打开多个客户端

  • Vsftpd案例分析

良好的习惯是任何事情成功的开始,先备份源主配置文件吧

[root@PAN-Server ~]# mv/etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.bak.conf

[root@PAN-Server ~]# grep '=' !$ >>/etc/vsftpd/vsftpd.conf

grep '=' /etc/vsftpd/vsftpd.bak.conf>> /etc/vsftpd/vsftpd.conf

[root@PAN-Server ~]# vim !$

vim /etc/vsftpd/vsftpd.conf

 

案例分析1:支持匿名账户

目标:匿名用户在操作系统中只要有读的权限,就可以下载文件,登陆后进入/var/ftp/pub目录,可以下载该目录中的文件,可以把文件上传到/var/ftp/pub/anon中,但不能下载或删除该目录中的文件,匿名用户登陆如果输入[email protected]做为登陆密码,将被拒绝。

咱们一步步的开始抽丝剥茧

1)、支持匿名用户

anonymous_enable=YES

2)、匿名用户在操作系统中只要有读的权限就可以下载文件

anon_world_readable_enable=NO

解析:默认情况下,匿名用户上传下载,其用户都是ftp用户的权限,若要上传文件,则需要ftp用户有写的权限,若要下载,则需要ftp用户有读的权限,也就是说一般情况下,ftp用户对文件有读权限就对文件有下载权限了,这个anon_world_readable_only参数意思是,当他为YES时,文件的其他人必须有读的权限才允许下载,单单拥有者ftp有读权限是无法下载的,必须其他人也有读权限,才允许下载,这是为安全性的一方面考虑,若为NO则只要ftp用户对文件有读权限即可下载

3)、登陆后进入/var/ftp/pub目录

anon_root=/var/ftp/pub

4)、可以上传但是不能删除或下载#开启匿名上传同时改变上传的文件拥有者

 

chown_uploads=YES

chown_username=root

这一步中我们需要创建要求中的目录/var/ftp/pub/anon 并改变拥有者

[root@PAN-Server ~]# ll -R /var/ftp/

/var/ftp/:

total 4

drwxr-xr-x 3 root root 4096 Aug 14 01:46pub

 

/var/ftp/pub:

total 4

drwxr-xr-x 2 ftp root 4096 Aug 14 01:46anon

此时ftp用户对/var/ftp/pub/anon 目录具有所有权,但是上面我们有选项定义了上传更改拥有者为root 此时文件在这个目录上对于ftp而言就成为了other用户

5)、匿名登陆使用Email地址做为密码登陆拒绝

deny_email_enable=YES

banned_email_file=/etc/vsftpd/banned_emails

然后/etc/vsftpd/banned_emails写入[email protected]

[root@PAN-Server ~]# vim/etc/vsftpd/banned_emails

[root@PAN-Server ~]# killall -HUP vsftpd #重启vsftpd服务 (独立模式下重启服务)

 

这里我需要把我的配置文件贴出来参考如下:

解析就不再赘述了,如果不清楚的话可以看看前面的配置文件解析内容

 

[root@PAN-Server ~]# cat/etc/vsftpd/vsftpd.conf

anonymous_enable=YES

ftp_username=ftp

no_anon_password=YES

anon_root=/var/ftp/pub

#local_enable=YES

write_enable=YES

#write_enable=YES

local_umask=022

#anon_world_readable_only=NO

#anon_upload_enable=YES

anon_upload_enable=YES

#anon_mkdir_write_enable=YES

dirmessage_enable=YES

xferlog_enable=YES

connect_from_port_20=YES

#chown_uploads=YES

chown_uploads=YES

#chown_username=whoever

chown_username=root

# The name of log file whenxferlog_enable=YES and xferlog_std_format=YES

xferlog_file=/var/log/xferlog

xferlog_std_format=YES

idle_session_timeout=600

data_connection_timeout=120

#nopriv_user=ftpsecure

#async_abor_enable=YES

ascii_upload_enable=NO

ascii_download_enable=NO

ftpd_banner=Welcome to blah FTP service.

deny_email_enable=YES

banned_email_file=/etc/vsftpd/banned_emails

#chroot_local_user=YES

#chroot_list_enable=YES

#chroot_list_file=/etc/vsftpd/chroot_list

#ls_recurse_enable=YES

listen=YES

#listen_ipv6=YES

#pam_service_name=vsftpd

#userlist_enable=YES

#tcp_wrappers=YES

[root@PAN-Server ~]#

 

6)、测试验证

先把测试文件拷贝到ftp匿名登录的根目录下

[root@PAN-Server ~]# cp /etc/{hosts,passwd}/mnt/Packages/mysql-5.1.71-1.el6.x86_64.rpm /var/ftp/pub/

 

C:\Users\pan>ftp 192.168.15.22

连接到 192.168.15.22

220 Welcome to blah FTP service.

用户(192.168.15.22:(none)): anonymous

230 Login successful.

ftp> pwd

257 "/"           # 解析:这里的根指的是/var/ftp/pub

 

C:\Users\pan>ftp 192.168.15.22

连接到 192.168.15.22

220 Welcome to blah FTP service.

用户(192.168.15.22:(none)): anonymous

230 Login successful.

ftp> ls -l

200 PORT command successful. Consider usingPASV.

150 Here comes the directory listing.

drwxr-xr-x    2 14      0            4096 Aug 13 17:46anon

-rw-r--r--    1 0       0             158 Aug 13 19:31hosts

-r--r--r--    1 0       0          914896 Aug 13 19:31mysql-5.1.71-1.el6.x86_6

4.rpm

-rw-r--r--    1 0       0            1824 Aug 13 19:31passwd

226 Directory send OK.

ftp: 收到 276 字节,用时 0.00 276.00千字节/秒。

ftp> get passwd

200 PORT command successful. Consider usingPASV.

150 Opening BINARY mode data connection forpasswd (1824 bytes).

226 Transfer complete.

ftp: 收到 1824 字节,用时 0.00 1824000.00千字节/秒。

ftp> cd anoon

550 Failed to change directory.

ftp> cd anon

250 Directory successfully changed.

ftp> ls -l

200 PORT command successful. Consider usingPASV.

150 Here comes the directory listing.

226 Directory send OK.

上传文件到anon

ftp> cd anon

250 Directory successfully changed.

ftp> ls

200 PORT command successful. Consider usingPASV.

150 Here comes the directory listing.

HashMyFiles.cfg

HashMyFiles.exe

226 Directory send OK.

ftp: 收到 34 字节,用时 0.01 6.80千字节/秒。

ftp> get HashMyFiles.cfg  #没有下载的权限

200 PORT command successful. Consider usingPASV.

550 Failed to open file.

ftp>

 

删除/etc/vsftpd/vsftpd.conf中的no_anon_password 这一行

[root@PAN-Server ~]# sed -i"/no_anon_password/d" /etc/vsftpd/vsftpd.conf

[root@PAN-Server ~]# killall -HUP vsftpd

C:\Users\pan>ftp 192.168.15.22

连接到 192.168.15.22

220 Welcome to blah FTP service.

用户(192.168.15.22:(none)): anonymous

331 Please specify the password.

密码:[email protected] #输入密码内容

530 Login incorrect.

登录失败。

ftp> quit

221 Goodbye.

测试:

C:\Users\pan>ftp 192.168.15.22

连接到 192.168.15.22

220 Welcome to blah FTP service.

用户(192.168.15.22:(none)): anonymous

331 Please specify the password.

密码:[email protected] #输入密码内容

230 Login successful.

ftp> ls

200 PORT command successful. Consider usingPASV.

150 Here comes the directory listing.

anon

hosts

mysql-5.1.71-1.el6.x86_64.rpm

passwd

226 Directory send OK.

ftp: 收到 52 字节,用时 0.01 10.40千字节/秒。

ftp>

 

  • vsftpd虚拟主机

vsftpd的虚拟主机是指一台主机上配置多个vsftpd服务,这种服务要搭建在不同的网卡上,或者基于不同的逻辑网卡,也就是说在一个网卡上配置子接口,但是要求在同一个网段上

环境 192.168.15.22 vsftpd服务器

                   添加一块逻辑网卡,IP192.168.15.44

         参照上面案例分析

1)、添加网卡地址为192.168.15.44 停止服务vsftpd

[root@PAN-Server ~]# ifconfig eth0:1192.168.15.44 netmask 255.255.255.0 up

[root@PAN-Server ~]# killall vsftpd

[root@PAN-Server ~]#

         2)、修改配置文件写入/etc/vsftpd/vsftpd.conf中以下内容

listen_address=192.168.15.22

         3)、重启服务vsftpd

[root@PAN-Server ~]# /usr/sbin/vsftpd/etc/vsftpd/vsftpd.conf &

[1] 16755

[root@PAN-Server ~]#

         4)、为第二个vsftpd服务器建立用户 并修改其家目录的权限

[root@PAN-Server ~]# useradd -d/var/shudaipiaoling -s /sbin/nologin shudaipiaoling

[1]+ Done                   /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf

[root@PAN-Server ~]# chown root:root/var/shudaipiaoling

[root@PAN-Server ~]# ll -d !$

ll -d /var/shudaipiaoling

drwx------ 4 root root 4096 Aug 14 17:21/var/shudaipiaoling

[root@PAN-Server ~]# chown ftp !$

chown ftp /var/shudaipiaoling

[root@PAN-Server ~]# !ll

ll -d /var/shudaipiaoling

drwx------ 4 ftp root 4096 Aug 14 17:21/var/shudaipiaoling

[root@PAN-Server ~]# chmod 754/var/shudaipiaoling

[root@PAN-Server ~]# ll -d/var/shudaipiaoling

drwxr-xr-- 4 ftp root 4096 Aug 14 17:21/var/shudaipiaoling

[root@PAN-Server ~]#

[root@PAN-Server ~]# passwd shudaipiaoling

Changing password for user shudaipiaoling.

New password:

BAD PASSWORD: it is toosimplistic/systematic

BAD PASSWORD: is too simple

Retype new password:

passwd: all authentication tokens updatedsuccessfully.

         5)、拷贝一份配置文件并修改

[root@PAN-Server ~]# cp /etc/vsftpd/vsftpd.

vsftpd.bak.conf  vsftpd.conf     

[root@PAN-Server ~]# cp/etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd_virtual.conf

[root@PAN-Server ~]# vim !$

vim /etc/vsftpd/vsftpd_virtual.conf

如下所示:

[root@PAN-Server ~]# cat !$

cat /etc/vsftpd/vsftpd_virtual.conf

listen_address=192.168.15.44

anonymous_enable=YES

ftp_username=shudaipiaoling

anon_root=/var/shudaipiaoling

#local_enable=YES

write_enable=YES

#write_enable=YES

local_umask=022

anon_world_readable_only=NO

#anon_upload_enable=YES

anon_upload_enable=YES

anon_mkdir_write_enable=YES

dirmessage_enable=YES

xferlog_enable=YES

connect_from_port_20=YES

#chown_uploads=YES

#chown_uploads=YES

#chown_username=whoever

#chown_username=root

# The name of log file whenxferlog_enable=YES and xferlog_std_format=YES

xferlog_file=/var/log/xferlog

xferlog_std_format=YES

idle_session_timeout=600

data_connection_timeout=120

#nopriv_user=ftpsecure

#async_abor_enable=YES

ascii_upload_enable=NO

ascii_download_enable=NO

ftpd_banner=Welcome to Virtual FTP service.

deny_email_enable=YES

banned_email_file=/etc/vsftpd/banned_emails

chroot_local_user=NO

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd/chroot_list

#ls_recurse_enable=YES

listen=YES

#listen_ipv6=YES

#pam_service_name=vsftpd

#userlist_enable=YES

#tcp_wrappers=YES

         6)、测试验证

[root@PAN-Server ~]# /usr/sbin/vsftpd/etc/vsftpd/vsftpd_virtual.conf

C:\>ftp 192.168.15.44

连接到 192.168.15.44

220 Welcome to Virtual FTP service.

用户(192.168.15.44:(none)): anonymous

331 Please specify the password.

密码:

230 Login successful.

 

  • 虚拟账户

 

虚拟账户的有点显而易见:虚拟账户密码破解之后对操作系统不会造成任何影响,操作系统中不需要建立用户,对虚拟账户的权限设置也比较方便,存储灵活。

虚拟账户只是vsftpd中的一种账户形式,还有上面介绍的匿名账户和本地账户

PAM PlugableAuthentication Module)可插拔认证模块完成通用认证的程序,可以被其他程序调用,是vsftpd支持的一种认证方式,当编辑完一个配置文件时,这个配置文件就决定了如何将认证模块插入到程序中,如此一来,PAM就被其他程序调用了

 

案例分析:

        

1、  建立三个虚拟账户virtual_user1virtual_user2virtual_user3,密码分别为shudaipiaoling1shudaipiaoling2shudaipiaoling3

2、  virtual_user1的主目录为virtual_dir1,只有读权限,virtual_user2的主目录为dir2,只有读权限

3、  virtual_user3的主目录为virtual_dir3,拥有所有权限

 

1)、创建ftpuser.txt文件

virtual_user1

shudaipiaoling1

virtual_user2

shudaipiaoling2

virtual_user3

shudaipiaoling3

 

         2)、生成虚拟账户数据库

[root@PAN-Server ~]# rpm -qa | grep db4

db4-utils-4.7.25-18.el6_4.x86_64

compat-db43-4.3.29-15.el6.x86_64

db4-4.7.25-18.el6_4.x86_64

db4-devel-4.7.25-18.el6_4.x86_64

db4-cxx-4.7.25-18.el6_4.x86_64

compat-db42-4.2.52-15.el6.x86_64

[root@PAN-Server ~]# db_load -T -t hash -f./ftpuser.txt /etc/vsftpd/ftpuser.db

-T      允许应用程序能够将文本文件转译载入进数据库。

-t     hash使用hash码加密

-f     指定包含用户名和密码文本文件。此文件格式要示:奇数行用户名、偶数行密码

         3)、新建/etc/pam.d/vsftpd_login文件

VsftpdPAM进行对接的配置文件,它与vsftpd.conf中的pam_service_name指定,默认指定为vsftpd 这里我更改为了vsftpd_login文件

[root@PAN-Server ~]# cat /etc/pam.d/vsftpd_login

auth                  required /lib64/security/pam_userdb.so      db=/etc/vsftpd/ftpuser.txt

account  required /lib64/security/pam_userdb.so      db=/etc/vsftpd/ftpuser.txt

解析:auth 模块提供了实际的认证过程,或许是提示口令输入并检查输入的口令

           Account模块负责检查并确认是否可以进行认证,账户是否过期等

         4)、建立所有虚拟账户的宿主账户

[root@PAN-Server ~]# useradd -M -s/sbin/nologin virtualuser

[root@PAN-Server ~]# mkdir/var/ftp/virtual_dir{1,2,3}

[root@PAN-Server ~]# ll /var/ftp/

total 16

drwxr-xr-x 3 root root 4096 Aug 14 03:31pub

drwxr-xr-x 2 root root 4096 Aug 15 23:30virtual_dir1

drwxr-xr-x 2 root root 4096 Aug 15 23:30virtual_dir2

drwxr-xr-x 2 root root 4096 Aug 15 23:30virtual_dir3

[root@PAN-Server ~]#chown virtualuser.root/var/ftp/virtual_dir3

[root@PAN-Server ~]# ll /var/ftp/

total 16

drwxr-xr-x 3 root        root 4096 Aug 14 03:31 pub

dr-xrwxr-x 2 virtualuser root 4096 Aug 1523:30 virtual_dir1

dr-xrwxr-x 2 virtualuser root 4096 Aug 1523:30 virtual_dir2

drwxr-xr-x 2 virtualuser root 4096 Aug 1523:30 virtual_dir3

5)、设置虚拟用户的权限 编辑virtual_user1virtual_user2virtual_user3主配置文件

[root@PAN-Server vsftpd]# cp vsftpd.confvirtual_user1

[root@PAN-Server vsftpd]# cp vsftpd.confvirtual_user2

[root@PAN-Server vsftpd]# cp vsftpd.confvirtual_user3

 

virtual_user3为例:配置文件如下

[root@PAN-Server vsftpd]# vim virtual_user3

[root@PAN-Server vsftpd]# cat !$

cat virtual_user3

listen_address=192.168.15.22

user_config_dir=/etc/vsftpd

guest_enable=YES

guest_name=virtualuser

virtual_use_local_privs=YES #虚拟账户权限和对应的系统账户权限相同

local_root=/var/ftp/virtual_dir3##### 这里修改其他虚拟账户的主目录对应即可

local_enable=YES

write_enable=YES

local_umask=022

dirmessage_enable=YES

xferlog_enable=YES

connect_from_port_20=YES

chown_uploads=NO

# The name of log file whenxferlog_enable=YES and xferlog_std_format=YES

xferlog_file=/var/log/xferlog

xferlog_std_format=YES

idle_session_timeout=600

data_connection_timeout=120

#nopriv_user=ftpsecure

#async_abor_enable=YES

ascii_upload_enable=NO

ascii_download_enable=NO

ftpd_banner=Welcome

#deny_email_enable=YES

#banned_email_file=/etc/vsftpd/banned_emails

chroot_local_user=NO

#chroot_list_enable=YES

#chroot_list_file=/etc/vsftpd/chroot_list

ls_recurse_enable=NO

listen=YES

#listen_ipv6=YES

pam_service_name=vsftpd_login

userlist_enable=YES

userlist_deny=NO

userlist_file=/etc/vsftpd/user_list

tcp_wrappers=YES

白名单:

[root@PAN-Server vsftpd]# cat/etc/vsftpd/user_list

# vsftpd userlist

# If userlist_deny=NO, only allow users inthis file

# If userlist_deny=YES (default), neverallow users in this file, and

# do not even prompt for a password.

# Note that the default vsftpd pam configalso checks /etc/vsftpd/ftpusers

# for users that are denied.

virtual_user1

virtual_user2

virtual_user3

仅允许15.0网段访问

[root@PAN-Server vsftpd]# cat/etc/hosts.allow

#

# hosts.allow   This file contains access rules which are used to

#                allowor deny connections to network services that

#                eitheruse the tcp_wrappers library or that have been

#                startedthrough a tcp_wrappers-enabled xinetd.

#

#                See'man 5 hosts_options' and 'man 5 hosts_access'

#                forinformation on rule syntax.

#                See'man tcpd' for information on tcp_wrappers

 

 

vsftpd:192.168.15. :allow

vsftpd:all:deny

[root@PAN-Server vsftpd]#

         6)、验证测试

[root@PAN-Client ~]#yum install �Cy lftp

[root@PAN-Client ~]# lftpvirtual_user3:[email protected]

lftp [email protected]:~> ls

-rw-r--r--    1 0       0             158 Aug 15 17:39hosts

-rw-r--r--    1 501     501         76583 Aug 15 18:17install.log

-rw-r--r--    1 0       0              39 Aug 15 17:39network

-rw-r--r--    1 0       0            1939 Aug 15 17:38passwd

lftp [email protected]:/> cd/home/virtualuser

cd: Access failed: 550 Failed to changedirectory. (/home/virtualuser)

lftp [email protected]:/> cd/boor/grub

cd: Access failed: 550 Failed to changedirectory. (/boor/grub)

lftp [email protected]:/>

lftp [email protected]:/> cd/boor/grub

cd: Access failed: 550 Failed to changedirectory. (/boor/grub)

lftp [email protected]:/> lcd/root

lcd ok, local cwd=/root

lftp [email protected]:/> getnetwork

39 bytes transferred                     

lftp [email protected]:/> putepel-release-5-4.noarch.rpm

12232 bytes transferred                                             

lftp [email protected]:/>mkdir anon

mkdir ok, `anon' created

lftp [email protected]:/> rm-rf passwd

rm ok, `passwd' removed      

 

       


你可能感兴趣的:(vsftpd,RHEL,6.5)