FTP服务器软件:

  FTP服务使用FTP协议来进行文件的上传和下载。

          注:如果新下载了一个软件而不会安装,则先将软件解压,然后进入软的目录,打如下命令来查看软             件的安装帮助:

         #man   INSTALL   #man   README


实验拓扑:

         Linux Client

-----RHEL5.9vmnet1----------vmnet1

         Win7 Client

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

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

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

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

[root@dhcpser ~]# rpm -q vsftpd         //查询是否安装

package vsftpd is not installed

[root@dhcpser ~]# cd /misc/cd/Server

[root@dhcpser Server]# ls *vsftpd*      //查找包

vsftpd-2.0.5-28.el5.x86_64.rpm

[root@dhcpser Server]# rpm -ivh vsftpd-2.0.5-28.el5.x86_64.rpm  [root@dhcpser Server]# service vsftpd restart

[root@dhcpser Server]# chkconfig vsftpd on

[root@dhcpser Server]# ls -lh /etc > /var/ftp/pub/etc.txt

[root@dhcpser ~]# useradd kaka

[root@dhcpser ~]# echo "redhat" | passwd --stdin kaka

Changing password for user kaka.

passwd: all authentication tokens updated successfully.

 

验证:(客户端测试

[root@localhost ~]# ftp 192.168.10.253  //登录FTP

Connected to 192.168.10.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

250 Directory successfully changed.

ftp> ls  

227 Entering Passive Mode (192,168,10,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 etc.txt     // 下载

local: etc.txt remote: etc.txt

227 Entering Passive Mode (192,168,10,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  etc.txt      install.log.syslog

Desktop          install.log

ftp> put install.log                //上传

local: install.log remote: install.log  

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

550 Permission denied.

ftp> quit

[root@localhost ~]# lftp 192.168.10.253    // 以 LFTP 登录

lftp 192.168.10.253:~> user kaka

口令

lftp [email protected]:~> put install.log

 

 

实验二

禁止匿名用户登录

修改FTP默认端口为2121

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

 

实验步骤

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

[root@ser01 vsftpd]# cp vsftpd.conf vsftpd.conf.bak   // 备份配置文件

[root@ser01 vsftpd]# vim vsftpd.conf   // 进入配置文件

...

 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.10.253 2121

 

 

实验三验证黑/白名单

/etc/vsftpd/ftpusers黑名单

/etc/vsftpd/user_list

[root@ser01 ~]# useradd jerry

[root@ser01 ~]# useradd mike

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

Changing password for user jerry.

passwd: all authentication tokens updated successfully.

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

Changing password for user mike.

passwd: all authentication tokens updated successfully.

[root@ser01 ~]# grep kaka /etc/vsftpd/ftpusers 

kaka

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

[root@ser01 ~]# grep jerry /etc/vsftpd/user_list 

jerry

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

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

...

121 userlist_deny=NO

[root@ser01 ~]# service vsftpd restart

//请问kakajerrymike谁可以登录???

实验完毕请将主配置文件121 userlist_deny=NO注释user_list ftpusers里面添加的账户去掉

 

 如果实验不成功请关闭防火墙

关闭防火墙

[root@localhost ~]# iptables -F

[root@localhost ~]# service iptables save

 

关闭Selinux

[root@localhost ~]# vim /etc/sysconfig/selinux 

...

SELINUX=disabled

...

[root@localhost ~]# setenforce 0

 [root@localhost ~]# getenforce 

Disabled

 

 

实验四

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

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

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

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

[root@ser01 ~]# mkdir -p /data/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   // 启用userlist

118 local_max_rate:100    // 限制下载速度

119 max_clients=20     //  客户端最多并发

120 max_per_ip=2      //  每个IP最多并发 

121 userlist_deny=NO  // 不禁用userlist 中的用户

122 local_root=/data/ftproot

[root@ser01 ~]# service vsftpd restart

[root@ser01 ~]# setfacl -m u:up:rwx /data/ftproot/  // 定义用户UP可以写

[root@ser01 ~]# tail -n 2 /etc/vsftpd/user_list    // 黑白名单加入up down

up

down

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

 

 

测试

[root@localhost ~]# wget  ftp://up:redhat // 用户名密码@192.168.10.253:2121 //端口号 /local.tgz //下载的文件位置

 

wget  ftp://up:redhat // 用户名密码@192.168.10.253 /local.tgz