目前有非常多公司,尤其到一定规模,都会利用防火墙把MSN、BBS等网络软件、功能挡掉。一方面为了信息安全考量,另一方面应该也是为了“员工工作效率”着想。但是,用防火墙挡掉了,就真的不能连了吗?
先解释一下防火墙原理给网络比较不熟的朋友,网络程序在沟通的时候,除了透过IP来 认得我要连到哪一台计算机以外,还必须透过Port (连接阜)来认得说,我连到这台计算机,是要连到哪一个应用程序:是看网页呢,还是要来抓Mail等等。而为了方便起见,针对各种常见的网络应用程序,都会有公定的惯用Port,例如FTP Port 21、Telnet (BBS联机方式) Port 23、网页(HTTP) Port 80。
防火墙是作什么的呢?就是让公司内部所有的网络联机,要连公司外面的网络时,都必须经过他的检查。检查什么呢?最基本的就是检查他是连外面的什么IP、什么 Port。而大部分公司的政策,都是认为除了看网页查数据以外,连到公司外面的网络都应该跟工作无关,而且有可能影响网络安全。因此就会把所有的对外连 线,只要不是连外面网络的Port 80 (HTTP)或是Port 443 (HTTPS),也就是网页的话,就通通封锁让你连不到。
这样就真的一定连不到吗?其实也未必。因为Port的定义只是一种约定俗成,并没有任何人规定连Port 21就真的联机内容就是FTP传文件,连Port 80就真的一定是HTTP传送网页。一般的防火墙设置很难真的去侦测你的传输内容是不是真的是符合Port的一般使用。这时候漏洞就来了,既然你管不了我 传什么,那我连BBS也用Port 80连你就不知道了对吧!
的确,如果透过Port 80连BBS,防火墙就没办法挡,可是外面一般BBS像是PTT,你连他的Port 80当然连不到他的BBS系统啊!所以我们必须在外面网络要有人接应,虽然我用Port 80连他,但是他再来在外面接力帮我用Port 21连BBS。而在外面的计算机要连哪一个Port,公司的防火墙当然管不到。这样就突破了公司的防火墙封锁了!
那这样的一个方式,要怎么 实际做到呢?这种技巧叫做“Tunneling”,也就是隧道的意思,因为我们只有某个特殊Port可以通,所以我们所有各式各样的Port的联机都使用 唯一可以通的Port。目前市面上的软件包括Http-Tunnel (http://www.http-tunnel.com/),或是作者以前年轻顽劣时爱用的Httport,都是有写好的程序来帮你完成这点。
Tunnel的机制有两个主要的元件,也就是这个隧道的起点跟终点。隧道的起点就是我们安装的 Tunnel Client,只要安装好以后,就可以设置这个隧道的终点是哪一台服务器,也就是我们外面帮我们接应的那台计算机是谁。这些软件多半会提供一些免费的公用服务器,但是通常会相当慢,自己架一个会比较快一些些。
设置好以后,你联机的时候当然再也不是直接联机到你想连的站点或是BBS,而是联机到你的Tunnel,实际联机到你想连的站点的工作会由你的Tunnel运行。因此像是Httport上面,你就必须设置说你用什么Port连到这个 Tunnel软件的时候,他会告诉外面接应的计算机其实你是要连到哪。例如你用Port 12345连Tunnel的时候,他帮你用Port 23连ptt.cc。这样的设置设置完成后,你的BBS设置连到localhost(自己计算机)的Port 12345的时候,就神不知鬼不觉的连上PTT啦!
最后附带说明一下,这样的机制虽然大部分情况可以突破防火墙的限制,来连上你想连的服务。对于网管而言的确不太好完全挡掉这种行为。但是如果要侦测到有人在这样搞,花点心思其实是作得到的,所以使用Tunnel的时候还是节制点,不要太嚣张啦!