实验拓扑:

        Linux Client

-----RHEL5.9(vmnet1)----------(vmnet1)

        Win7 Client

实验一:测试默认安装vsftpd的结果

匿名用户与本地用户都可以登录

匿名用户登录到/var/ftp,只能下载不能上传

本地用户登录到本地用户的家目录,可以上传和下载

服务器端设置

[root@dhcpser ~]# cd /misc/cd/Server                 //进入RHEL5.9光盘

[root@dhcpser Server]# ls *vsftpd*                   //查看有vsftp安装包

vsftpd-2.0.5-28.el5.x86_64.rpm

[root@dhcpser Server]# rpm -ivh vsftpd-2.0.5-28.el5.x86_64.rpm   //安装vsftpd

[root@dhcpser Server]# service vsftpd restart          //启动vsftpd服务

[root@dhcpser Server]# chkconfig vsftpd on             //设置vsftpd开机自启动

[root@dhcpser Server]# touch /var/ftp/pub/test1.txt        //创建测试文件  

[root@dhcpser ~]# useradd kaka

[root@dhcpser ~]# echo "123456" | passwd --stdin kaka   //为用户kaka设置密码

Changing password for user kaka.

passwd: all authentication tokens updated successfully.


验证:(客户端测试)

[root@localhost ~]# ftp 192.168.1.253           //连接ftp服务器

Connected to 192.168.1.253.

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.10.253:root): ftp              // 匿名用户登录

331 Please specify the password.

Password:

230 Login successful.                      //登陆成功

Remote system type is UNIX.

Using binary mode to transfer files.

ftp> cd pub           //进入pub目录

250 Directory successfully changed.

ftp> ls  

227 Entering Passive Mode (192,168,1,253,75,98)

150 Here comes the directory listing.

-rw-r--r--    1 0        0           11627 Jun 13 02:04 etc.txt

226 Directory send OK.

ftp> get test1.txt         //下载测试文件

local: etc.txt remote: etc.txt

227 Entering Passive Mode (192,168,1,253,136,141)

150 Opening BINARY mode data connection for etc.txt (11627 bytes).

226 File send OK.

11627 bytes received in 0.00082 seconds (1.4e+04 Kbytes/s)

ftp> !ls                                               //!在外部执行命令,查看


下载结果

anaconda-ks.cfg  test1.txt      install.log.syslog    //下载test.txt成功

Desktop          install.log

ftp> put install.log                                 //上传文件

local: install.log remote: install.log

227 Entering Passive Mode (192,168,1,253,46,17)

550 Permission denied.                            //无权限拒绝

ftp> quit                                  //退出


...

实验二:

禁止匿名用户登录

修改FTP默认端口为2121

禁锢本地用户在自己家目录


实验步骤:

[root@ser01 ~]# cd /etc/vsftpd/

[root@ser01 vsftpd]# cp vsftpd.conf vsftpd.conf.bak            //备份vsftpd主配


置文件

[root@ser01 vsftpd]# vim vsftpd.conf                           //编辑vsftpd主配


置文件

...

 12 anonymous_enable=NO                                        //不允许匿名用户


访问

...

119 listen_port=2121                                           //监听端口2121

120 chroot_local_user=YES                                      

[root@ser01 vsftpd]# service vsftpd restart                   //重启服务

[root@ser01 vsftpd]# netstat -tulnp | grep vsftpd             //查看监听端口

tcp        0      0 0.0.0.0:2121         0.0.0.0:*           LISTEN   


4705/vsftpd 

测试:

ftp 192.168.1.253 2121           //登录ftp

Name (192.168.1.253:root): kaka   //用户kaka登录

331 Please specify the password.

Password:

230 Login successful.

Remote system type is UNIX.

Using binary mode to transfer files.

ftp> pwd                        //查看当前目录,为伪根目录(即用户家目录)

257 "/"


 

实验三:验证黑/白名单

/etc/vsftpd/ftpusers//黑名单

/etc/vsftpd/user_list  //黑/白名单

[ root@ser01 ~]# useradd jerry                //添加用户jerry

[root@ser01 ~]# useradd mike

[root@ser01 ~]# echo "123456" | passwd --stdin jerry    //为用户jerry设置密码

Changing password for user jerry.

passwd: all authentication tokens updated successfully.

[root@ser01 ~]# echo "123456" | passwd --stdin mike

Changing password for user mike.

passwd: all authentication tokens updated successfully.

[root@ser01 ~]# grep kaka /etc/vsftpd/ftpusers     //查看用户kaka是否在黑名单   

kaka                                             //用户kaka在黑名单中

//请问kaka能否登录FTP??

[root@ser01 ~]# grep jerry /etc/vsftpd/user_list //查看用户jerry是否在黑白名单 

jerry

//请问jerry能否登录FTP???

[root@ser01 ~]# vim /etc/vsftpd/vsftpd.conf        //编辑vsftpd主配置文件

...

121 userlist_deny=NO                               //拒绝用户列表选择NO

[root@ser01 ~]# service vsftpd restart

//请问kaka、jerry、mike谁可以登录???

只有jerry可以登录

实验完毕,请将主配置文件121 userlist_deny=NO注释,将user_list和 ftpusers里面添加


的账户去掉


实验四:

本地用户登录到/data/ftproot目录

up上传/下载,down仅下载。拒绝所有用户登录包括匿名用户

最多20个并发,每IP地址最多2个并发

限制下载速度限制为100KB/s

[root@ser01 ~]# mkdir -p /data/ftproot          //新建文件夹ftproot

[root@ser01 ~]# useradd up

[root@ser01 ~]# useradd down

[root@ser01 ~]# echo "redhat" | passwd --stdin up

[root@ser01 ~]# echo "redhat" | passwd --stdin down

[root@ser01 ~]# vim /etc/vsftpd/vsftpd.conf

...

 12 anonymous_enable=NO                 //关闭匿名用户访问

...

 18 write_enable=YES                         //允许可写入

...

117 userlist_enable=YES                   //启用黑白名单

...

121 userlist_deny=NO                       //是否启用黑白名单拒绝,不启用

122 local_root=/data/ftproot             //指定vsftp目录

123 max_clients=20                       //最大连接数

124 max_per_ip=2                            //最大并发数

125 local_max_rate=100000                   //最高下载速度

[root@ser01 ~]# service vsftpd restart

[root@ser01 ~]# setfacl -m u:up:rwx /data/ftproot/

[root@ser01 ~]# tail -n 2 /etc/vsftpd/user_list 

up

down

[root@ser01 ~]# dd if=/dev/zero of=/data/ftproot/local.tgz bs=1M  count=1000//创建测试文件


测试:

[root@localhost~]# wget ftp://up:[email protected]:2121/local.tgz//下载文件测试下载速度




vsftpd.conf主配置文件解释

listen       是否以独立运行的方式监听服务

listen_address设置监听FTp服务的IP地址

listen_port设置监听FTP服务的端口

write_enable是否启用写入权限

download_enable是否允许下载

userlist_enable是否启用user_list列表文件

userlist_deny是否禁用user_list中的用户

max_clients限制并发的客户端个数

max_per_ip限制每个客户机IP的并发连接数

anonymous_enable是否启用匿名访问

anon_umask匿名上传的权限掩码

anon_root匿名FTP的根目录

anon_upload_enable是否允许上传文件

anon_mkdir_write_enable是否允许建目录

anon_other_write_enable其他写入控制

anon_max_rate最大传输速度(字节/秒)

local_enable是否启用本地用户

local_umask本地用户上传的权限掩码

local_root本地用户的FTP根目录

chroot_local_user是否禁锢在主目录

local_max_rate最大传输速率(字节/秒)