欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  网络运营

教你怎样“藏”服务器的密码

程序员文章站 2022-03-12 15:49:07
前不久笔者应邀到某公司做网络渗透,这家公司的网络是由windows2003服务器和XP系统搭建的小型Active Directory,其中一台服务器连接着内网数据库,所有服务器都开放了远程终端。经过... 08-10-08...
前不久笔者应邀到某公司做网络渗透,这家公司的网络是由windows2003服务器和xp系统搭建的小型active directory,其中一台服务器连接着内网数据库,所有服务器都开放了远程终端。经过渗透测试,笔者发现了一些很严重的常见安全性问题,其中最值得一提的就是密码安全管理问题。   在测试web的时候,出现了sql注入漏洞,也由此进一步获得了连接数据库的密码。然而数据库的机器可能故意放在dmz区,所以不能上网。笔者在web网站中查找到了web管理员的密码,却发现和刚才获得的连接数据库密码明显有相同之处。web 管理员的密码是web@123456(123456代表的是朋友公司的名字),而连接数据库的密码是sql@123456。发现了这一点共同之处后,根据经验,笔者抱着侥幸的心理直接登陆终端输入密码webserver@123456,竟然成功了。就这样获得了web服务器的管理员权限。在之后的渗透过程中,笔者测试mail服务器的时候直接输入mailserver@123456,竟然也成功了。有了这样一个“公式”,接下来的测试就轻松多了,把服务器根据情况把密码重新组合,就这样把余下的服务器直接被轻松拿下。最后在其中一台服务器笔者还意外的“获得”了一个记录所有服务器的密码的xsl文档,这个xls文档密码还包括了域名的密码。   笔者以往的经验表明,其实这样的情况非常普遍,假如读者是一位网管,可以回想一下,在读者所处的企业或所管理的服务器有没有这样的类似问题。但是正是因为这种密码的缺陷,给企业服务器或者内网带来灾难。   密码的安全一直以来都是一个难题。其实,针对这种情况,每个企业都可以更有效地管理自己的密码。以下是笔者就密码管理给朋友公司的管理员提出的建议,也给广大的网管朋友提个醒:   一、 所有的服务器必须设置安全复杂的密码   二、 定期更改密码   主要是防止那些不慎落入黑客手中老密码再次被利用。   三、 新密码必须脱胎换骨,和旧密码毫无关联   更改密码时,切忌直接从老密码变换而来,尤其是那种只改变一个字母的做法。当管理员更改密码时,应该假设当前密码已经被人破解。类似webserver1@123456、web1@123456、mailserver1@123456这样的密码更改,要猜出来简直是太容易了。   四、 不使用常见单词和弱密码   比如password、qwer1234等,这类密码是绝对不能使用的。   五、 使用无规律可循的密码   就像在这次的测试中,笔者就是遵循着朋友公司的密码的规律,进入服务器的。所以产生密码的时候,不能使用有规律可循的密码。   六、 记录密码档的文档必须加密。   以下是微软官方提供的《确定与密码策略相关的设置》   • “强制密码历史”确定互不相同的新密码的个数,在重新使用旧密码之前,用户必须使用过这么多的密码。此设置值可介于 0 和 24 之间;如果该值设置为 0,则强制密码历史被禁用。对多数组织而言,将该值设置为 24 个密码。   • “密码最长使用期限”确定在要求用户更改密码之前用户可以使用该密码的天数。其值介于 0 和 999 之间;如果该值设置为 0,则密码从不过期。将值设得太低,则可能给用户带来不便;设得太高或者禁用,则为潜在攻击者提供更多时间来破解密码。对多数组织而言,将该值设置为 42 天。   • “密码最短使用期限”确定用户可以更改新密码之前这些新密码必须保留的天数。此设置被设计为与“强制密码历史”设置一起使用,这样用户就不能很快地重置有次数要求的密码并更改回旧密码。该设置值可以介于 0 和 999 之间;如果设置为 0,用户可以立即更改新密码。建议将该值设为 2 天。   • “密码长度最小值”确定密码最少可以有多少个字符。尽管 windows 2000、windows xp 和 windows server 2003 最多可支持 127 个字符的密码,但是该设置值只能介于 0 和 14 个字符之间。如果设置为 0,则允许用户使用空白密码,因此您不应使用 0 值。建议将该值设置为 8 个字符。   • “密码必须符合复杂性要求”确定是否加强密码的复杂性。如果启用该设置,则用户密码符合以下要求:   • 密码长度至少有 6 个字符。   • 密码至少包含以下 5 类字符中的 3 类字符:   • 英语大写字母 (a - z)   • 英语小写字母 (a - z)   • 10 个基数数字 (0 - 9)   • 非字母数字(例如:!、$、# 或 %)   • unicode 字符   • 密码不得包含三个或三个以上来自用户帐户名中的字符。   如果帐户名长度少于 3 个字符,此检查便不会被执行,因为密码被拒绝的可能性相当高。检查用户全名时,有几个字符被看作分隔符,分隔符将名称分隔成单独的标记,这些分隔符为:逗号、句点、短划线/连字符、下划线、空格、磅字符和制表符。对于每个标记,如果长度有 3 个或以上的字符,则在密码中搜索该标记;如果存在该标记,则拒绝更改密码。例如,姓名“erin m. hagens”将拆分为三个标记:“erin”、“m”和“hagens”。由于第二个标记的长度只有一个字符,从而被忽略。因此,该用户密码中任何位置都不能包含“erin”或“hagens”子字符串。所有这些检查都区分大小写形式。