⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 0410vsftpd.htm

📁 鸟哥的linux私房菜
💻 HTM
📖 第 1 页 / 共 5 页
字号:
	<hr /><a NAME="theory_pasv"></a><img src="../images/penguin-s.gif" alt="小标题的图示" height="23" width="16" align="middle" /><span class="text_h2">用户端选择被动式连线模式</span><br />
	<div class=block2>
		那么什么是被动式连线呢?我们可以使用底下的图示来作个简略的介绍喔∶<br /><br />

		<a name="fig_03"></a><center><img src="0410vsftpd/connect_passive.png"
		title="被动式连线的方向"
		alt="被动式连线的方向"><br />
		图三、被动式连线的方向</center>

		<ol>
		<li><span class=text_import2>建立命令通道∶</span><br />
		同样的需要建立命令通道,透过三向交握就可以建立起这个通道了。</li><br />

		<li><span class=text_import2>发出 PASV 的连线要求∶</span><br />
		当有使用资料通道的指令时,用户端可透过命令通道发出 PASV 的被动式连线要求 (Passive 的缩写),
		并等待伺服器的回应;</li><br />

		<li><span class=text_import2>FTP 伺服器启动资料埠口,并通知用户端连线∶</span><br />
		如果你的 FTP 伺服器是能够处理被动式连线的,此时 FTP 伺服器会先启动一个埠口在监听。
		这个埠口号码可能是随机的,也可以自订某一范围的埠口,端看你的 FTP 伺服器软体而定。
		然后你的 FTP 伺服器会透过命令通道告知用户端该已经启动的埠口 (图中的 port PASV),
		并等待用户端的连线。</li><br />

		<li><span class=text_import2>用户端随机取用大于 1024 的埠口进行连接∶</span><br />
		然后你的用户端会随机取用一个大于 1024 的埠号来对主机的 port PASV 连线。
		如果一切都顺利的话,那么你的 FTP 资料就可以透过 port BB 及 port PASV 来传送了。</li>
		</ol>

		发现上面的不同点了吗?被动式 FTP 资料通道的连线方向是由用户端向主机端连线的喔!
		如此一来,在 NAT 主机内部的用户端主机就可以顺利的连接上 FTP Server 了!但是,万一 FTP 
		主机也是在 NAT 后端那怎么办.....呵呵!那可就糗了吧~ @_@这里就牵涉到更深入的 DMZ 
		技巧了,我们这里暂不介绍这些深入的技巧,先理解一下这些特殊的连线方向,
		这将有助于您未来伺服器架设时候的考虑因素喔!<br /><br />

		此外,不晓得您有无发现,透过 PASV 模式,伺服器在没有特别设定的情况下,会随机选取大于 1024 
		的埠口来提供用户端连接之用。那么万一主机启用的埠口被搞鬼怎么办?而且,
		如此一来也很难追踪来自入侵者攻击的登录资讯啊!所以,这个时候我们可以透过 
		passive ports 的功能来『限定』主机启用的 port number 喔!<br /><br />
	</div>

	<hr /><a NAME="theory_security"></a><img src="../images/penguin-s.gif" alt="小标题的图示" height="23" width="16" align="middle" /><span class="text_h2">FTP 的安全性问题与替代方案</span><br />
	<div class=block2>
		事实上,FTP 是一个不太安全的传输协定呢!怎么说呢?因为 FTP 与 <a href="0310telnetssh.php">Telnet</a> 相似的,
		他是以『明码』的状态在网际网路上面传输的,所以当然就容易被有心人士将你的资料给他抓下来,
		并且加以利用啦!因此,他当然不是很安全啊!所以,在网路上大家才会常常告诫说,不要随意架设 FTP 
		网站啊!否则主机怎么被破解的都不晓得哩!此外,由于 FTP 软体常常会有漏洞的问题,因此也要常常更新套件喔!<br /><br />

		另外,其实拜 <a href="0310telnetssh.php">SSH</a> 所赐,目前我们已经有较为安全的 FTP 了,那就是 ssh 提供的 
		sftp 这个 server 啊!这个 sftp-server 最大的优点就是∶『他是经过加密的资料!』所以在网际网路上面流窜的时候,
		嘿嘿!毕竟是比较安全一些啦!所以建议您,除非必要,否则的话使用 SSH 提供的 sftp-server 
		功能即可~<br /><br />

		然而这个功能对于一些习惯了图形介面,或者是有中文档名的使用者来说,实在是不怎么方便,
		虽说目前有个图形介面的 filezilla 用户端软体,不过很多时候还是会发生一些莫名的问题说!
		所以,有的时候 FTP 网站还是有其存在的需要的。如果真的要架设 FTP 网站,那么还是得需要注意几个事项喔∶<br />

		<ol><span class=text_import2>
		<li>随时更新到最新版本的 FTP 软体,并随时注意漏洞讯息;
		<li>善用 iptables 来规定可以使用 FTP 的网域;
		<li>善用 TCP_Wrappers 来规范可以登入的网域;
		<li>善用 FTP 软体的设定来限制使用您 FTP 主机的使用者的不同权限啊;
		<li>使用 Super daemon 来进阶管理您的 FTP 主机;
		<li>随时注意使用者的家目录、以及匿名使用者登入的目录的『档案权限』;
		<li>若不对外公开的话,或许也可以修改 FTP 的 port 。
		</span></ol>

		无论如何,在网路上听过太多人都是由于开放 FTP 这个伺服器而导致整个主机被入侵的事件,所以,
		这里真的要给他一直不断的强调,要注意安全啊!<br /><br />
	</div>

	<hr /><a NAME="theory_who"></a><img src="../images/penguin-s.gif" alt="小标题的图示" height="23" width="16" align="middle" /><span class="text_h2">开放什么身份的使用者登入</span><br />
	<div class=block2>
		既然 FTP 是以明码传输,并且某些早期的 FTP 伺服器软体也有不少的安全性漏洞,那又为何需要架设 FTP 伺服器啊?
		没办法啊,总是有人有需要这个玩意儿的,譬如说各大专院校不就有提供 FTP 网站的服务吗?
		这样可以让校内的同学共同分享校内的网路资源嘛!不过,由于 FTP 登入者的身份可以分为三种,
		你到底要开放哪一种身份登入呢?这个时候你可以这样简单的思考一下棉∶<br /><br />

		<li><span class=text_import1>开放实体用户的情况 (Real user)∶</span><br />
		<div class=block2>
		很多的 FTP 伺服器预设就已经允许实体用户的登入了。不过,需要了解的是,以实体用户做为 FTP 登入者身份时,
		系统预设并没有针对实体用户来进行『限制』的,所以他可以针对整个档案系统进行任何他所具有权限的工作。
		因此,如果您的 FTP 使用者没能好好的保护自己的密码而导致被入侵,那么你的整个 Linux 系统将很有可能被毁灭啊!
		开放实体用户时的建议如下∶<br />
		<ul>
		<li>由于实体用户本来就可以透过网路连接到主机来进行工作 (例如 SSH),因此实在没有需要特别的开放 FTP 的服务啊!
		因为例如 sftp 本来就能达到传输档案的功能棉!</li><br />
		<li>如果确定要让实体用户利用 FTP 伺服器的话,那么你可能需要让某些系统帐号无法登入才行,例如 bin, apache 等等。
		最简单常用的作法是透过 PAM 模组来处理,譬如 vsftpd 这个软体预设可以透过 /etc/vsftpd.ftpusers
		这个档案来设定不想让他具有登入权限的帐号。</li>
		</ul>
		</div>

		<li><span class=text_import1>访客身份 (Guest)</span><br />
		<div class=block2>
		通常会建立 guest 身份的案例当中,多半是由于主机提供了类似『个人 Web 首页』的功能给一般身份使用者,
		那么这些使用者总是需要管理自己的网页空间吧?这个时候将使用者的身份压缩成为 guest 
		,并且将他的可用目录设定好,即可提供使用者一个方便的使用环境了!且不需要提供他 real user 的权限喔!
		常见的建议如下∶<br />
		<ul>
		<li>仅提供需要登入的帐号即可,不需要提供系统上面所有人均可登入的环境啊!</li><br />
		<li>当然,我们在主机的设定当中,需要针对不同的访客给他们不一样的『家目录』,
		而这个家目录与使用者的权限设定需要相符合喔!例如要提供 dmtsai 这个人管理他的网页空间,而他的网页空间放置在 
		/home/dmtsai/www 底下,那我就将 dmtsai 在 FTP 提供的目录仅有 /home/dmtsai/www 
		而已,比较安全啦!而且也方便使用者啊!</li><br />
		<li>针对这样的身份者,需要设定较多的限制,包括∶上下传档案数目与硬碟容量的限制、
		连线登入的时间限制、许可使用的指令要减少很多很多,例如 chmod 就不要允许他使用等等!</li>
		</ul>
		</div>

		<li><span class=text_import1>匿名登入使用者 (anonymous)</span><br />
		<div class=block2>
		虽然提供匿名登入给网际网路的使用者进入实在不是个好主意,因为每个人都可以去下载你的资料,
		万一频宽被吃光光怎么办?但如同前面讲过的,学校单位需要分享全校同学一些软体资源时,
		FTP 伺服器也是一个很不错的解决方案啊!您说是吧。如果要开放匿名使用者的话,要注意∶<br />
		<ul>
		<li>无论如何,提供匿名登入都是一件相当危险的事情,因为只要您一不小心,
		将重要的资料放置到匿名者可以读取的目录中时,那么就很有可能会 密!与其战战兢兢,不如就不要设定啊~</li><br />
		<li>果真要开放匿名登入时,很多限制都要进行的,这包括∶(1)允许的工作指令要减低很多,
		几乎就不许匿名者使用指令啦、(2)限制档案传输的数量,尽量不要允许『上传』资料的设定、
		(3)限制匿名者同时登入的最大连线数量,可以控制盗连喔!</li>
		</ul>
		</div>

		一般来说,如果你是要放置一些公开的、没有版权纠纷的资料在网路上供人下载的话,
		那么一个仅提供匿名登入的 FTP 伺服器,并且对整个网际网路开放是 OK 的啦!
		不过,如果你预计要提供的的软体或资料是具有版权的,但是该版权允许你在贵单位内传输的情况下,
		那么架设一个『仅针对内部开放的匿名 FTP 伺服器 (利用防火墙处理) 』也是 OK 的啦!<br /><br />

		如果你还想要让使用者反馈的话,那是否要架设一个匿名者可上传的区域呢?鸟哥对这件事情的看法是....
		『万万不可』啊!如果要让使用者反馈的话,除非该使用者是你信任的,否则不要允许对方上传!
		所以此时一个档案系统权限管理严格的 FTP 伺服器,并提供实体用户的登入就有点需求啦!
		总之,要依照您的需求来思考是否有需要喔!<br />
	</div>
</div>


<hr /><a NAME="server"></a><img src="images/penguin-m.gif" alt="大标题的图示" height="34" width="25" align="middle" /><span class="text_h1">vsftpd 伺服器基础设定</span><br />
<div class=block1>
	终于要来聊一聊这个简单的 vsftpd 棉!vsftpd 的全名是『<span class=text_import2>Very Secure FTP Daemon</span> 』的意思,
	换句话说,vsftpd 最初发展的理念就是在于建构一个以安全为重的 FTP 伺服器呢!我们先来聊一聊为什么 vsftpd
	号称『非常安全』呢?然后再来谈设定吧!<br /><br />

	<hr /><a NAME="server_before"></a><img src="../images/penguin-s.gif" alt="小标题的图示" height="23" width="16" align="middle" /><span class="text_h2">为何使用 vsftpd</span><br />
	<div class=block2>
		为了建构一个安全为主的 FTP 伺服器, vsftpd 针对作业系统的『程序的权限 (privilege)』概念来设计,
		如果你读过基础篇的<a href="../linux_basic/0440processcontrol.php">程序与资源管理</a>章节的话,
		你应该会晓得系统上面所执行的程式都会引发一个程序,我们称他为 PID (Process ID),
		这个 PID 在系统上面能进行的任务与他拥有的权限有关。也就是说, PID 拥有的权限等级越高,
		他能够进行的任务就越多。举例来说,使用 root 身份所触发的 PID 通常拥有可以进行任何工作的权限等级。<br /><br />

		不过,万一触发这个 PID 的程式 (program) 有漏洞而导致被网路怪客 (cracker) 所攻击而取得此 PID 使用权时,
		那么网路怪客将会取得这个 PID 拥有的权限呐!所以,近来发展的套件都会尽量的将服务取得的 PID 
		权限降低,使得该服务即使不小心被入侵了,入侵者也无法得到有效的系统管理权限,这样会让我们的系统较为安全的啦。
		vsftpd 就是基于这种想法而设计的。<br /><br />

		除了 PID 方面的权限之外, vsftpd 也支援 chroot 这个函式的功能,<span class=text_import2>chroot 
		顾名思义就是『 change root directory 』的意思</span>,那个 root 指的是『根目录』而非系统管理员。
		他可以将某个特定的目录变成根目录,所以与该目录没有关系的其他目录就不会被误用了。<br /><br />

		举例来说,如果你以匿名身份登入我们的 ftp 服务的话,通常你会被限定在 /var/ftp 目录下工作,
		而你看到的根目录其实就只是 /var/ftp ,至于系统其他如 /etc, /home, /usr... 等其他目录你就看不到了!
		这样一来即使这个 ftp 服务被攻破了,没有关系,入侵者还是仅能在 /var/ftp 里面跑来跑去而已,而无法使用 
		Linux 的完整功能。自然我们的系统也就会比较安全啦!<br /><br />

		sftpd 是基于上面的说明来设计的一个较为安全的 FTP 伺服器软体,他具有底下的特点喔∶<br />
		<ul><span class=text_import2>
		<li>vsftpd 这个服务的启动者身份为一般使用者,所以对于 Linux 系统的使用权限较低,对于 
			Linux 系统的危害就相对的减低了。此外, vsftpd 亦利用 chroot() 
			这个函式进行改换根目录的动作,使得系统工具不会被 vsftpd 这支服务所误用;</li><br />

		<li>任何需要具有较高执行权限的 vsftpd 指令均以一支特殊的上层程序 (parent process) 
			所控制 ,该上层程序享有的较高执行权限功能已经被限制的相当的低,并以不影响 Linux 本身的系统为准;</li><br />

		<li>绝大部分 ftp 会使用到的额外指令功能 (dir, ls, cd ...) 都已经被整合到 vsftpd 主程式当中了,
			因此理论上 vsftpd 不需要使用到额外的系统提供的指令,所以在 chroot 的情况下,
			vsftpd 不但可以顺利运作,且不需要额外功能对于系统来说也比较安全。</li><br />

		<li>所有来自用户端且想要使用这支上层程序所提供的较高执行权限之 vsftpd 指令的需求,
			均被视为『不可信任的要求』来处理,必需要经过相当程度的身份确认后,方可利用该上层程序的功能。
			例如 chown(), Login 的要求等等动作;</li><br />

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -