编者按:网络是脆弱的,对一般用户来说,他们对于网络安全还仅仅是停留在安装一个杀毒软件的层面上,还有的人天真的以为这样就万事大吉,连病毒库都不去更新。这样怎么能抵挡住黑客非法入侵和病毒的肆虐....
1、安装操作系统或应用程序时不要使用默认值
几乎所有的操作系统或应用程序的厂商都会提供用户快速安装的功能,虽然厂商的设计是为了方便用户,但是在绝大多数用户不知情的情况下,系统却同时间却安装了许多不必要功能。相比之下,这种所谓采默认值安装的操作系统或应用程序,往往是造成安全漏洞的祸首。主要原因是因为用户通常不会去注意那些从来不用的功能,而且有许许多多的用户,包含IT的管理人员,根本就不知道自己在使用中的操作系统或应用程序上到底安装了哪些东西。一旦这些不明的功能出现漏洞,而偏偏用户又一无所知,且未实时加以修补的话,那往往会成为黑客入侵的最佳通道。
就操作系统来说,采用预设的安装通常都会连带安装超出用户所需的功能与网络服务,碰巧黑客最喜欢通过这些网络服务与通讯端口来进行入侵的动作。因此,若你所安装或开放的功能、网络服务与通讯端口越少,黑客就越不得其门而入。同样地,以默认值安装的应用程序,通常内含不必要的范例程序或是Scripts。一些常见的网站服务器漏洞即是因这些范例程序或是Scripts所造成,黑客可以利用这些不为用户所知的范例程序或Scripts所造成的漏洞来进行入侵、或取得该系统上的信息。绝大多数被安装在应用程序上的范例程序或是Scripts不仅未经过严谨的安全控制与设计,也未落实错误检查的工作,相反地,却成了黑客进行buffer overflow缓冲区溢位攻击的最佳通道。
如果你曾经使用厂商提供的快速安装程序来安装操作系统与应用程序,而且尚未删除不必要的网络服务并安装所有的修补程序的话,你的系统极有可能漏洞一箩筐,且相当容易导致黑客入侵。即便你设定过相关的功能,你的操作系统或应用程序仍有可能有漏洞,所以你可以使用端口号扫描工具(port scanner)或是漏洞扫描工具(vulnerability scanner)来作一确认。切记删除或关闭操作系统或是应用程序上不必要的功能、网络服务与通讯端口。虽然在企业里要落实这些安全管理工作有时相当费时费力,但是企业可以事先订定标准的操作系统与应用程序的安装规范来说明一般用户或IT管理人员可以安装那些功能或服务,以有效解决此一问题。
2、使用先进的用户帐号/密码设定与组合
帐号与密号的使用通常是许多系统预设的第一,同时也是唯一的防护措施。因此,黑客如果能取得用户的帐号与密码,那即可控制被入侵的系统。事实上,有许多的用户的密码要不是很容易被猜中,就是使用系统预设的密码,更甚者,还有些人根本就不设密码。用户应该要切记把握避免使用不当的密码、系统预设密码、或是使用空白密码的原则。
先进的密码系统包含两部分,一部分是「加密(encode)」,另一部分是「解密(decode)」。当一个密码设定完成后,会被以「明码」或是「暗码」的形式记录起来,以供认证之用,我们假设程序把密码存在「password.txt」档案中,而我们的密码假设为「ken」。
当档案经过加密后,下次打开这个档案就会被要求读入一个密码,如果是「明码」,那我们例子中的「password.txt」中就会被纪录密码是「ken」,可是这很不安全,用写字板就可以轻松破解这个密码。
「暗码」就比较先进了,他会被重新编码再储存,而且重新编码的方式很多,可能是一种很特殊的排列组合,这完全看设计者如何发挥。例如设定把他转成16进位码当作编码,所以这个密码「ken」经过处理就变成「68」、「74」、「77」,然后存在「password.txt」里的就成了「687477」,想解开「暗码」通常要花较多功夫。最新的编码技术就更厉害了,像 UNIX、Windows 系列中也常用到这些新技术,就是所谓的不可逆算法。刚刚「暗码」中的「687477」,如果你知道规则,那是可以轻而易举反推回去的,马上就可以得到「ken」这三个字。为了解决这个问题,人们采用了不可逆的算法,就是让你无法返推回去。
密码的安全性是相对的,只要是密码就会有被破解的情况,只不过是被时间的多少问题。那怎么设定密码,才能达到最好的效果?在此我提供下列几项检查方法供大家参考:
(1) 定时稽核系统上使用中与未使用中的帐号并予以记录,尤其对与Internet相连接的Router、Switch、Firewall、Server等主机上的密码应逐一检查。
(2) 制定企业信息系统用户帐号管理政策,详细规范增加用户帐号、以及删除不再继续使用的帐号时之应注意事项。
(3) 定时确认系统上是否出现未经授权的新帐号,并且删除不再使用的帐号。
(4) 使用密码破解工具来检查用户的密码设定是否安全。在执行此一工作时,你应当取得主管的同意与授权。
(5) 离职员工或是委外厂商使用之帐号、以及不再使用的帐号应适时予以删除。
有效解决帐号/密码安全问题的第一步就是禁止使用空白密码,任何被发现使用空白密码的帐号应该立即设定密码或是删除该帐号,并按照企业安全政策来管理用户帐号/密码。有关帐号管理方面,应该把握下列原则:
(1) 帐号与密码不可以相同。
(2) 避免使用字典上的词汇做为密码。
(3) 不要拿自己的名字、生日、电话号码来作为密码。
(4) 不可以使用空白密码。
(5) 密码之组成至少需6个字符以上。
(6) 密码之组成应包含英文大小写字母、符号、数字。
(7) 按使用目的与特性,密码至少每45 - 90天更换一次。
(8) 不可以将密码抄写在纸张上或置于公众场所,如贴在计算机屏幕前。
(9) 避免使用公共场所的计算机处理重要资料,如网吧、图书馆、学校计算机中心等,以免密码被窃听或不慎留下记录遭利用。
企业内重要信息的使用,应结合严格帐号管理与身分认证程序,以确保信息之使用仅及于授权的用户。身分认证除了须有完善的帐号管理作搭配外,用户可采用所谓one-time password动态式密码、PKI公开金钥、数字签章等方式来配合,不仅可确认用户身分外,更毋须担心密码被窃,同时还可确保资料的正确性与不可否认性。
3、关闭不必要的网络通讯端口
网络通讯端口是合法用户连接至主机端取得服务的通道,同样地,黑客也是利用同样的途径来入侵。所以说,你主机上开放的通讯端口越多,他人就越容易与你的系统联机。因此,减少系统上开放的通讯端口数目是网络安全最有效的防范措施之一,除了有必要对外提供服务的通讯端口之外,其它通讯端口应予以关闭。
你可以利用操作系统上内建的"netstat"指令来检查哪些通讯端口是处于开放或是聆听的状态,但是光靠netstat是不够的,你还可以使用端口号扫描工具(port scanner)来做更进一步的确认。如果"netstat"与端口号扫描工具所产生的结果不同的话,你应该立即做深入的检查。一旦两者的结果相符,接下来即是进行埠号确认的工作,除要了解每一个通讯端口开放的原因之外,你应该掌握每一个开放的通讯端口所代表的意义与其相关的网络服务。任何无法确认或辨别的网络通讯端口应该尽快关闭。经过netstat与端口号扫描的结果应该加以记录并保存,以作为日后定期安全稽核时拿来比对是否出现了不明或多余的通讯端口。
目前有许多端口号扫描工具,最有名的当属"nmap". 它提供Unix与Windows两种版本:
(1) Unix版本的网址在:http://www.insecure.org/nmap/
(2) Windows NT/2000版本的网址在:http://www.eeye.com.html/Research/Tools/nmapnt.html
当你进行端口号扫描时,切记对1-65,535的埠号做全面性的TCP与UDP端口号扫描,以免漏掉了任何可能开放的通讯端口。另外,你应当在取得网络主管的书面同意与授权之后,才可进行端口号的扫描的工作。要特别注意的是,某些操作系统与内含特殊TCP/IP堆栈功能的网络设备,在被扫描时可能会发生不可预期的反应。此外,如果你未事先声明或告知相关人员,端口号扫描的动作也可能会触动入侵侦测或防火墙,而被误判为攻击的行为。因此进行端口号扫描时,你不得不谨慎行事。
一旦你已掌握系统上开放的通讯端口有哪些之后,接下来即为确认该系统应该开放的通讯端口是哪些,而哪些又是不必要,且必须关闭或删除的通讯端口。例如你对外服务的网站服务器,应该只开放http/80埠,DNS服务器应该只开放dns/53埠,邮件服务器应该只开放smtp/25埠、pop3/110埠。如果你发现贵单位正好有上述对外服务的服务器,则请仔细检查你的服务器是否只开放的前述的通讯端口。如果不是,那你应该尽快将其它非必要性的通讯端口予以关闭或删除。你可以通过编辑、修改inetd.conf以及相关设定文件来对Unix系统作一端口号开放的限制与管理。
值得一提的是,万一系统被植入后门程序或是被利用来当作跳板做进一步攻击时,黑客必须使用特定的网络服务通讯端口(port)对其他系统进行入侵。这些后门程序多半使用特定的通讯端口号(port number),你可以用Nmap或是Nessus之类的Freeware或是套装扫描工具来检测出可疑的通讯活动。当然,防火墙的功能除了可将你网络上不必要的通讯端口关闭,保护你的企业内部网络,并过滤来往的网络使用,以防止黑客入侵之外,当你的内部网络不慎被植入后门有可能被当作跳板利用时,只要正确地设定你的防火墙,可以避免在外的黑客通过后门程序所打开的特定通讯端口进行破坏,因为防火墙只会允许合法通讯端口的使用,并阻挡一切非法的网络联机。
4、对进出入的IP封包进行过滤
伪造IP地址是黑客惯用来隐藏踪迹的技俩。举例来说,smurf 攻击