最近更新日期:2011/08/08
21.1 FTP 的数据链路原理
21.1.1 FTP 功能简介 21.1.2 FTP 的运作流程与使用到的端口 21.1.3 客户端选择被动式联机模式 21.1.4 FTP 的安全性问题与替代方案 21.1.5 开放什么身份的使用者登入 ![]() FTP (File transfer protocol) 是相当古老的传输协议之一,他最主要的功能是在服务器与客户端之间进行档案的传输。
这个古老的协议使用的是明码传输方式,且过去有相当多的安全危机历史。为了更安全的使用 FTP
协议,我们主要介绍较为安全但功能较少的 vsftpd 这个软件吶。 ![]() FTP 服务器的功能除了单纯的进行档案的传输与管理之外,依据服务器软件的设定架构,它还可以提供几个主要的功能。
底下我们约略的来谈一谈:
FTP 服务器在预设的情况下,依据使用者登入的情况而分为三种不同的身份,分别是:
(1)实体账号,real user;(2)访客, guest;(3)匿名登录者, anonymous
这三种。这三种身份的用户在系统上面的权限差异很大喔!例如实体用户取得系统的权限比较完整,
所以可以进行比较多的动作;至于匿名登录者,大概我们就仅提供他下载资源的能力而已,并不许匿名者使用太多主机的资源啊!
当然,这三种人物能够使用的『在线指令』自然也就不相同啰! ^_^
FTP 可以利用系统的 syslogd 来进行数据的纪录,
而记录的数据报括了用户曾经下达过的命令与用户传输数据(传输时间、档案大小等等)的纪录呢!
所以你可以很轻松的在 /var/log/ 里面找到各项登录信息喔!
为了避免用户在你的 Linux 系统当中随意逛大街 (意指离开用户自己的家目录而进入到 Linux 系统的其他目录去), 所以将使用者的工作范围『局限』在用户的家目录底下,嗯!实在是个不错的好主意!FTP 可以限制用户仅能在自己的家目录当中活动喔!如此一来,由于使用者无法离开自己的家目录,而且登入 FTP 后,显示的『根目录』就是自己家目录的内容,这种环境称之为 change root ,简称 chroot ,改变根目录的意思啦! 这有什么好处呢?当一个恶意的使用者以 FTP 登入你的系统当中,如果没有 chroot 的环境下,他可以到 /etc, /usr/local, /home 等其他重要目录底下去察看档案数据,尤其是很重要的 /etc/ 底下的配置文件,如 /etc/passwd 等等。如果你没有做好一些档案权限的管理与保护,那他就有办法取得系统的某些重要信息, 用来『入侵』你的系统呢!所以在 chroot 的环境下,当然就比较安全一些咯! ![]() FTP 的传输使用的是 TCP 封包协议,在第二章网络基础中我们谈过, TCP 在建立联机前会先进行三向交握。不过 FTP 服务器是比较麻烦一些,因为 FTP 服务器使用了两个联机,分别是命令信道与数据流通道 (ftp-data) 。这两个联机都需要经过三向交握, 因为是 TCP 封包嘛!那么这两个联机通道的关系是如何呢?底下我们先以 FTP 预设的主动式 (active) 联机来作个简略的说明啰: ![]() 图 21.1-1、FTP 服务器的主动式联机示意图 简单的联机流程就如上图所示,至于联机的步骤是这样的:
如此一来则成功的建立起『命令』与『数据传输』两个信道!不过,要注意的是,
『数据传输信道』是在有数据传输的行为时才会建立的通道喔!并不是一开始连接到 FTP
服务器就立刻建立的通道呢!留意一下啰!
利用上述的说明来整理一下 FTP 服务器端会使用到的埠号主要有:
再强调一次,这两个埠口的工作是不一样的,而且,重要的是两者的联机发起端是不一样的!首先 port 21 主要接受来自客户端的主动联机,至于 port 20
则为 FTP 服务器主动联机至客户端呢!这样的情况在服务器与客户端两者同时为公共 IP (Public IP)
的因特网上面通常没有太大的问题,不过,万一你的客户端是在防火墙后端,或者是 NAT
服务器后端呢?会有什么问题发生呢?底下我们来谈一谈这个严重的问题!
回想一下我们的第九章防火墙! 一般来说,很多的局域网络都会使用防火墙 (iptables) 的 NAT 功能,那么在 NAT 后端的 FTP 用户如何连接到 FTP 服务器呢? 我们可以简单的以下图来说明: ![]() 图 21.1-2、 FTP 客户端与服务器端联机中间具有防火墙的联机状态
了解问题的所在了吗?在 FTP 的主动式联机当中,NAT 将会被视为客户端,但 NAT 其实并非客户端啊, 这就造成问题了。如果你曾经在 IP 分享器后面连接某些 FTP 服务器时,可能偶尔会发现明明就连接上 FTP 服务器了 (命令通道已建立),但是就是无法取得文件名的列表,而是在超过一段时间后显示『 Can't build data connection: Connection refused,无法进行数据传输』之类的讯息, 那肯定就是这个原因所造成的困扰了。 那有没有办法可以克服这个问题呢?难道真的在 Linux NAT 后面就一定无法使用 FTP 吗?当然不是! 目前有两个简易的方法可以克服这个问题:
![]() 那么什么是被动式联机呢?我们可以使用底下的图示来作个简略的介绍喔: ![]() 图 21.1-3、FTP 的被动式数据流联机流程
发现上面的不同点了吗?被动式 FTP 数据信道的联机方向是由客户端向服务器端联机的喔! 如此一来,在 NAT 内部的客户端主机就可以顺利的连接上 FTP Server 了!但是,万一 FTP 主机也是在 NAT 后端那怎么办...呵呵!那可就糗了吧~ @_@这里就牵涉到更深入的 DMZ 技巧了,我们这里暂不介绍这些深入的技巧,先理解一下这些特殊的联机方向, 这将有助于你未来服务器架设时候的考虑因素喔! 此外,不晓得你有无发现,透过 PASV 模式,服务器在没有特别设定的情况下,会随机选取大于 1024 的埠口来提供客户端连接之用。那么万一服务器启用的埠口被搞鬼怎么办?而且, 如此一来也很难追踪来自入侵者攻击的登录信息啊!所以,这个时候我们可以透过 passive ports 的功能来『限定』服务器启用的 port number 喔! ![]() 其实,在 FTP 上面传送的数据很可能被窃取,因为 FTP 是明码传输的嘛!而且某些 FTP 服务器软件的资安历史问题也是很严重的。 因此,一般来说,除非是学校或者是一些社团单位要开放没有机密或授权问题的资料之外,FTP 是少用为妙的。 拜 SSH 所赐,目前我们已经有较为安全的 FTP 了,那就是 ssh 提供的 sftp 这个 server 啊!这个 sftp-server 最大的优点就是:『在上面传输的数据是经过加密的』!所以在因特网上面流窜的时候, 嘿嘿!毕竟是比较安全一些啦!所以建议你,除非必要,否则的话使用 SSH 提供的 sftp-server 功能即可~ 然而这个功能对于一些习惯了图形接口,或者是有中文档名的使用者来说,实在是不怎么方便, 虽说目前有个图形接口的 filezilla 客户端软件,不过很多时候还是会发生一些莫名的问题说! 所以,有的时候 FTP 网站还是有其存在的需要的。如果真的要架设 FTP 网站,那么还是得需要注意几个事项喔:
无论如何,在网络上听过太多人都是由于开放 FTP 这个服务器而导致整个主机被入侵的事件,所以, 这里真的要给他一直不断的强调,要注意安全啊! ![]() 既然 FTP 是以明码传输,并且某些早期的 FTP 服务器软件也有不少的安全漏洞,那又为何需要架设 FTP 服务器啊?
没办法啊,总是有人有需要这个玩意儿的,譬如说各大专院校不就有提供 FTP 网站的服务吗?
这样可以让校内的同学共同分享校内的网络资源嘛!不过,由于 FTP 登入者的身份可以分为三种,
你到底要开放哪一种身份登入呢?这个时候你可以这样简单的思考一下啰:
很多的 FTP 服务器默认就已经允许实体用户的登入了。不过,需要了解的是,以实体用户做为 FTP 登入者身份时, 系统默认并没有针对实体用户来进行『限制』的,所以他可以针对整个文件系统进行任何他所具有权限的工作。 因此,如果你的 FTP 使用者没能好好的保护自己的密码而导致被入侵,那么你的整个 Linux 系统数据将很有可能被窃取啊! 开放实体用户时的建议如下:
通常会建立 guest 身份的案例当中,多半是由于服务器提供了类似『个人 Web 首页』的功能给一般身份用户, 那么这些使用者总是需要管理自己的网页空间吧?这个时候将使用者的身份压缩成为 guest ,并且将他的可用目录设定好,即可提供使用者一个方便的使用环境了!且不需要提供他 real user 的权限喔! 常见的建议如下:
虽然提供匿名登录给因特网的使用者进入实在不是个好主意,因为每个人都可以去下载你的数据, 万一带宽被吃光光怎么办?但如同前面讲过的,学校单位需要分享全校同学一些软件资源时, FTP 服务器也是一个很不错的解决方案啊!你说是吧。如果要开放匿名用户的话,要注意:
一般来说,如果你是要放置一些公开的、没有版权纠纷的数据在网络上供人下载的话, 那么一个仅提供匿名登录的 FTP 服务器,并且对整个因特网开放是 OK 的啦! 不过,如果你预计要提供的的软件或数据是具有版权的,但是该版权允许你在贵单位内传输的情况下, 那么架设一个『仅针对内部开放的匿名 FTP 服务器 (利用防火墙处理) 』也是 OK 的啦! 如果你还想要让使用者反馈的话,那是否要架设一个匿名者可上传的区域呢?鸟哥对这件事情的看法是.... 『万万不可』啊!如果要让使用者反馈的话,除非该使用者是你信任的,否则不要允许对方上传! 所以此时一个文件系统权限管理严格的 FTP 服务器,并提供实体用户的登入就有点需求啦! 总之,要依照你的需求来思考是否有需要喔! |
||
本网页主要以Firefox配合解析度 1024x768 作为设计依据 鸟哥自由软件整合应用研究室