网管必读:防溢出提升权限攻击解决办法

网管必读:防溢出提升权限攻击解决办法

  在骇客频频攻击、在系统漏洞层出不穷的今天,作为网络管理员、系统管理员的我们虽然在服务器的安全上都下了不少功夫:诸如,及时的打上系统安全补丁、进行一些常规的安全配置 , 但是仍然不太可能每台服务器都会在第一时间内给系统打上全新补丁。因此我们必需要在还未被入侵之前,通过一些系列安全设置,来将入侵者们挡在 安全门 之外 ; 下面就以本人一直以来所用到的最简单、最有效的防 (Overflow) 溢出、本地提供权限攻击类的解决办法给大家讲讲。

   1 、如何可以防止溢出类的骇客攻击呢 ?

   尽最大的可能性将系统的漏洞补丁都打完 ; 最好是比如 Microsoft Windows Server 系列的系统可以将自动更新服务打开,然后让服务器在您指定的某个时间段内自动连接到 Microsoft Update 网站进行补丁的更新。如果您的服务器为了安全起见 禁止了对公网外部的连接的话,可以用 Microsoft WSUS 服务在内网进行升级

   停掉一切不需要的系统服务以及应用程序,最大限能的降底服务器的被攻击系数。比如前阵子的 MSDTC 溢出,就导致很多服务器挂掉了。其实如果 WEB 类服务器根本没有用到 MSDTC 服务时,您大可以把 MSDTC 服务停掉,这样 MSDTC 溢出就对您的服务器不构成任何威胁了。

   启动 TCP/IP 端口的过滤 : 仅打开常用的 TCP 21 80 25 110 3389 等端口 ; 如果安全要求级别高一点可以将 UDP 端口关闭,当然如果这样之后缺陷就是如在服务器上连外部就不方便连接了,这里建议大家用 IPSec 来封 UDP 。在协议筛选中 " 只允许 "TCP 协议 ( 协议号为 :6) UDP 协议 ( 协议号为 :17) 以及 RDP 协议 ( 协议号为 :27) 等必需用协议即可其它无用均不开放。

   启用 IPSec 策略 : 为服务器的连接进行安全认证,给服务器加上双保险。如 所说,可以在这里封掉一些危险的端品诸如 :135 145 139 445 以及 UDP 对外连接之类、以及对通读进行加密与只与有信任关系的 IP 或者网络进行通讯等等。 ( : 其实防反弹类木马用 IPSec 简单的禁止 UDP 或者不常用 TCP 端口的对外访问就成了 , 关于 IPSec 的如何应用这里就不再敖续,你可以到服安讨论 Search "IPSec" ,就 会有 N 多关于 IPSec 的应用资料 ..)

   删除、移动、更名或者用访问控制表列 Access Control Lists (ACLs) 控制关键系统文件、命令及文件夹 :

   1. 黑客通常在溢出得到 shell 后,来用诸如 net.exe net1.exe ipconfig.exe user.exe query.exe regedit.exe regsvr32.exe 来达到进一步控制服务器的目的如 : 加账号了,克隆管理员了等等 ; 这里我们可以将这些命令程序删除或者改名。 ( 注意 : 在删除与改名时先停掉文件复制服务 (FRS) 或者先将 %windir%\system32\dllcache\ 下的对应文件删除或改名。 )

   2. 也或者将这些 .exe 文件移动到你指定的文件夹 , 这样也方便以后管理员自己使用。


   3. 访问控制表列 ACLS 控制 : 找到 %windir%\system32 下找到 cmd.exe cmd32.exe net.exe net1.exe ipconfig.exe tftp.exe ftp.exe user.exe reg.exe regedit.exe regedt32.exe regsvr32.exe 这些黑客常用的文件,在 属性 ”→“ 安全 中对他们进行访问的 ACLs 用户进 行定义,诸如只给 administrator 有权访问,如果需要防范一些溢出攻击、以及溢出成功后对这些文件的非法利用 ; 那么我们只需要将 system 用户 ACLs 中进行拒绝访问即可。

   4. 如果你觉得在 GUI 下面太麻烦的话,你也可以用系统命令的 CACLS.EXE 来对这些 .exe 文件的 Acls 进行编辑与修改,或者说将他写成一个 .bat 批处理 文件来执行以及对这些命令进行修改。 ( 具体用户自己参见 cacls /? 帮助进行,由于这里的命令太多我就不一一列举写成批处理代码给各位了 !!)

   5. 对磁盘如 C/D/E/F 等进行安全的 ACLS 设置从整体安全上考虑的话也是很有必要的,另外特别是 win2k ,对 Winnt Winnt\System Document and Setting 等文件夹。

   进行注册表的修改禁用命令解释器 : ( 如果您觉得用 的方法太烦琐的话,那么您不防试试下面一劳永逸的办法来禁止 CMD 的运行 )

  通过修改注册表,可以禁止用户使用命令解释器 (CMD.exe) 和运行批处理文件 (.bat 文件 ) 。具体方法 : 新建一个双字节 (REG_DWORD) 执行 HKEY_CURRENT_USER\Software\Policies\ Microsoft\Windows\System\DisableCMD ,修改其值为 1 ,命令解释器和批处理文件都不能被运行。修改其值为 2 ,则只是禁止命令解释器的运行 , 反之将值改为 0 ,则是打开 CMS 命令解释器。如果您赚手动太麻烦的话 , 请将下面的代码保存为 *.reg 文件,然后导入。

   Windows Registry Editor Version 5.00

   [HKEY_CURRENT_USER\Software\Policies\Microsoft\Windows\System]

   "DisableCMD"=dword:00000001

   对一些以 System 权限运行的系统服务进行降级处理。 ( 诸如 : Serv-U Imail IIS Php Mssql Mysql 等一系列以 System 权限运行的服务或者应用程序换成其它 administrators 成员甚至 users 权限运行,这样就会安全得多了 ... 但前提是需要对这些基本运行状态、调用 API 等相关情况较为了解 . )

  其实,关于防止如 Overflow 溢出类攻击的办法除了用上述的几点以外,还有 N 多种办法 : 诸如用组策略进行限制,写防护过滤程序用 DLL 方式加载 windows 到相关的 SHell 以及动态链接程序之中这类。当然自己写代码来进行验证加密就需要有相关深厚的 Win32 编程基础了,以及对 Shellcode 较有研究 ; 由于此文仅仅是讨论简单的解决办法,因此其它办法就不在这里详述了。

   2 、如何在防止被骇客溢出得到 Shell 后对系统的而进一步入侵呢 ?

   在做好 1 中上述的工作之后,基本上可以防目骇客在溢出之后得到 shell ; 因为即使 Overflow 溢出成功,但在调用 CMDSHELL 、以及对外联接时就卡了。 ( 为什么呢,因为 :1. 溢出后程序无法再调用到 CMDSHLL 我们已经禁止 system 访问 CMD.exe 了。 2. 溢出之后在进行反弹时已经无法对外部 IP 进行连接了。所以,基本上要能过 system 权限来反弹 shell 就较困难的了 ...)

   当然世界上是不存在绝对的安全的,假设入侵者在得到了我们的 shell 之后,做些什么呢 ? 一般入侵者在在得到 shell 之后,就会诸如利用系统命令加账号了 通过 tftp ftp vbs 等方式传文件了等等来达到进一步控制服务器。这里我们通过 1 上述的办法对命令进行了限制,入侵者是没有办法通过 tftp ftp 来传文件了,但他们仍然可以能过 echo 写批处理,用批处理通过脚本 BAT/VBS/VBA 等从 WEB 上下载文件,以及修改其它盘类的文件等潜在破坏行为。所以我们需要 echo 命令也限制以及将其它盘的 System 写、修改文件的权限进行处理。以及将 VBS/VBA 类脚本以及 XMLhttp 等组件进行禁用或者限制 system 的运行权。这样的话别人得到 Shell 也无法对服务器上的文件进行删除以及进行步的控制系统了 ; 以及本地提权反弹 Shell 了。

  后记 : 其它服务器、系统的安全是个整体的概念 ; 有可能你其它一小点的疏忽就可以让你的网站、甚至服务器沦陷。因此安全策略必需走防患未然的道路,任何一个小地方都不能马虎。

你可能感兴趣的:(职场,休闲,入侵,中数博阳)