1.1 任务概况

1.1.1 业务场景

在公司的一台CentOS7上安装vsftpd服务器软件,提供共享目录文件,能实现基本的匿名访问。

1.1.2 任务要求

内容主要包括:

  1. 了解基本的FTP服务结构
  2. 理解FTP两种模式
  3. 用光盘镜像搭建本地yum软件仓库
  4. 安装vsftpd和ftp软件
  5. 进行匿名访问测试

    1.1.3 组织评价

  6. 可以独立或结对完成

  7. 按照任务的完成程度评价等次
  8. 按照任务的完成质量评价等次
  9. 按照任务的排名先后评价等次
  10. 按照课堂纪律和参与情况奖励或扣分

    1.2 知识导学

    1.2.1 FTP服务

    FTP是FileTransferProtocol(文件传输协议)的英文简称。用于Internet上的控制文件的双向传输。
    在FTP的使用当中,会遇到两个概念:”下载”(Download)和”上传”(Upload)。”下载”文件就是从远程主机拷贝文件至自己的计算机上;”上传”文件就是将文件从自己的计算机中拷贝至远程主机上。用Internet语言来说,用户可通过客户机程序向(从)远程主机上传(下载)文件。

FTP的服务器和客户端双向通信时,一般有两个连接,一个传输指令,一个传输数据。所以在端口上相对复杂。和具体的FTP的传输通信模式有关。
FTP支持两种模式:Standard (PORT方式,主动方式),Passive (PASV,被动方式)。先来看PORT模式

1.2.1.1 主动(PORT)模式-相对服务器的数据信道

FTP客户端在客户端建立一个socket,端口为B,并通过FTP控制连接的通道发送PORT命令,告诉FTP服务器:“客户端已经对B端口进行了监听”;然后FTP服务器主动与FTP客户端的B端口建立连接。

  1. FTP 客户端首先和服务器的TCP 21端口建立连接,用来发送命令;
  2. 客户端需要接收数据的时候在这个通道上发送PORT命令。PORT命令包含了客户端用什么端口接收数据。
  3. 在传送数据的时候,服务器端通过自己的TCP 20端口连接至客户端的指定端口发送数据。
  4. FTP server必须和客户端建立一个新的连接用来传送数据。

注意:许多内网的客户端不能用PORT模式登陆FTP服务器,因为从服务器的TCP 20无法和内部网络的客户端建立一个新的连接,造成无法工作。

image.png

1.2.1.2 被动(PASV)模式-相对服务器的数据信道

FTP客户端通过FTP的控制连接的通道,发送PASV命令,告诉FTP服务器:“我要建立数据连接”;然后FTP服务器会随机启动一个端口X的监听,并在返回信息中告诉FTP客户端:“可以与X端口建立连接”;最后,FTP客户端主动与FTP服务器的X端口建立连接。

  1. FTP 客户端首先和服务器的TCP 21端口建立连接,用来发送命令;
  2. 建立连接后发送Pasv命令。
  3. 服务器收到Pasv命令后,打开一个临时端口(端口号大于1023小于65535)并且通知客户端在这个端口上传送数据的请求
  4. 客户端连接FTP服务器此端口,然后FTP服务器将通过这个端口传送数据。

注意:很多 防火墙在设置的时候都是不允许接受外部发起的连接的,所以许多位于防火墙后或内网的FTP服务器不支持PASV模式,因为客户端无法穿过防火墙打开FTP服务器的高端端口;
image.png

1.2.1.3 与Samba的异同

  1. Samba是用于Windows为主的园区网内部的文件共享服务;而ftp是一种标准的Internet服务;
  2. 访问路径上,Samba采用UNC格式 \ip\pub ; 而FTP采用 ftp://ip/pub的路径格式
  3. Samba更多的还是用在Window网络邻居、打印机共享等方面。

    1.2.1.4 匿名访问

  4. 一般来讲,用户想使用FTP服务器,要先注册为用户,才能上传或下载。

  5. 但FTP提供了一种匿名访问的机制,用户可通过它连接到远程主机上,并从其下载文件,而无需成为其注册用户。
  6. 为确保安全,提供公共匿名访问的目录权限,一般只能下载,不能上传。如需上传,也只能给定临时目录。
  7. FTP服务器管理员建立了一个特殊的用户ID,名为anonymous, Internet上的任何人在任何地方都可使用该用户ID。匿名用户对应的本地用户是ftp。

    1.3 任务分解

    1.3.1 软件安装

    1.3.1.1 搭建软件仓库

    具体参见 模块6的任务1

    1.3.1.2 安装vsftpd和ftp客户端

    1. [root@w ~]# yum list installed | grep vsftpd ## 检查是否安装
    2. [root@w ~]# yum install vsftpd ftp -y ## 安装

    1.3.2 配置匿名访问

    一、确认匿名帐号和本地目录

  8. vsftpd的匿名帐号是anonymous,对应的本地用户是ftp,可以通过/etc/passwd文件中来检查

  9. 匿名ftp用户的主目录是 /var/ftp
  10. 提供的下载目录是/var/ftp/pub,不上传。
  11. 如果需要上传,可以新建目录,如/var/ftp/uploads
    1. [root@w ~]# cat /etc/passwd | grep ftp
    2. ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin ## 匿名本地用户ftp存在
    3. [root@w ~]# ll -d /var/ftp
    4. drwxr-xr-x 4 root root 29 6 4 00:40 /var/ftp ## ftp是文件的other用户,有r-x权限
    5. [root@w ~]# echo 1 > /var/ftp/pub/test.txt ## 创建一个能下载的测试样本文件

二、修改主配置文件

  1. 先备份
  2. 在修改或确认匿名访问是否启用
    1. [root@w ~]# cd /etc/vsftpd
    2. [root@w vsftpd]# cp vsftpd.conf vsftpd.conf.bak_0
    3. [root@w vsftpd]# grep -v '#' /etc/vsftpd.conf.bak_0 > vsftpd.conf
    4. [root@w vsftpd]# vim vsftpd.conf
    5. ''' 修改或确认
    6. anonymous_enable=YES
    7. '''

三、开启并放行服务

  1. [root@w ~]# systemctl start vsftpd
  2. [root@w ~]# firewall-cmd --list-all 查看是否已放行ftp。如果没放行,则添加
  3. [root@w ~]# firewall-cmd --perm --add-service=ftp
  4. [root@w ~]# firewall-cmd --reload
  5. [root@w ~]# setenforce 0

四、测试和验证
( 一)使用Windows的资源管理器访问

  1. 双击我的电脑图标,打开资源管理器(或WIN+E)
  2. 在地址栏输入 ftp://192.168.X.Y/ // 假如ftp服务器IP地址是192.168.129.133,如下图

image.png

  1. 在窗口空白处,右键登录,勾选匿名登录

image.png
image.png
(二)使用ftp客户端测试

  1. [root@w ~]# ftp 127.0.0.1 ## 在ftp服务器本机上测试,也可以是本机真实IP地址
  2. Connected to 127....
  3. 220 (vsftpd 3.)
  4. Name (127.0.0.1:root):anonymous
  5. Password: aa@
  6. ftp>

(三)使用专用的FTP客户端filezilla

1.3.3 配置匿名用户上传

如果要开启匿名上传的功能,不建议在/var/ftp/pub上开启,另建一个临时目录/var/ftp/uploads开启。
在上一步骤的基础上,继续。

一、修改配置文件

  1. [root@w vsftpd]# vim vsftpd.conf
  2. ''' 修改
  3. anonymous_enable=YES
  4. anon_upload_enable=YES
  5. anon_mkdir_write_enable=YES
  6. anon_other_write_enable=YES
  7. anon_world_readable_only=NO
  8. write_enable=YES

二、创建供匿名用户上传的目录,授予权限

  1. [root@w ~]# mkdir -p /var/ftp/uploads ## 创建匿名上传目录
  2. [root@w ~]# chown ftp:ftp /var/ftp/uploads -R ## 将目录所有者改为ftp匿名本地帐号
  3. [root@w ~]# ll -d /var/ftp/uploads
  4. drwxr-xr-x 2 ftp ftp 6 6 4 17:54 /var/ftp/uploads