实验01:构建FTP服务器

.实验目标

   

   根据公司的业务发展要求,需要面向Internet 搭建一台FTP文件服务器,以提供公测软  

   件、市场资料的下载,以及员工的一些资源上传分享

 1. 测试默认安装vsftpd的结果

    匿名用户与本地用户是否可以登录

    匿名用户与本地用户登录的家目录在哪里

    匿名用户与本地用户登录后的权限

    匿名用户登录对共享根目录禁止有写入权限,否则禁止匿名账户登录!

2.禁止匿名用户登录

   修改FTP默认端口为2121

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

3.验证黑/白名单

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

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

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

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

   

. 实验步骤

   

一、测试默认安装vsftpd的结果

   

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

            匿名用户与本地用户是否可以登录

            匿名用户与本地用户登录的家目录在哪里

            匿名用户与本地用户登录后的权限

   

(一)服务端设置

   

一)IP设置

   

1. 设置ip地址

[root@dhcpser ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0

BOOTPROTO=none

ONBOOT=yes    

HWADDR=00:0c:29:48:71:56  (MAK地址)

IPADDR=192.168.10.253   (ip地址)

NETMASK=255.255.255.0   (子网掩码)

~           

              

2. 设置网关及主机名

[root@dhcpser ~]# vim /etc/sysconfig/network

NETWORKING=yes

NETWORKING_IPV6=yes

HOSTNAME=dhcpser.tarena.com  (主机名)

GATEWAY=192.168.10.254    (网关地址)

   

3. 配置搜索域

[root@dhcpser ~]#  vim /etc/hosts

# Do not remove the following line, or various programs

# that require network functionality will fail.

127.0.0.1               localhost.localdomain localhost

::1             localhost6.localdomain6 localhost6

192.168.10.253  dhcpser.tarena.com       dhcpser (搜索域)

   

4. 重启服务

[root@dhcpser ~]# service network restart

[root@dhcpser ~]# chkconfig network on

   

5. 验证 

[root@dhcpser ~]# ifconfig eth0(验证ip地址)

[root@dhcpser ~]# route -n(验证网络)

[root@dhcpser ~]# hostname (验证主机名)

[root@dhcpser ~]# ping dhcpser.tarena.com(验证搜索域)

   

二)安装软件包

   

 1 检测是否安装dhcp

[root@dhcpser ~]# rpm -q dhcp

       放入RHEL5.9 iso镜像

   

2. 查看安装软件

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

[root@dhcpser Server]# ls *vsftpd*

vsftpd-2.0.5-28.el5.x86_64.rpm

   

3. 安装vsftpd

[root@localhost Server]# rpm -ivh vsftpd-2.0.5-28.el5.x86_64.rpm

warning: vsftpd-2.0.5-28.el5.x86_64.rpm: Header V3 DSA signature:  

NOKEY, key ID 37017186

Preparing...                                                 

########################################### [100%]

   1:vsftpd                                             

    ########################################### [100%]

   

   

4. 检测安装结果

[root@dhcpser Server]# rpm -q vsftpd

vsftpd-2.0.5-28.el5

   

5. 启动vsftpd服务

[root@dhcpser Server]# service vsftpd restart

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

   

 6. 文件输出

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

   

7.新建用户

[root@localhost ~]# useradd kaka

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

Changing password for user kaka.

passwd: all authentication tokens updated successfully.

   

(二)客户端测试

   

     1. 匿名访问的用户ftp

[root@localhost ~]#  ftp 192.168.10.253//使用ftp命令访问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   //匿名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,234,9)

150 Here comes the directory listing.

-rw-r--r--    1 0        0           11571 Sep 13 20:02 etc.txt

226 Directory send OK.

ftp> get etc.txt      //下载

local: etc.txt remote: etc.txt

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

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

226 File send OK.

11571 bytes received in 8.9e-05 seconds (1.3e+05 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,142,214)

550 Permission denied.    //失败

ftp> quit

221 Goodbye.

   

     2. 本地用户访问

[root@localhost ~]# lftp 192.168.10.253

lftp 192.168.10.253:~> user kaka

口令: 

lftp kaka@192.168.10.253:~> put install.log   //上传

33139 bytes transferred                  //成功      

lftp kaka@192.168.10.253:~> ls

-rw-r--r--    1 500      500         33139 Sep 13 20:26 install.log

 tp kaka@192.168.10.253:~> get etc.txt  //下载

get: etc.txt: file already exists and xfer:clobber is unset 

//成功 

 tp kaka@192.168.10.253:~>!ls

anaconda-ks.cfg  etc.txt      install.log.syslog

Desktop          install.log

   

. 结果

   

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

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

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

   

.   问题和经验总结 

   

故障现象:用户登录失败

[root@localhost ~]#  ftp 192.168.10.253

ftp: connect: No route to host

ftp> 

   

解决办法:关闭防火墙

[root@localhost ~]# service iptables stop

   

解决办法:查看服务器IP地址及端口号

  [root@localhost~]#vim /etc/sysconfig/network-scripts/ifcfg-eth0

  [root@localhost ~]# ifconfig 

   

二.禁止匿名用户登录修改FTP默认端口及禁锢本地用户在自己家目录

   

   实验要求:禁止匿名用户登录

           修改FTP默认端口为2121

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

   

(一)在服务端配置

   

    1. 修改/etc/vsftpd/文件

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

   [root@dhcpser vsftpd]# ls

    ftpusers  user_list  vsftpd.conf  vsftpd_conf_migrate.sh

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

   [root@dhcpser vsftpd]# vim vsftpd.conf

   ...

   12 anonymous_enable=NO  //关闭匿名FTP访问

   ...

   119 listen_port=2121

   120 chroot_local_user=YES //禁锢本地用户 --> 宿主目录

     注:

anonymous_enable=YES//(默认)允许匿名登录

anon_upload_enable=YES//允许匿名上传文件

anon_mkdir_write_enable=YES//允许匿名创建目录

anon_other_write_enable=YES//允许其他写入权限

write_enable=YES//(默认)允许写入(全局)

anon_umask=022//设置上传文件权限掩码

   

[root@dhcpser vsftpd]# service vsftpd restart

关闭 vsftpd:                                              [确定]

为 vsftpd 启动 vsftpd:                                 [确定]

   

2. 重启vsftpd服务

[root@dhcpser vsftpd]# service vsftpd restart

关闭 vsftpd:                                              [确定]

为 vsftpd 启动 vsftpd:                                 [确定]

   

3. 查看端口

[root@dhcpser vsftpd]# netstat -tulnp | grep vsftpd

tcp 0  0 0.0.0.0:2121 0.0.0.0:*  LISTEN      4879/vsftpd     

      

(二)客户端测试

[root@localhost ~]# ftp 192.168.10.253 2121

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:

530 Login incorrect.

Login failed.                 //登录失败

ftp> quit

221 Goodbye.

[root@localhost ~]# ftp 192.168.10.253 2121

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): kaka        //本地用户

331 Please specify the password.

Password:

230 Login successful.                  //成功

Remote system type is UNIX.

Using binary mode to transfer files.

ftp> pwd

257 "/"                 //登入位置已变为"/",

                          //实际是kaka的宿主目录

ftp> ls

227 Entering Passive Mode (192,168,10,253,113,26)

150 Here comes the directory listing.

-rw-r--r--    1 500      500         33139 Sep 13 20:26 install.log

226 Directory send OK.

   

三.黑/白名单

   

实验要求:验证黑/白名单

   

(一)服务端

   

1. 新建用户

[root@dhcpser ~]#  useradd jerry

[root@dhcpser ~]# useradd mike

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

Changing password for user jerry.

passwd: all authentication tokens updated successfully.

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

Changing password for user mike.

passwd: all authentication tokens updated successfully.

   

2. 黑名单文件:/etc/vsftpd/ftpusers

[root@dhcpser ~]# vim /etc/vsftpd/ftpusers 

kaka

   

3. 查看

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

kaka

   

(二)客户端

   

1. 验证kaka能否登录FTP

[root@localhost ~]# ftp 192.168.10.253 2121

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): kaka

530 Permission denied.

Login failed.

ftp> quit

221 Goodbye.

   

结论:不能登录

   

(一)服务端

   

4. 黑/白名单:/etc/vsftpd/user_list

[root@dhcpser ~]# vim  /etc/vsftpd/user_list 

jerry

   

5. 查看

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

jerry

   

(二)客户端

   

2. 验证jerry能否登录FTP

[root@localhost ~]# ftp 192.168.10.253 2121

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): jerry

331 Please specify the password.

Password:

530 Login incorrect.

Login failed.

ftp> quit

221 Goodbye.

   

结论:不能登录

   

6. 修改/etc/vsftpd/vsftpd.conf文件

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

...

121 userlist_deny=NO

   

7. 启动vsftpd服务

oot@dhcpser ~]# service vsftpd restart

关闭 vsftpd:                                              [确定]

为 vsftpd 启动 vsftpd:                                 [确定]

   

(二)客户端

   

3. 验证jerry能否登录FTP

[root@localhost ~]# ftp 192.168.10.253 2121

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): jerry

331 Please specify the password.

Password:

230 Login successful.

Remote system type is UNIX.

Using binary mode to transfer files.

ftp> quit

221 Goodbye.

   

结论:登录成功

   

  4.  验证mike能否登录FTP

[root@localhost ~]# ftp 192.168.10.253 2121

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): kike

530 Permission denied.

Login failed.

ftp> quit

221 Goodbye

   

验证结论:登录失败

   

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

     面添加的账户去掉

   

.   问题和经验总结

   

黑名单文件:/etc/vsftpd/ftpusers

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

   

1)将user_list作为黑名单(缺省)

userlist_enable=YES//(默认)启用user_list列表文件

userlist_deny=YES//(默认)

   

2)改将user_list作为白名单

userlist_enable=YES//(默认)启用user_list列表文件

userlist_deny=NO//将user_list作为白名单

   

   

四.连接限制、下载速度限制

   

  实验要求:本地用户登录到/data/ftproot目录

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

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

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

   

(一).客户端

   

1. 新建用户

[root@dhcpser ~]# useradd down

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

Changing password for user up.

passwd: all authentication tokens updated successfully.

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

Changing password for user down.

passwd: all authentication tokens updated successfully.

   

2. 修改/etc/vsftpd/vsftpd.conf文件

...

 12 anonymous_enable=NO

...

 18 write_enable=YES

...

117 userlist_enable=YES

...

121 userlist_deny=NO   //将user_list作为白名单

122 local_root=/data/ftproot

123 max_clients=20   //允许的最大并发连接数

124 max_per_ip=2       //每个IP地址最多允许多少连接

125 local_max_rate=100000  //本地用户下载速度,Byte/s

   

3.启动vsftpd服务

[root@dhcpser ~]# service vsftpd restart

关闭 vsftpd:                                              [确定]

为 vsftpd 启动 vsftpd:                                 [确定]

   

4. 设置权限

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

5. Up,down加入黑/白名单:/etc/vsftpd/user_list

[root@dhcpser ~]# vim /etc/vsftpd/user_list 

up

Down

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

up

down

   

5.建下载测试文件

[root@dhcpser ~]# dd if=/dev/zero of=/data/ftproot/local.tgz

 bs=1M count=1000

1000+0 records in

1000+0 records out

1048576000 bytes (1.0 GB) copied, 7.60703 seconds, 138 MB/s

   

. 结果验证

   

[root@dhcpser~]#wget   

ftp://up:redhat@192.168.10.253:2121/local.tgz

--2014-09-1423:54:47--  

ftp://up:*password*@192.168.10.253:2121/local.tgz

           => `local.tgz'

Connecting to 192.168.10.253:2121... 已连接。

正在以 up 登录 ... 登录成功!

==> SYST ... 完成。    ==> PWD ... 完成。

==> TYPE I ... 完成。  ==> 不需要 CWD。

==> SIZE local.tgz ... 1048576000

==> PASV ... 完成。    ==> RETR local.tgz ... 完成。

长度:1048576000 (1000M)

   

 0% [                   ] 6,963,200   97.7K/seta 2h 53m  

   

   

. 问题和经验总结

   

建下载测试文件

dd if=/dev/zero of=/var/ftp/anon.tgz bs=1M count=100

dd if=/dev/zero of=/home/用户名/local.tgz bs=1M count=100 

原文地址:https://www.cnblogs.com/jonathanyue/p/9301199.html