既然 FTP 是以明码传输,并且某些早期的 FTP 服务器软件也有不少的安全漏洞,那又为何需要架设 FTP 服务器啊?
没办法啊,总是有人有需要这个玩意儿的,譬如说各大专院校不就有提供 FTP 网站的服务吗?
这样可以让校内的同学共同分享校内的网络资源嘛!不过,由于 FTP 登入者的身份可以分为三种,
你到底要开放哪一种身份登入呢?这个时候你可以这样简单的思考一下啰:
开放实体用户的情况 (Real user):
很多的 FTP 服务器默认就已经允许实体用户的登入了。不过,需要了解的是,以实体用户做为 FTP 登入者身份时,
系统默认并没有针对实体用户来进行『限制』的,所以他可以针对整个文件系统进行任何他所具有权限的工作。
因此,如果你的 FTP 使用者没能好好的保护自己的密码而导致被入侵,那么你的整个 Linux 系统数据将很有可能被窃取啊!
开放实体用户时的建议如下:
使用替代的 FTP 方案较佳:
由于实体用户本来就可以透过网络连接到主机来进行工作 (例如 SSH),因此实在没有需要特别的开放 FTP 的服务啊!因为例如
sftp 本来就能达到传输档案的功能啰!
限制用户能力,如 chroot 与 /sbin/nologin 等:
如果确定要让实体用户利用 FTP 服务器的话,那么你可能需要让某些系统账号无法登入 FTP 才行,例如 bin, apache 等等。
最简单常用的作法是透过 PAM 模块来处理,譬如 vsftpd 这个软件默认可以透过 /etc/vsftpd/ftpusers
这个档案来设定不想让他具有登入 FTP 的账号。另外,将使用者身份 chroot 是相当需要的!
访客身份 (Guest)
通常会建立 guest 身份的案例当中,多半是由于服务器提供了类似『个人 Web 首页』的功能给一般身份用户,
那么这些使用者总是需要管理自己的网页空间吧?这个时候将使用者的身份压缩成为 guest
,并且将他的可用目录设定好,即可提供使用者一个方便的使用环境了!且不需要提供他 real user 的权限喔!
常见的建议如下:
仅提供需要登入的账号即可,不需要提供系统上面所有人均可登入的环境啊!
当然,我们在服务器的设定当中,需要针对不同的访客给他们不一样的『家目录』,
而这个家目录与用户的权限设定需要相符合喔!例如要提供 dmtsai 这个人管理他的网页空间,而他的网页空间放置在
/home/dmtsai/www 底下,那我就将 dmtsai 在 FTP 提供的目录仅有 /home/dmtsai/www
而已,比较安全啦!而且也方便使用者啊!
针对这样的身份者,需要设定较多的限制,包括:上下传档案数目与硬盘容量的限制、
联机登入的时间限制、许可使用的指令要减少很多很多,例如 chmod 就不要允许他使用等等!
匿名登录使用者 (anonymous)
虽然提供匿名登录给因特网的使用者进入实在不是个好主意,因为每个人都可以去下载你的数据,
万一带宽被吃光光怎么办?但如同前面讲过的,学校单位需要分享全校同学一些软件资源时,
FTP 服务器也是一个很不错的解决方案啊!你说是吧。如果要开放匿名用户的话,要注意:
无论如何,提供匿名登录都是一件相当危险的事情,因为只要你一不小心,
将重要的资料放置到匿名者可以读取的目录中时,那么就很有可能会泄密!与其战战兢兢,不如就不要设定啊~
果真要开放匿名登录时,很多限制都要进行的,这包括:(1)允许的工作指令要减低很多,
几乎就不许匿名者使用指令啦、(2)限制文件传输的数量,尽量不要允许『上传』数据的设定、
(3)限制匿名者同时登入的最大联机数量,可以控制盗连喔!
一般来说,如果你是要放置一些公开的、没有版权纠纷的数据在网络上供人下载的话,
那么一个仅提供匿名登录的 FTP 服务器,并且对整个因特网开放是 OK 的啦!
不过,如果你预计要提供的的软件或数据是具有版权的,但是该版权允许你在贵单位内传输的情况下,
那么架设一个『仅针对内部开放的匿名 FTP 服务器 (利用防火墙处理) 』也是 OK 的啦!
如果你还想要让使用者反馈的话,那是否要架设一个匿名者可上传的区域呢?鸟哥对这件事情的看法是....
『万万不可』啊!如果要让使用者反馈的话,除非该使用者是你信任的,否则不要允许对方上传!
所以此时一个文件系统权限管理严格的 FTP 服务器,并提供实体用户的登入就有点需求啦!
总之,要依照你的需求来思考是否有需要喔!