本节内容介绍:
一、FTP简介
二、vsftpd服务器的安装
三、vsftpd服务器配置
四、vsftpd案例分析
五、vsftpd虚拟主机
六、虚拟账户
FTP简介
FTP(File Transfer Protocol)是Internet上提供文件传输的协议,,它采用c/s结构的工作模式。FTP的初衷就是为了解决存在于复杂的计算机环境中的操作系统多样化的问题,FTP为所有的使用此服务的主机建立了统一的机制协议,这样尽管大家都个性十足,但是都遵守FTP协议,文件的沟通传输也就能顺利畅通了。FTP默认会使用两个端口号,20和21 通过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.1―192.168.15.254的用户可以连接FTP服务器,则在/etc/hosts.allow文件中添加以下内容:
vsftpd:192.168.15. :allow
vsftpd:all :deny
②用户访问控制:
对于用户的访问控制可以通过/etc目录下的vsftpd/user_list和ftpusers文件来实现。
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_list和ftpusers中都有某个用户时,那么这个用户是不能够访问FTP的,即ftpusers的优先级要高)。默认情况下vsftpd.user_list和ftpusers,这两个文件已经预设置了一些不允许访问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服务器
添加一块逻辑网卡,IP:192.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_user1、virtual_user2、virtual_user3,密码分别为shudaipiaoling1、shudaipiaoling2、shudaipiaoling3
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文件
Vsftpd与PAM进行对接的配置文件,它与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_user1、virtual_user2和virtual_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