常见网络安全问题及解决办法
随着计算机的普及和网络技术的迅速发展,人们也越来越依赖于计算机和网络。因此,网络安全应该也必须引起注意。网络安全是一门涉及计算机、网络、通讯、密码、信息安全、应用数学、数论、信息论等多种学科的综合性学科,涉及面极广,而且不断更新和发展。国家对信息产业的扶持,使国内的网络状况逐渐好转,更多的服务器的开通,更快的宽带网得逐渐普及,各种各样的攻击行为在网上也越来越频繁化和简单化。近日的中美黑客大战,不但不少国内站点被黑,而且黑客技术又大肆传播,潜在的威胁与日俱增。因此,网络安全的严峻性对网络管理员的水平提出了极高的要求。本文将详细介绍各种系统最常见的一些安全问题以及对应的解决办法。
关于WindowsNT
国内站点中,NT站点最多,占91.4%,其余不足10%的多为类Unix系统(如SunOS、HP-Unix、SCO Unix、Linux、BSD Unix等),而恰恰NT的漏洞最多。由于微软的技术垄断,NT的漏洞一般很难迅速、完美地解决。NT把用户信息和加密口令保存与SAM文件中,即安全帐户管理(Security Accounts Management)数据库,由于NT的加密过程与Win9x一样简单,因此NT口令比Unix(linux)口令更加脆弱,更容易受到一本简单黑客字典的攻击。(NT5.0已改进了它的加密程序,但国内跑得最多的依然是NT4.0)。
NT首当其冲的漏洞就是SMB漏洞,其导致SAM数据库和其他NT服务器及NT/9x工作站上的文件可能被SMB的后门所共享。SMB(Server Message Block 服务器消息块)是微软早期的LAN产品的一种继承协议,即基于Windows95/98/NT平台的共享功能。在LAN中,共享功能提供了网络中硬盘,CDROM,打印机的资源共享,极大方便了网络的使用。由于LAN局限在内部使用,并未引起较大安全问题。当LAN连上因特网,成为一个子网络时,人们通常还是认为,共享功能仅限于LAN使用,其实不然,通过因特网,是可以访问到LAN中的共享资源。共享资源有两种访问方式,一种是只读方式,另一种是完全访问方式。通常基于方便使用的考虑,共享资源都没有设置口令,而且,有些还打开了完全访问方式。这样,一个菜鸟黑客都可以利用Internet上俯拾皆是的SMB黑客工具,来窃取文件,删除磁盘,甚至上传木马,以达到长期、更进一步控制的目的。仅我知道的此类软件就有老掉牙的Logion、Redbutton和NetHackerII。用这些软件访问LAN不需要Administrator访问权或者交互式访问权。NT在安装后,每个磁盘都会缺省地被设置成共享,这时后,Internet和LAN上的任何人都可以用命令行方式连接服务器。如在开始-运行里键入“\\IPADDRESS\C$,\\IPADDRESS\D&……”或在Dos下连接。当前。对于使用SMB进行NT组网,还没有任何其他可选的方法。
建议:安装NT后,立即修改磁盘共享属性;严格控制共享,请加上复杂的口令;打印服务器应认真对待,任何人都可以通过SMB漏洞将你的打印驱动替换成木马或夹入病毒;安装防火墙,截止从端口135到142的所有TCP和UDP连接,这样有利于控制,其中包括对基于RPC工作于135端口的安全漏洞的控制。当然,最安全的方法是利用代理(Proxy)来限制或者完全拒绝网络上基于SMB的连接;同时在内部路由器上设置ACL,在各个独立子网之间,截止端口135至142。
另一大漏洞就是注册表访问漏洞。NT的缺省Registry权限有很多不恰当之处。第一,Registry的缺省权限设置是对Everyone(所有人)的Full Control(完全控制)和Create(创建),这可能导致注册表文件被不知情用户或恶意用户修改、删除或替换。第二,NT的缺省状态下是允许用户远程访问NT的注册表。这将导致严重的安全隐患。
建议:立即关掉“远程注册表造访”,使用第三方的工具软件如Enterprise Administrator来管理注册表,必要时将其锁住。或手动修改注册表——在HKEY_Local_Machine\System\CurrentControlSet\Control\SecurePipeServer下添加Winreg项(Reg_SZ类型),再在其下添加Description值(Reg_SZ类型),输入字符串“Registry sever",重启计算机。
NT的进程定期处理机制有较大漏洞。NT允许非特权用户运行某些特别的程序,导致NT系统崩溃或者挂起。CPUHOG是一个只有5行的小程序,它可以使NT挂起;NTCrash与前者类似,这类软件在Internet上到处可见。一些扫描器也可以使NT拒绝服务,如经典的SATAN和InternetScanner,它们都可以使NT崩溃。甚至用一条简单的Ping命令(对,就是Win9x/Nt中的Ping)也可以服务器重启。如“Ping -l 65524 host.domain.com ”。究其原因,在于NT对较大的ICMP包是很脆弱的,如果向NT发一条指定包大小为64K的Ping命令,NT的TCP/IP Stack将不会正常工作。此种情况会使系统离线工作,直至重启。
建议:赶快去下载Service Pack 6,立即安装。
帐户设置不合理也是人为的安全因素,如果和NT密码的脆弱性联合起来,又是一个严重的隐患。通常入侵者最感兴趣的是Administrator帐户,次之是Guest帐户。因此,必须严格地设置域和帐户。
建议:必须设置两个或两个以上的系统管理员帐户,以免万一入侵者已得到最高权限并将口令更改。并且将原Administrator帐户改名,加上复杂的口令,再设置一个没有任何权限的假Administrator帐户,以欺骗入侵者;取消Guest帐户或者加上复杂的口令;设置口令尝试次数上限,达到即锁住该帐户,以防止穷举口令;关注系统日志,对大量Login失败记录应保持警惕。
LAN中的不友好用户和恶意用户也应注意。通常LAN中的用户得到管理员权限的成功概率高达70%,而其他用户则不到5%,因为本网用户通常较熟悉管理员的工作习惯,而且穷举口令在局域网中也比从互联网上快得多(LAN中100次/秒,Internet中3-5次/秒)。“最危险的敌人通常都在你身边”,此类的黑客工具举不胜举,如NTRecover、NTLocksmith(NT锁匠,这名字倒是恰如其分)、Getadmin、IKS、L0phtCrack…… 另外,网络监听(也叫嗅查器 Sniffer)也是LAN 中常用的窃密方法。因为一般公司都是使用共享式的HUB,所以只要将网卡接口设置为监听模式即可,通常可以截获本段网络中传送的信息流,加以分析,从中得到密码。我用NetHackerII试着监听了本段局域网仅两分钟,就得到了一个叫“super99”的明文共享口令;而密文口令,可以保存成SMB文本,送L0phtCracker解密。L0phtCracker2.52 在48小时内,几乎能解90%以上的密码(当然要一个好字典哦:-))。现在的入侵者在服务器久攻不下后,会用IP扫描器扫描服务器所在网段(如冯志宏大侠的“月光搜索”),得到本网段的工作站的IP,然后挨个尝试,找出最脆弱的一台攻击,得手后即开始监听,伺机窃得管理员口令。而且在宽带网逐渐普及的今天,攻击的速度也越来越快。可能原来需要一个月跑出来的口令,现在只需一天或几小时。
建议:采用Switch HUB 后就只能监听本网段;严格设定域和工作组,用拓扑结构将各个域分开。
另外,Modem拨入式访问也应引起注意。不要将电话号码透露给任何人,不要将记有号码的介质随意放置,并要给此种访问加上口令。 NT在默认状况下用紧急修复盘更新后,整个SAM数据库会被复制到%system%repair\sam._下,而且对所有人可读。因此在修复后,立即将其改为对所有人不可读。
关于泛Unix
NT由于界面友好,操作简单,被中小型企业广泛采用;而Unix由于对管理人员要求较高,常常用于大型企业和ISP。因此,若此类服务器被摧毁,损失将是惊人的。
Unix系统中的/etc/passwd文件是整个系统中最重要的文件,它包含了每个用户的信息(加密后的口令也可能存与/etc/shadow文件中)。它每一行分为7个部分,依次为用户登录名,加密过的口令,用户号,用户组号,用户全名,用户主目录和用户所用的Shell程序,其中用户号(UID)和用户组号(GID)用于Unix系统唯一地标识用户和同组用户及用户的访问权限。这个文件是用DES不可逆算法加密的,只能用John之类的软件穷举,因此,此文件成为入侵者的首要目标。通常黑客用FTP匿名登录后将passwd Get回去,就用John开始跑了。所以一定要把此文件设为不可读不可写。另注意,opasswd或passwd.old是passwd的备份,它们可能存在,如果存在,一定也要设为不可读不可写
文件许可权也是应高度注意的问题。用ls -l 可以看到文件的权限。r表示可读,w表示可写,x表示可执行;第一个rwx表示文件属主的访问权限,第二个rwx表示文件属主同组用户的访问权限,第三个rwx表示其他用户的访问权限。改变文件的属主和组名可用chown和chgrp,但修改后原属主和组名就无法修改回来了。用ls -l看时,目录前面有个d,在Unix中,目录也是文件,所以目录许可也类似与文件许可。
用户目录下的.profile文件在用户登录时就被执行,若此文件对其他人是可写的则系统的任何用户都能修改此文件,比如上传木马,加入后门。如“echo "++">.rhosts”就可随意进出其他用户帐号,再开始攻击,从而嫁祸他人。应设置用户ID许可和同组用户ID许可;并将umask命令加入每个用户的.profile文件,以避免特络依木马攻击和各种模拟Login的诱骗。同时应多用ls -l查看自己的目录,包括以.开头的文件。任何不属于自己但存在于自己目录的文件应立即引起怀疑和追究。
最好不设匿名帐户或来宾帐户(anonymouse & guest)如果一定要设,请在/etc/passwd中将其shell设为/bin/failure,使其不能访问任何shell。(注意:Linux中是设为/bin/false)。打开chroot(如chroot -s),使其访问的文件限定在一定目录下。
作为root登录后,应时刻保持清醒,知道自己下一步该做什么,因为你的一点微小的疏忽都可能给整个系统带来不良后果 ,甚至导致系统崩溃。尽量少用root登录,而以具有同样权限的其他帐户登录,或用普通帐户登录后再用su命令取得管理员权限。这样做是为了避免可能潜在的嗅探器监听和加载木马。给你的root 帐户加上足够复杂的口令,并定期更换。
Unix可执行文件的目录如/bin可由所有的用户进行读访问,这样用户就可以从可执行文件中得到其版本号,从而知道它会有什么样的漏洞。如从Telnet就可以知道sendmail的版本号。禁止对某些文件的访问虽不能完全禁止黑客地攻击,但至少可以使攻击变得更加困难。
如果是SunOS系统,请及时关注Sun的补丁信息,因为SunOS系统被侵入的事件较多,而且国内绝大部分重要的网络(国家政府部门,邮电通信,教育部门等)都采用SunOS系统。据报道,有30%上有严重的root级安全问题,如最经典的例子:SunOS V4安装时会创建一个/rhosts文件,这个文件允许Internet上的任何人可以登录主机并获得超级用户权限。SUN的本意是方便管理员从网上进行安装,但也为入侵者大开其门。比较新的例子有SunOS的rpc.ttdbserver存在巨大漏洞,可以使任何人远程登录取得root级权限并不需要何口令,接着一条rm -fr * 的命令就可以…… 建议网络管理员去下载最新的补丁。并且注意的是,通常管理员对核心主机非常关注,会及时补上补丁,但同网络内的其他主机的管理却没有跟上,入侵者虽然通常无法直接突破核心主机,但往往通过这一点,先突破附近的电脑,进入LAN网络,在利用嗅探器等方式监视LAN,获取通向服务器的途径。所以,同网段的机器都应该同等级重视。
这里将常见的系统漏洞的版本号总结一下,如果您的版本号与此相同,请立即升级系统或安装补丁程序。
Linux 1.2.13可以利用CGI轻松获得root权限(这个太老了吧!)
XFree86 3.1.2 的某个漏洞可使其他替罪羊代为删除任何文件
Sendmail8.7-8.8.2 for Linux ,FreeBSD有root级漏洞
SunOS Version4.0 有root 级漏洞
关于CGI等
CGI 是主页安全漏洞的主要来源。CGI(COMMOM GATE INTERFACE)是外部应用程序与WEB服务器交互的一个标准接口,它可以完成客户端与服务器的交互操作。CGI带来了动态的网页服务,但是INTERNET的宗旨是面向每个人的,任何人可在任何时候任意多次通过INTERNET访问某WEB服务器,而这些特性又会给INTERNET带来安全上的问题。CGI程序设计不当,就可能暴露未经授权的数据,例如,一个最早的CGI漏洞:在浏览器里输入
http://www.xxxx.xxxx.com/cgi-bin/phf?Qalias=x%0a/bin/cat /etc/passwd 就可以看到Unix服务器的passwd文件。
/msads/Samples/SELECTOR/showcode.asp可以看到NT服务器上的任何文件。这些root级漏洞几乎均来自与用户的交互,这种交互性在给主页带来活力的同时,成为Web服务器的一个潜在危险。具有破坏性的数据可以从多种渠道进入服务器,客户端可以设计自己的数据录入方式,数据内容,然后调用服务器端的CGI程序。如有的留言板可以用……的方法屏蔽CGI,使它支持超文本,然后五花八门的Java炸弹、色情图片、色情链接搞得留言板乌烟瘴气。又如可以由客户端用户任意设定数据的长度,如果用户恶意地设置超长数据,结果是系统挂起,甚至导致瘫痪。
那么究竟应如何防止这些数据的入侵呢?首先服务器应对输入数据的长度有严格限制,在使用POST方法时,环境变量CONTENT-LENGTH能确保合理的数据长度,对总的数据长度和单个变量的数据长度都应有检查功能;另外,GET方法虽可以自动设定长度,但不要轻信这种方法,因为客户可以很容易地将GET改为POST。CGI程序还应具有检查异常情况的功能,在检查出陌生数据后CGI还应能及时处理这些情况。CGI在增加上这些功能后,很可能变得很繁琐。在实际应用当中还要在程序的繁琐度和安全性上折衷考虑。“黑客”还可以想出其他办法进攻服务器,比如以CET和POST以外的方法传输数据,通过改变路径信息盗窃传统上的密码文件/etc/passwd, 在HTML里增加radio选项等等。最后,要对CGI进行全面的测试,确保没有隐患再小心使用。
ASP也是一大问题。ASP由于强大的功能、简单的开发和维护成为了当前开发Web程序的首选。但ASP一直BUG不断。如IIS3.0时在ASP后加一个$Data就得到源码;IIS4.0时在ASP后加%81或%82也有同样功效。另外 showcode.asp、codebrws.asp等也有漏洞。管理员可以下载SP6补丁,并留意有关ASP漏洞的报道。
近来邮件病毒一再升温,恶意的VBScript也漫天飞。黑客可以将恶意的VBS代码夹在超文本中,加上以over方式触发的链接,将信以HTML格式寄给你,当你的鼠标挨上链接,具有特殊功能的VBS就被执行,简单的如乱删你的文件,复杂的如得到你的系统目录字符串,然后在注册表中将你的C盘改为共享或更隐蔽一点的就是将startup目录改为共享,最后用SMB共享软件连接服务器,上传木马。因此,尤其注意异常的邮件,先用杀毒软件扫一遍,如不放心就用记事本打开看;如果看都不敢看,简单——Delete了事!
关于密码
这可以说是老生常谈,因此其重要性不必我再浪费口舌。密码一定要长,至少7位以上,最好8位。如Unix一共是128个字符(0x00~0xff),小于0x20的都是控制符,不能作为口令输入,0x7f为转义符,也不能输入,那么共有128-32-1=95个字符可作为口令输入。如果passwd为6位,包括任意5个字母和一位数字或符号,则其可能性为52*52*52*52*52*43=16,348,773,000(163亿种可能性)。这纯粹是理论估算,实际上密码比这有规律得多。英文常用词条约5000条,从5000个词中任取一个字母与一个字符合成口令,仅有5000*2*2*2*2*2*43=6,880,000(688万种可能性),现在一台赛扬600上每秒可算10万次,则需要时间为6880000/100000/60=1.146667(分钟)仅需1分钟!而就算全部穷举,也只要16348773000/100000/60/60=9.621864(小时)因此6位密码十分不可靠。而8位(7个字母和一个字符)要(52*52*52*52*52*52*52*43)/100000/3600≈26017.52(小时)≈1084(天)≈2.97(年)。你看,你的密码仅仅加了两位,别人就要多算近3年,举手之劳,何乐而不为之?现在很多解密工具都采用分层解密。如先尝试用用户名或用户名的变形来试,再用中文和英文字典来试,最后再用所有可能的组合来穷举。但一般来说,除非黑客对你十分感兴趣,才会进行费时颇多的第三步。因此,密码不要用8位以下数字,不要用自己的中英文名,不要用字典上的词,数字和字母交替夹杂,并最好加入@#$%!&*?之类的字符。但你一定要记熟,别自己进不了root!
以上是对现有安全状况的总结和建议,当然最好的办法还是安装防火墙(取决于你的财力)。你还应经常浏览一下安全网站,推荐Root Shell(http://www.rootshell.com),它可是最好的安全网站哟,搜集了大量的最新和经典的漏洞及解决方法。你甚至还可以到黑客站点去转一下,“知己知彼,百战不殆”嘛。
网络安全所面临的问题及解决方案 doc版下载