一 FTP 简介:

1 FTP的数据链路原理:

FTP(file transfer protocol)是相当古老的协议之一,他的主要功能是在服务器与客户端之间进行档案的传输,这个古老的协议使用的是明码传输的方式,且过去有相当多的安全危机,为了更安全的使用FTP协议,vsftpd登上历史舞台

2 FTP功能简介:

FTP服务器的功能处理单纯的进行档案的传输与管理之外,一句服务器软件的设定架构,它可以提供几个主要功能, 不同等级的用户身份:user ,guest , anonymous FTP服务器在预设情况下,依据使用者登录的情况分为三类: A 实体账号 real user B 访客 guest C 匿名登录者 anonymous 实体用户取得系统的权限比较完成,所以可以进行比较多的动作,至于匿名者登录,大概只会拥有下载文件的能力权限而已,


命令记录与登录文件记录: FTP可以利用系统的syslogd 来进行数据的记录,而记录的数据包括了用户曾经下达过的命令与用户传输数据(传输时间、档案大小)等的记录,所以你可以在/var/log中找到各项登录记录信息。


限制用户活动的目录:(change root,简称 chroot)

3 FTP的运行流程与使用到的端口

FTP的传输使用的是TCP封包协议, FTP的联机流程: 1 建立命令通道的联机 客户端会随机去一个大于1024以上的端口来与FTP服务器的port 21 达成联机,这个过程需要TCP的三次握手,达成联机后客户端便可以透过这个联机来对FTP服务器下达命令,包括查问文件名、下载、上传等指令都是利用这个通道完成的 2 通知FTP服务器端使用active且告知链接的端口 FTP服务器的21端口主要用在命令的下达,但是当涉及数据流时,就不是使用这个联机了,客户端在需要数据的情况下,会告知服务器端要用什么方式来联机,如果是主动式(active)联机时,客户端会先随机启用一个端口,且通过命令通道告知FTP服务器这两个信息,并等待服务器的联机

4 FTP的主动联机与被动联机

1 FTP服务器(主动)向客户端联机

FTP服务器由命令通道了解了客户端的需求后,会主动的由20端口向客户端的port端口联机,此时FTP客户端与服务器共会建立两条联机,分别用在命令的下达与数据的传递,而预设FTP服务器端使用主动联机的端口号就是 20 FTP的传输会使用两个信道,命令信道和数据信道,而数据信道是在有数据传输的行为时才会建立的通道,并不是一开始连接到FTP服务器就立刻建立的通道。


主动式联机使用到的端口: 命令通道ftp(默认是port 21)与 数据传输的 ftp-data (默认为 port 20) port 21端口主要是接受来自客户端的主动联机 port 20 端口则为FTP服务器主动连接至客户端

2 防火墙导致的问题

NAT 导致的问题, 1 用户通信信道的建立 因为NAT 会记录内部往外部的联机信息,而命令通道的建立是从内向外的,因此能够顺利建立起来 ,

2 用户和服务器间数据信道建立的通知 客户端主动启动大于1024的端口,通过命令通道告知FTP服务器,且等待服务器端连接 3 服务器主动连接到NAT服务器等待传递至客户端,NAT服务器上并未开启对应的客户端大于1024的接口,因此连接将不能建立

显示问题 can,t build data connection connction refused 无法传输数据


NAT 问题处理 1 使用iptables所提供的FTP侦测模块 使用modprobe 加载 ip_conntrack_ftp 以及 ip_nat_ftp 等模块,这几个模块便会主动分析21端口信息,所以可以得到portBB的资料,此时或接受到FTP服务器的主动连接

如果连接的目标FTP服务器的命令通道并非21端口,则此方式将无法顺利解析出来

3 客户端选择被动式(passive)联机模式

被动模式就是由客户端向服务器端发起联机,既然有客户顿啊发起联机,那自认就不需要考虑来自 port 20 的联机了。


1 用户与服务器建立命令信道: 同样需要建立命令通道,透过三次握手的就可以建立起这个通道了。 2 客户端发出PASV的联机要求 当有使用数据信道的指令时,客户端可透过命令通道发出PASV的被动式联机要求(passive),并等待服务器的回应。 3 FTP服务器启动数据端口口,并通知客户端联机 如果FTP服务器是能够处理被动式联机,此时FTP服务器会先启动一个端口来监听,这个端口号可能是随机的,也可以自定义某一范围的端口,然后你的FTP服务器会透过命令通道告知客户端已经启动的端口,并等待客户端的联机 4 客户端随机取用大于1024的端口进行连接 被动式的数据信道的联机方向是由客户端向服务器端联机的


若服务器端的大于1024的端口出现问题 如果随机选取大于1024的端口,则可能很难追踪来自***者的登录信息,所以可通过passive ports 的功能来限制服务端启用的port number 日志


FTP 传输数据很可能会被窃取,因为FTP是明文传输,现在有了SSH提供的sftp,其使用的是加密的数据传输,

** 被动式是客户端连接服务器端进行数据传输 主动式是服务器连接客户端进行数据传输**

三 FTP服务器的安装与测试

1关闭防火墙,关闭selinux

2 FTP的安装:

3 测试:需要装lftp客户端

4 配置

1 配置文件位置:

2 默认发布目录位置:

3 匿名用户的登录与上传

默认的,匿名用户不能上传: 修改为匿名用户可以上传:

vsftp在创建时会创建一个默认用户ftp和组ftp 将目录的所属组加入ftp中,并配置为可执行 测试上传:

4 匿名用户家目录的修改

将其家目录修改为/aaa 测试

5 匿名用户可以建立目录

先将其匿名访问目录恢复,删除原有的anon_root=/aaa的配置 默认情况下,匿名用户不具备创建目录权限 修改配置文件 重启服务 进行测试:

6 匿名用户下载

默认匿名用户不能下载 修改配置文件,此指令配置文件中不存在,需自己进行创建 重启服务

测试

7 匿名用户的删除操作

默认情况下。匿名用户不具有删除操作 修改配置文件

匿名用户使用的用户身份修改:默认的用户身份是ftp id 为 1001及为admin用户

8 本地用户的设定:

本地用户登录限制 默认情况下本地用户可以登录: 其中用户和组都必须和自己的家目录相符合 配置本地用户不能登录

9 本地用户写权限限制

将登录权限恢复 默认本地用户具有写权限 修改写权限,使之不能写

恢复:

10 限制本地用户浏览自己的家目录

默认可以浏览所有的目录 限制在家目录中

给予权限,否则不能登录成功

11 本地用户浏览家目录黑名单的建立

作用是使加入黑名单的用户被锁定在自己的家目录中,而未加入黑名单的用户仍可访问根目录下的内容 其MySQL用户可以访问根目录下的东西,而admin用户只能访问自己家目录下的东西

12 本地用户浏览家目录用户白名单的建立

添加mysql用户到文件中,并测试 重启服务 查看

13限制本机用户登陆:

1 在ftpuser中添加对应的用户名进行限制其登录

此时只限制admin用户的登录,而对MySQL用户,则不做限制:

2 将MySQL用户加入临时黑名单中进行限制用户登录

,(其可以随着配置文件的改变而由黑名单变为白名单)

3 配置之前的临时黑名单变为白名单:

15 虚拟用户

创建虚拟用户和密码,一行用户名,一行密码 将用户名和密码进行加密相关操作 配置加密相关选项 配置虚拟账号身份启用和认证文件名称 配置虚拟账号所依赖的账号 配置虚拟账号家目录独立设定

其他相关配置还原:

创建虚拟账号家目录并授予相应的权限

访问查看其结果: