6、防止LM散列被破解 尽管Windows的大多数用户不需要LAN Manager的支持,微软还是在Windows NT和2000系统里缺省安装了LAN Manager口令散列。由于LAN Manager使用的加密机制比微软现在的方法脆弱,LAN Manager的口令能在很短的时间内被破解。LAN Manager散列的主要脆弱性在于: 1.长的口令被截成14个字符
2.短的口令被填补空格变成14个字符
3.口令中所有的字符被转换成大写
4.口令被分割成两个7个字符的片断,像这样: --------------------------------------------------------
| 1st 8bytes of LM hash | second 8bytes of LM hash |
--------------------------------------------------------
from first 7 chars from second 7 chars 事实上,这就意味着口令破解程序只要破解两个7个字符的口令,并且不用测试小写字符情况即可获得成功。另外,LAN Manager容易被侦听口令散列,侦听可以为攻击者提供用户的口令。Win2000引入了有趣的方法,14个字符的限制被增加到127个,但为了向后兼容仍然使用LAN Manger散列算法,这样,对于与NT相同类型的攻击,密码依旧很脆弱。而且,如果您的整个操作系统环境中有不支持密码长度超过14个字符的非Win2000客户端,您可能会被这种限制搞糊涂。 有两种方法可以用来防止LM散列的密码被破解。第一种方法是取消LAN Manger在整个网络的鉴定功能,使用NTLMv2。NTLMv2(NT LanManager version 2)的认证方法克服了LAN Manger的大部分脆弱性,使用了更强健的编码,并改进了认证的安全机制。 从Windows NT 4.0 SP4及以后的系统,包括Windows 2000,微软使得我们在网络上只使用NTLMv2成为可能。在Windows NT和2000中这个功能在注册表中的控制键是HKLM\System\CurrentControlSet\Control\LSA\LMCompatibilityLevel。如果你把它的值设置成3,工作站或服务器将只使用NTLMv2信任证书进行认证。如果设置成5,任何域控制器将拒绝LM和NTLM的认证而只接受NTLMv2。 如果在你的网络里还有象Windows 95那么“老”的操作系统,必须得小心些,因为那些旧的系统无法在微软网络客户端使用NTLMv2。在Win9x中,该键值是
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\LSA\LMCompatibility,它只接受0到3的值(目录服务客户端)。最安全的做法是除去旧的系统,因为它妨碍你为你的组织提供所需的最低安全标准。 简单的删除网络LanMan散列带来的问题是,在SAM或Active Directory中散列还会产生和存储。微软提供了一次性取消LanMan散列防止再生的方法。在Windows 2000上,找到下面注册键:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa,在注册表编辑器RegEdit的菜单中选择Edit,单击Add键,加入一个名为NoLMHash的键值。然后,退出注册表编辑器,重启计算机。下次用户改变口令时,计算机就不会再产生LanMan散列。如果这个键是在Windows 2000域控制器上产生的,LanMan散列就不会被生成并存储在Active Directory。 在Windows XP中同样的功能可以通过设置键值来完成。在注册表HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa下建立一个名为“NoLMHash”的DWORD值,并将其键值改为1即可,这和Windows 2000中生成NoLMHash键的效果是一样。 7、防范共享入侵 大家知道,如果系统的139端口开放,则计算机就会泄露你的机器的一些信息,其中第一行中的NB便是这台计算机的机器名,WORKGROUP则说明这台机器是工作组模式。最后一行还列出了机器的MAC地址(网卡地址)。 事实上,对于Windows9x来说,共享入侵的实现离不开139端口的开放,而对于Windows 2000来说,在查看共享资源的时候,系统会先尝试连接139端口。如果139端口关闭的话,就会尝试445端口的连接(在黑客进行IPC$入侵时同样离不开它们),所以防范共享入侵不仅要关闭139端口,还要关闭445端口。把它们都关闭就可以防范别人通过共享来入侵你的电脑,同时也可以防止别人通过IPC$入侵,因为IPC$入侵也离不开139和445端口的支持。 关闭139端口非常简单,通过防火墙来屏蔽NetBIOS对应的139端口,这样别人就无法攻击我们了。而关闭445端口,则可以通过修改注册表来实现,方法是:在“开始”菜单的“运行”中输入regedit,打开注册表编辑器。然后展开到这里:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NetBT\Parameters,在它的下面新建一个DWORD值SMBDeviceEnabled,其键值为1即可 8、禁止空连接 空连接是在没有信任的情况下与服务器建立的会话,换句话说,它是一个到服务器的匿名访问。使用命令net use \\IP\ipc$ "" /user:"" 就可以简单地和目标建立一个空连接(需要目标开放IPC$)。留着不放心,还是禁止掉的好!这一步可以通过批处理来进行,方法是用记事本新建一个文本文件,输入如下内容: @echo REGEDIT4>>del.reg
@echo.>>del.reg
@echo [HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\LSA]>>del.reg
@echo "RestrictAnonymous"=dword:00000001>>del.reg
@REGEDIT /S /C del.reg 另存为以.bat为扩展名的批处理文件,点击这个文件就可以禁止空连接。当然,我们也可以手动来禁止空连接,到注册表HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\LSA下,将DWORD值RestrictAnonymous的键值改为1即可,效果是一样的。需要指出的是空连接和IPC$是不同的概念。空连接是在没有信任的情况下与服务器建立的会话,换句话说,它是一个到服务器的匿名访问。IPC$是为了让进程间通信而开放的命名管道,可以通过验证用户名和密码获得相应的权限。使用命令net use \\IP\ipc$ "" /user:""就可以简单地和目标建立一个空连接(需要目标开放IPC$)。 9、防范脚本病毒攻击 脚本病毒是常见的病毒之一,它们的传播速度非常快,主要是通过邮件来传播,由于编写简单,修改容易,所以只要有一个脚本病毒出现,立刻就会出现众多变种,非常令人头疼。其实通过修改注册表也可以简单的防范脚本病毒。下面说说防范方法。 由于脚本病毒的执行离不开WSH(Windows Script Host),它的代码是通过WSH来解释执行的。所以只要卸载WSH自然可以防范脚本病毒。但是WSH的功能实在是太强大了!所以,如果你不忍心删除它或还需要WSH,可以使用下面这个修改注册表的方法,之后就可以鱼和熊掌兼得了! 其实,为了避免Windows对脚本不加限制的滥用,微软为Windows脚本宿主5.6采用了一种新的安全模型。使得脚本用户在运行脚本之前验证其真实性。脚本开发人员对其脚本进行签名,以免发生未经授权的修改。管理员可以强制实施严格的策略,确定哪些用户有权在本地或远程运行脚本。在Windows 2000中,签名验证策略是通过“本地安全策略”编辑器设置的。签名验证策略注册表项位于以下配置单元:HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows ScriptHost\Settings\TrustPolicy,该注册表项设置为以下某个REG_DWORD值:如果为0则运行所有的脚本,如果认为脚本不可信,则提示用户,此时键值可设为1,如果键值为2则只运行可信脚本。建议将该DWORD值设为1。 10、防范其他攻击 修改注册表还可以防范许多攻击,比方说我们可以: (1)关闭Windows默认共享 用过Windows 2000的朋友一定知道,默认的情况下,硬盘中所有逻辑分区都是被设置成共享的,所以有必要关闭这类不用的共享。首先先把已有的IPC$和默认共享都删除删除(默认共享是为了方便远程管理而开放的共享,包含了所有的逻辑盘c$,d$,e$……和系统目录Winnt或WindowsADMIN$),输入: net share ipc$ /del
net share admin$ /del
net share c$ /del
net share c$ /del
………… 然后,用记事本编辑如下内容的注册表文件,保存为任意名字的.Reg文件即可: Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters]
"AutoShareServer"=dword:00000000
"AutoSharewks"=dword:00000000 注意,在最后面一定要空上一行才行! (2)防范WinNuke黑客程序的攻击 WinNuke是一个破坏力极强的黑客程序,该程序能对计算机中的Windows系统进行破坏,从而会导致整个计算机系统瘫痪,我们可以修改注册表来防范它。展开注册表到HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\MSTCP,在对应MSTCP键值的右边窗口中新建一个DWORD值,将它命名为“BSDUrgent”,然后将BSDUrgent的键值设为0,如何重新启动计算机后就可以了。 ??(2)防止ICMP重定向报文的攻击 ICMP是Internet Control Message Protocol的缩写,意即网际控制报文协议,ICMP用来发送关于IP数据报传输的控制和错误信息的TCP/IP协议。ICMP攻击主要是指向装有Windwos操作系统的机器发送数量较大且类型随机变化的ICMP包,遭受攻击的计算机会出现系统崩溃的情况,不能正常运作。修改注册表可以防范重定向报文的攻击,方法是打开注册表,展开到:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters,将DWORD值EnableICMPRedirects的键值改为0即可。该参数控制Windows 2000是否会改变其路由表以响应网络设备发送给它的ICMP重定向消息,Win2000中默认值为1,表示响应ICMP重定向报文。 (3)防止IGMP攻击 IGMP是Internet Group Management Protocol的缩写,意即Internet群组管理协议,这种TCP/IP协议允许Internet主机参加多点播送——一种向计算机群广播信息的有效手段。IGMP攻击是指向装有Windows操作系统的机器发送长度和数量都较大的IGMP数据包,使得遭受攻击的主机蓝屏下线(Win2000虽然没这个bug了,但IGMP并不是必要的)。我们可以修改注册表,使得系统停止对IGMP协议的响应,以此来防范这种攻击。方法是打开注册表,展开到:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters,将DWORD值IGMPLevel的键值改为0即可(默认值为2)。 ??(4)防止SYN洪水攻击 SYN攻击保护包括减少SYN-ACK重新传输次数,以减少分配资源所保留的时间和路由缓存项资源分配延迟,直到建立连接为止。修改注册表防范SYN洪水攻击的方法是打开注册表,展开到:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters,将DWORD值SynAttackProtect的键值改为2即可(默认值为0)。如果synattackprotect=2,则AFD的连接指示一直延迟到三路握手完成为止。注意,仅在TcpMaxHalfOpen和TcpMaxHalfOpenRetried设置超出范围时,保护机制才会采取措施。
好了,到了这里本文就要结束了,网络的安全管理的在于加强防范意识,同时安全的基础知识也是必须学习。 |