1.1 任务概况
1.1.1 业务场景
在公司的一台CentOS7上安装vsftpd服务器软件,提供共享目录文件,能实现基本的匿名访问。
1.1.2 任务要求
内容主要包括:
- 了解基本的FTP服务结构
- 理解FTP两种模式
- 用光盘镜像搭建本地yum软件仓库
- 安装vsftpd和ftp软件
-
1.1.3 组织评价
可以独立或结对完成
- 按照任务的完成程度评价等次
- 按照任务的完成质量评价等次
- 按照任务的排名先后评价等次
- 按照课堂纪律和参与情况奖励或扣分
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端口建立连接。
- FTP 客户端首先和服务器的TCP 21端口建立连接,用来发送命令;
- 客户端需要接收数据的时候在这个通道上发送PORT命令。PORT命令包含了客户端用什么端口接收数据。
- 在传送数据的时候,服务器端通过自己的TCP 20端口连接至客户端的指定端口发送数据。
- FTP server必须和客户端建立一个新的连接用来传送数据。
注意:许多内网的客户端不能用PORT模式登陆FTP服务器,因为从服务器的TCP 20无法和内部网络的客户端建立一个新的连接,造成无法工作。
1.2.1.2 被动(PASV)模式-相对服务器的数据信道
FTP客户端通过FTP的控制连接的通道,发送PASV命令,告诉FTP服务器:“我要建立数据连接”;然后FTP服务器会随机启动一个端口X的监听,并在返回信息中告诉FTP客户端:“可以与X端口建立连接”;最后,FTP客户端主动与FTP服务器的X端口建立连接。
- FTP 客户端首先和服务器的TCP 21端口建立连接,用来发送命令;
- 建立连接后发送Pasv命令。
- 服务器收到Pasv命令后,打开一个临时端口(端口号大于1023小于65535)并且通知客户端在这个端口上传送数据的请求
- 客户端连接FTP服务器此端口,然后FTP服务器将通过这个端口传送数据。
注意:很多 防火墙在设置的时候都是不允许接受外部发起的连接的,所以许多位于防火墙后或内网的FTP服务器不支持PASV模式,因为客户端无法穿过防火墙打开FTP服务器的高端端口;
1.2.1.3 与Samba的异同
- Samba是用于Windows为主的园区网内部的文件共享服务;而ftp是一种标准的Internet服务;
- 访问路径上,Samba采用UNC格式 \ip\pub ; 而FTP采用 ftp://ip/pub的路径格式
Samba更多的还是用在Window网络邻居、打印机共享等方面。
1.2.1.4 匿名访问
一般来讲,用户想使用FTP服务器,要先注册为用户,才能上传或下载。
- 但FTP提供了一种匿名访问的机制,用户可通过它连接到远程主机上,并从其下载文件,而无需成为其注册用户。
- 为确保安全,提供公共匿名访问的目录权限,一般只能下载,不能上传。如需上传,也只能给定临时目录。
FTP服务器管理员建立了一个特殊的用户ID,名为anonymous, Internet上的任何人在任何地方都可使用该用户ID。匿名用户对应的本地用户是ftp。
1.3 任务分解
1.3.1 软件安装
1.3.1.1 搭建软件仓库
1.3.1.2 安装vsftpd和ftp客户端
[root@w ~]# yum list installed | grep vsftpd ## 检查是否安装
[root@w ~]# yum install vsftpd ftp -y ## 安装
1.3.2 配置匿名访问
一、确认匿名帐号和本地目录
vsftpd的匿名帐号是
anonymous
,对应的本地用户是ftp
,可以通过/etc/passwd
文件中来检查- 匿名ftp用户的主目录是
/var/ftp
。 - 提供的下载目录是
/var/ftp/pub
,不上传。 - 如果需要上传,可以新建目录,如
/var/ftp/uploads
。[root@w ~]# cat /etc/passwd | grep ftp
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin ## 匿名本地用户ftp存在
[root@w ~]# ll -d /var/ftp
drwxr-xr-x 4 root root 29 6月 4 00:40 /var/ftp ## ftp是文件的other用户,有r-x权限
[root@w ~]# echo 1 > /var/ftp/pub/test.txt ## 创建一个能下载的测试样本文件
二、修改主配置文件
- 先备份
- 在修改或确认匿名访问是否启用
[root@w ~]# cd /etc/vsftpd
[root@w vsftpd]# cp vsftpd.conf vsftpd.conf.bak_0
[root@w vsftpd]# grep -v '#' /etc/vsftpd.conf.bak_0 > vsftpd.conf
[root@w vsftpd]# vim vsftpd.conf
''' 修改或确认
anonymous_enable=YES
'''
三、开启并放行服务
[root@w ~]# systemctl start vsftpd
[root@w ~]# firewall-cmd --list-all 查看是否已放行ftp。如果没放行,则添加
[root@w ~]# firewall-cmd --perm --add-service=ftp
[root@w ~]# firewall-cmd --reload
[root@w ~]# setenforce 0
四、测试和验证
( 一)使用Windows的资源管理器访问
- 双击我的电脑图标,打开资源管理器(或WIN+E)
- 在地址栏输入 ftp://192.168.X.Y/ // 假如ftp服务器IP地址是192.168.129.133,如下图
- 在窗口空白处,右键登录,勾选匿名登录
(二)使用ftp客户端测试
[root@w ~]# ftp 127.0.0.1 ## 在ftp服务器本机上测试,也可以是本机真实IP地址
Connected to 127....
220 (vsftpd 3.)
Name (127.0.0.1:root):anonymous
Password: aa@
ftp>
1.3.3 配置匿名用户上传
如果要开启匿名上传的功能,不建议在/var/ftp/pub上开启,另建一个临时目录/var/ftp/uploads开启。
在上一步骤的基础上,继续。
一、修改配置文件
[root@w vsftpd]# vim vsftpd.conf
''' 修改
anonymous_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
anon_world_readable_only=NO
write_enable=YES
二、创建供匿名用户上传的目录,授予权限
[root@w ~]# mkdir -p /var/ftp/uploads ## 创建匿名上传目录
[root@w ~]# chown ftp:ftp /var/ftp/uploads -R ## 将目录所有者改为ftp匿名本地帐号
[root@w ~]# ll -d /var/ftp/uploads
drwxr-xr-x 2 ftp ftp 6 6月 4 17:54 /var/ftp/uploads