我的好朋友Scottie喜欢讽刺“好的行为都逃不过惩罚”。在我们都熟悉的从事安全领域工作的人们中,他发现了很多支持这个说法的理由。看起来有的时候的确是这样,经过检验的安全建议却造成了相反的结果。为了明确说明,我们以设置Windows域中的账户锁定选项这个通常的建议为例。
如果你的确设定了账户锁定,当别人试图用错误的密码去登陆你的账户,经过几次(这个次数是预先设定的)的尝试之后,账户会被自动锁定----谁都不可以用这个账户登陆。
设定这个账户锁定选项被认为可以提供两个好处:
1. 一个想要成为攻击者的人将不能使用这个账户,除非他能够只尝试少于你设定的次数就猜出密码。
2. 如果你认可了对登陆记录的记录和检查,来记录这些登陆事件,回顾你的登陆日志,它们会帮助你发现那些危及安全的登陆尝试。
另一方面,设置这个选项也可能会带来两个坏处:
1. 合法的用户会在登陆的时候不小心操作错误,把他们自己的账户锁定。这看起来牵强吗?有一次当着500个人的面,这样的事情就发生在我身上。
2. 对账户的自动攻击会引发多个账户的全局锁定。密码破解尝试变成了拒绝服务攻击(一些人认为拒绝服务攻击才是攻击者的真正目的)。
但是,我仍然相信正确实施的账户锁定选项能提供好处。账户锁定的设置可以在链接到域的“组策略对象”里完成。可以在“Windows设置/安全设置/账户策略/账户锁定策略/”里找到它。下面介绍如何使用它。
1. 设定账户的锁定的界限是25次无效的登陆尝试
25次尝试之后,这个账户就会被锁定。(连我也不认为自己会把密码输错25次!)这就使被许可的用户不至于因为大脑打个嗝(一时记错了密码)就把他们自己的账户锁定。25次尝试的机会的确使攻击者多了一些得到密码的时间,但是除非密码很简单,25次尝试是很难破解密码的,不至于对账户的安全造成威胁。
2. 设置账户锁定的持续时间为30分钟
对Windows Server2003来说,这是默认的值。账户锁定的持续时间就是账户在重新可以进行登陆前保持锁定状态的时间的长度。设定这个值是个好主意。另外的一个选择是让管理原来重启账户,在大规模的系统中应用这种方法是一种耗时的冒险----如果大量的账户因为自动攻击而被锁定,这种方法就进行不下去了。是的,把帐户锁定持续时间设成30分钟会增加攻击成功的风险。攻击者要做的只是等待锁定持续时间过去,然后再尝试。再重新考虑一下,把你的帐户锁定持续时间设置成和30分钟不同的时间。让我们阻止想要成为攻击者的人阅读这篇文章。
3. 把“在……分钟后重置帐户锁定计数器”选项设置成30分钟
Windows把用错误密码尝试登陆的次数记录在了锁定计数器中。这个设置使记录的次数的和在你设定的分钟数之后就变回零了。通过设定这个时间,如果到了时间界限计数器就不会继续增加。这也会使帮助桌面调用不能工作。它允许攻击者在你的防御下编程。他要做的就是在你的眼皮底下,举例来说,在30分钟之内作24次尝试,接下来的几分钟停止尝试,然后再重复这样的循环做法直到成功登陆。但是它必须知道你的设置,如果你很好的回顾了你记录的登陆日志,你就会很快发现这种尝试模式。
4. 设置对登陆事件和监视记录的记录和检查
如果帐户被帐户锁定设置锁定了。你就知道一定是有什么地方出问题了。然而,如果你没有记录登陆事件,你就会错过其它的许多细微的有危害的登陆尝试。记录并且检查登陆事件是帮助你发现攻击的源头,把攻击消灭在萌芽阶段,防止这种攻击再出现的唯一方法。
5. 保护账户不受从互联网发起的自动攻击
这些攻击从哪里来?直觉告诉我是从互联网来。如果没有远程访问服务,比如虚拟个人网络
,就应该不能从互联网登陆。这样攻击者就不能从互联网发起自动攻击,除非他可以建立一个经过鉴别的、授权的连接。所以,应该封锁从互联网访问的网络输入输出系统端口,要求用虚拟个人网络、加密套接字协议层或者其他安全远程访问方法。
6. 保护账户不受从外部用户发起的自动攻击
保护账户不受那些从允许访问你的网络的合作伙伴、用户和其它人等发起的自动攻击。隔离你允许这些用户访问的资源。他们不应该能自由访问你的整个网络。
7. 保护账户不受内部攻击者的攻击
这是真正艰难的一条。你的合法用户肯定是能够鉴别的。他们滥用自己的特权时你如何能保护自己呢?你采用的每一点限制用户安装和运行没有授权的软件的做法,都会帮助你减少受害的风险。