网络安全讲座之四:账号安全(2)
在NT下为了强制使用强壮的密码,你可以更改注册表里的LSA值来实现,叫passfilt.dll,这个文件可以在Windows NT的Service Pack2及以后的版本里找到。在LSA键值下需要添加Notification Packages字串并把值为passfilt.dll加进去。这串值必须在公司所有的域控制器里都加入。同时你还需要使用passprop.exe这个程序来使passfilt.dll生效。
UNIX下的密码安全
在UNIX中加密后的密码信息是存在一个文件里,通常是/etc/passwd 。维护好这个文件的安全性是非常重要的。在UNIX系统里它的属主是具有最高权限的帐号,即root的。UNIX基本上有两类用户:普通用户和系统特权用户。有时特权用户也被不确切地叫做超级用户。实际上,一个超级用户帐号的标识号是为零。当一个帐号建立的时候,会被分配一个唯一的标识数字(UID)。这个数字分配从0开始,最低的数字(也就是最高的权限)是分配给登陆帐号root的。Root可以执行任何程序,打开任何目录,检查任何文件,改变系统内任何对象的属性及其它任意的功能。任何对于攻击UNIX系统的黑客最终目的都是取得Root帐号。
Root掌管/etc/passwd文件。此文件可以被所有登陆的用户读取,它包含每一个用户的认证信息。因此,在简单的UNIX系统上任何人都可以复制这个文件的内容并分析哪个字段是包含加密后的密码。然后利用不同的密码一系列的尝试和/etc/passwd加密后的字串进行比较。因此,密码的选择是UNIX系统安全级别中最重要的。
Windows NT帐号安全
首先,也是最困难的任务就是确保只有必需的帐户被使用而且每个帐号仅有能满足他们完成工作的最小权限。在一个大型的公司里,通常是用一个或多个用户域集中管理所有的用户帐号。域是一个中央集权的帐号数据库可以在分布于公司中间。因此有经验的管理员尽量地把用户放到较少的域里面以便于管理。这种限制通常促进公司策略的粘附性。本地组创建本地资源并管理权限。本地资源的机器要被配置成信任集中帐号域。但有时这种设置也是不可行的,因为和远程站点间没有足够的带宽。
有几种技术可以解决帐号安全的问题。其中一个主要关心的是确保不再有新的帐号建立或已存在的帐户权限不作改动。另一个简单的方法就是利用net user和net group命令把信息定向到一个文体文件里后进行比照。有规律地运行这些命令并对输出的文本文件中的帐号列表进行比较就能轻易地发现问题。一些内置的工具,比如系统任务进度表程序,可以自动的执行。也可以使用其它一些外部工具比如Perl或diff可以自动地对标准列表和当前的设置进行比照。
帐号重命名
另一个可靠的办法就是对默认的帐号重命名。包括administrator、guest以及其它一些由安装软件时(如IIS)所自动建立的帐号。这些帐号必须好好保护因为它们易受攻击。然而简单地重命名帐号并不能很好地隐藏它们。因为Windows NT必须知道哪一个是管理员帐号,管理员帐号当前的名字是保存在注册表里的。
帐号策略
为了保持用户数据库不被侵犯,你必须强制用户养成良好的习惯在帐号的设置上要能有效地防止黑客使用暴力破解的方法来攻击。这些任务主要是通过Windows NT上的帐号策略上设置的。帐号策略的设置是通过域用户管理器来实施的,从策略的菜单中选择用户权限,第一项是有关密码的时效,第二项是有关密码长度的限制,以及帐号锁定等机制。
实现强壮的密码
大多数情况下,仅养成使用好密码的习惯是不够的;你还需要使用更强壮的密码来有效阻止类似于字典攻击和暴力破解攻击。我们前面已经讨论,一个强壮的密码至少需要六个字符,不能包括用户名的任何一部分,并且至少要有大小写字母、数字和通配符等。为了实施强壮的密码你需要在注册表里LSA项加入本课已提过的其它的密码过滤器。在主域控制器或在任一可能会升级为主域控制器的备份域控制器上,你都需要在注册表HKLM\System\CurrentControlSet\Control\LSA中加入PASSFILT的字串。