网络安全综述——思想篇 网络安全,这是个百说不厌的话题。因为在互联网上,每台计算机都存在或多 或少的安全问题。安全问题不被重视,必然会导致严重后果。诸如系统被破坏、数 据丢失、机密被盗和直接、间接的经济损失等。这都是不容忽视的问题。既然说到 网络安全,我们经常提到要使用防火墙、杀毒软件等等。这些的确很重要,但是人 们往往忽视了最重要的,那就是思想意识。 人类的主观能动性是很厉害的,可以认识世界、改造世界,正确发挥人的主观 能动性可以提高认知能力。但是人类本身固有的惰性也是十分严重的,喜欢墨守成 规、图省事。就是这点惰性给我的网络带来了安全隐患。据不完全统计,每年因网 络安全问题而造成的损失超过300 亿美元,其中绝大多数是因为内部人员的疏忽所 至。所以,思想意识问题应放在网络安全的首要位置。 一、密码 看到这里也许会有读者以为我大放阙词,那就先以我自己的一个例子来说起吧。 本人也很懒,但是也比较注意安全性,所以能设置密码的地方都设置了密码, 但是密码全是一样的。从E-mail信箱到用户Administrator ,统一都使用了一个8 位密码。我当初想:8 位密码,怎么可能说破就破,固若金汤。所以从来不改。用 了几年,没有任何问题,洋洋自得,自以为安全性一流。恰恰在你最得意的时候, 该抽你嘴巴的人就出现了。我的一个同事竟然用最低级也是最有效的穷举法吧我的 8 位密码给破了。还好都比较熟,否则公司数据丢失,我就要卷着被子回家了。事 后我问他,怎么破解的我的密码,答曰:只因为每次看我敲密码时手的动作完全相 同,于是便知道我的密码都是一样的,而且从不改变。这件事情被我引以为戒,以 后密码分开设置,采用10位密码,并且半年一更换。现在还心存余悸呢。 我从中得出的教训是,密码安全要放在网络安全的第一位。因为密码就是钥匙, 如果别人有了你家的钥匙,就可以堂而皇之的进你家偷东西,并且左邻右舍不会怀 疑什么。我的建议,对于重要用户,诸如:Root,Administrator 的密码要求最少 要8 位,并且应该有英文字母大小写以及数字和其他符号。千万不要嫌麻烦,密码 被破后更麻烦。 为什么要使用8 位密码呢?Unix一共是0x00至0xff共128 个字符。小于0x20的 都算是控制符,不能输入为口令,0x7f为转义符,不能输入。那么总共有128-32-1=95 个字符可作为口令的字符。也就是10(数字)+33 (标点符号)+26*2 (大小写字 母)=95 个。如果口令取任意5 个字母+1位数字或符号(按顺序),可能性是:52*52*52*52*52*43=16, 348 ,773 ,000 (即163 亿种可能性)。但如果5 个字母是一个常用词,估算一 个,设常用词500 条,从5000个常用词中取一个词与任意一个字符组合成口令,因 每一个字母都分为大小写,所以其可能性为:5000*282828282843=6 ,880 ,000 (即688 万种可能性)。但实际上绝大多数人都只用小写字母,所以可能性还要小。 这已经可以用微机进行穷举了,在Pentium200上每秒可算3.4 万次,像这样简单的 口令要不了3 分钟。如果用P4算上一周,可进行3000亿次演算。所以6 位口令很不 可靠,应用8 位。 密码设的越难以穷举,并不是带来更加良好的安全性。相反带来的是更加难以 记忆,甚至在最初更改的几天因为输入缓慢而被别人记住,或者自己忘记。这都是 非常糟糕的,但是密码难于穷举是保证安全性的前提。矛盾着的双方时可以互相转 化的,所以如何使系统密码既难以穷举又容易记忆呢,这就是门科学了。目前这方 面的书籍几乎没有,所以我只能凭借自我经验来向大家介绍了。 1 、采用10位以上密码。 对于一般情况下,8 位密码是足够了,如一般的网络社区的密码、E-mail的密 码。但是对于系统管理的密码,尤其是超级用户的密码最好要在10位以上,12位最 佳。首先,8 位密码居多,一般穷举工作的起始字典都使用6 位字典或8 位字典, 10位或12位的字典不予考虑。其次,一个全码8 位字典需要占去4G左右空间,10位 或12位的全码字典更是天文数字,要是用一般台式机破解可能要到下个千年了,运 用中型机破解还有有点希望的。再次,哪怕是一个12个字母的英文单词,也足以让 黑客望而却步。 2 、使用不规则密码。 对于有规律的密码,如:a1b2c3d4e5f6,尽管是12位的,但是也是非常好破解 的。因为现在这种密码很流行,字典更是多的满天飞,使用这种密码等于自杀。 3 、使用键盘外围的按键作为密码的组成部分。 现在的许多破解软件都支持Incremental (渐进)方式的密码组合进行穷举, 其核心内容就是引入频率统计信息,即“高频先试”的原则。所以,对于键盘外围 的按键都属于“低频使用”的按键。运用这些按键组成密码可以防止支持渐进式组 合穷举的破解软件。 4 、使用左右上下按键结合输入的密码。 把键盘从“T 、G 、B ”三个键和“Y 、H 、N ”三个键中间划分成左右部分, 从“Q~P ”和“A~”“这两行中间划分为上下部分,这样键盘就被围成了4 部分。 选取组成密码的按键最好从这4 部分中分别选取交叉组合,这样做的目的是防止别 人轻易看出并且记住你密码。最好是熟练使用”Caps Lock “键,可以达到密码安 全的最高境界。 5 、不要选取显而易见的信息作为口令。 单词、生日、纪念日、名字都不要作为密码的内容。 以上就是密码设置的基本注意事项。密码设置好了,并不代表万事大吉,密码 的正确使用和保存才是关键。 1 、要熟练输入密码,保证密码输入的速度要快。输入的很慢等于给别人看, 还是熟练点好。 2 、不要将密码写下来。密码应当记在脑子里,千万别写出来。 3 、不要将密码存入计算机的文件中。 4 、不要让别人知道。 5 、不要在不同系统上使用同一密码。 6 、在输入密码时最好保证没有任何人和监视系统的窥视。 7 、定期改变密码,最少半年一次。这点尤为重要,是密码安全问题的关键。 永远不要对自己的密码过于自信,也许无意中就泄漏了密码。定期改变密码,会使 密码被破解的可能性降到很低的程度。 8 、对于大型网络的系统管理员,应该定期使用密码破解软件来检测全体用户 密码的安全性。但要注意这些软件是否留有后门。 对于有些用户来说,这样做的确有点太那个了;但是对于管理员来说,就显得 尤为重要。有些用户采用诸如PGP (Pretty Good Privacy ,良好隐私)这类的软 件来生成密码。这是个很好的方法,但是PGP 的真正用途是用于对机密性文件的加 密。一般密匙都在1024位,如著名的RSA 公匙。对于一般密码生成,PGP 不是最好 的,它并不适合你自己。 管理员应该保证Root用户、Administrators用户组、Power Users 用户组、Super Users 用户组以及Replicator用户组密码的安全性要高,防止低权限的用户的密码 被窃取影响到高权限用户的安全性及整个系统的安全性。不要用Root及其他高权限 用户去察看其他用户的文件,以免造成安全隐患。管理员要定期给员工进行安全知 识培训,增强员工的安全意识。一旦发现高权限用户无法登陆,察看系统日志,必 要时刻将主机断开所有网络以保证主机系统及重要文件的安全性。 二、漏洞 网络安全性之所以这么低的一个主要原因就是系统漏洞。譬如管理漏洞、软件 漏洞、结构漏洞、信任漏洞。如果管理员解决不好结构漏洞和信任漏洞,我想这位 管理员应该可以卷着被子回家了。在此主要谈论一下管理漏洞和软件漏洞。这两种 漏洞产生的原因也是人为的。 1 、微软系统 这个涉及面就比较广了,但主要是Windows 9x系统、Windows NT系统、SQL Server. 不可否认,尽管这些系统的内核和组成有所不同,但通病还是有的,比如容易 受到DoS (Denial Of Service ,分布式拒绝服务)和OOB (Out Of Band )方式 的攻击。这是比较致命的漏洞,但是通过修改注册表、打补丁的方法都可以避免。 但是有一点漏洞是不能避免的,就是在Windows 系统下运行IIS (Internet Information Server,Internet信息服务),这样约等于自杀。 首先,Windows 下的密码文件存储时都不能经过shadow,所以只要拿到了这个 文件用相应的软件打开,所有的用户名和密码都暴露无遗。其次,现在许多用户喜 欢用Windows 2000,原因是不易崩溃。但是很多人都在Windows 2000下安装了IIS , 但是他们却不会配置IIS.最可悲的是只要你登陆到Internet,IIS 就自动运行,而 且端口都是固定的:默认FTP Port 21 ,默认Web Port 80 ,默认SMTP Port 25. 等于给人家大开后门。 对于用SQL Server或Windows 2000+IIS架站的服务器,安全系数并不如用Unix 系统。因为Windows 固有的易崩溃的特性依然保留,对DoS 的抵抗力还是太低,直 到Beta2 版的Windows XP依然保留了这个特性。而且通过Ftp 登陆,首先告诉你机 器的IIS 是什么版本,这就为攻击服务器提供了方便,而且如果权限设置不好,anonymous 都可以使用debug.安全性实在不好。 2 、Unix系统 我这里说的Unix系统指的是和Unix有类似的系统,比如:SCO Unix、以前的SUN OS和现在的Solaris 、FreeBSD 、xBSD、HP和IBM 的Unix. 这些Unix的结构基本相 同,长的差不多,区别不大,但是都有各自的漏洞。比如SUN OS的snoop 命令,可 以监听到同一共享网段内的其他用户口令,包括超级用户。这一点也被Solaris 继 承了。而且这些Unix系统有个通病,就是在能访问对方机器的情况下,把shell 命 令用ksh 运行,在自己能用的目录里放上叫“ls”之类的程序,希望超级用户可以 不小心的运行他们,一旦运行,就可以获得其权限。对于这一点,超级用户的Path 中不应当有“。”(既当前目录)。 所以这就要求管理员的素质相对的要高,可以把软件漏洞都补上,同时不出现 管理漏洞。还得防止被窃听。 现在最多的漏洞出现在CGI 上。使用这些服务最容易受到DoS 方式的攻击。CGI 是Web 的安全漏洞的主要来源。尽管CGI 协议并不是固有的不安全,然而不幸的是, 有的Script缺少这样的标准,而对之信任的管理员把它安装在节点上,造成每个CGI 都存在被攻击bug 的可能性。CGI 的安全隐患主要在于两个方面:①他们会有意无 意的泄漏主机的系统信息;②处理远程用户输入的如表格的内容或“搜索内容”命 令的Script,可能容易被远程用户攻击而执行命令。 对于Java,PHP ,ASP 也存在相应的错误。这些都是管理员应该予以注意。 三、总结 由于思想涣散造成的漏洞要远高于系统自身的漏洞,而系统自身的漏洞也是由 于管理员的大意造成的。所以,加强思想意识上的安全教育,势在必行。