溢出是程序设计者设计时的不足所带来的错误,溢出也是是操作系统、应用软件永远的痛。在骇客频频攻击、系统漏洞层出不穷的今天,任何人都不能保证操作系统系统、应用程序不被溢出。既然溢出是必然的,并且利用溢出攻击的门槛又较低,有一定电脑基础的人都可以利用工具完成一次溢出。这样看来,电脑系统就处于随时被溢出的危险中,特别是肩负重任的服务器如果被溢出被渗透的话那后果不堪设想。我们总不能坐以待毙,做为网络管理人员,应该未雨绸缪做好防范工作,把服务器被溢出的可能性降到最低。
一 什么是溢出:
溢出是黑客利用操作系统的漏洞,专门开发了一种程序,加相应的参数运行后,就可以得到你电脑具有管理员资格的控制权,你在你自己电脑上能够运行的东西他可以全部做到,等于你的电脑就是他的了。
二 服务器溢出该如何防:
1、必须打齐补丁:
尽最大的可能性将系统的漏洞补丁都打完;MicrosoftWindowsServer系列的服务器系统可以将自动更新服务打开,然后让服务器在指定的某个时间段内自动连接到Microsoft update网站进行补丁的更新。如果服务器为了安全起见禁止了对公网外部的连接的话,可以用Microsoft WSUS服务在内网进行升级。
2、服务最小化:
最少的服务等于最大的安全,停掉一切不需要的系统服务以及应用程序,最大限度地降底服务器的被攻击系数。比如前阵子的NDS溢出,就导致很多服务器挂掉了。其实如果WEB类服务器根本没有用到DNS服务时,大可以把DNS服务停掉,这样DNS溢出就对你们的服务器不构成任何威胁了。
3、端口过滤:
启动TCP/IP端口的过滤,仅打开服务器常用的TCP如21、80、25、110、3389等端口;如果安全要求级别高一点可以将UDP端口关闭,当然如果这样之后缺陷就是如在服务器上连外部就不方便连接了,这里建议大家用IPSec来封UDP。在协议筛选中只允许TCP协议、UDP协议 以及RDP协议等必需用协议即可;其它无用均不开放。
4、系统防火墙:
启用IPSec策略,为服务器的连接进行安全认证,给服务器加上双保险。封掉一些危险的端口,诸如:135 145 139 445 以及UDP对外连接之类、以及对通读进行加密与只与有信任关系的IP或者网络进行通讯等等。通过IPSec禁止UDP或者不常用TCP端口的对外访问就可以非常有效地防反弹类木马。
5、系统命令防御:
删除、移动、更名或者用访问控制表列Access Control Lists (ACLs)控制关键系统文件、命令及
文件夹:
(1)、黑客通常在溢出得到shell后,来用诸如net.exe、net1.exe、ipconfig.exe、user.exe、query.exe、 regedit.exe、regsvr32.exe 来达到进一步控制服务器的目的。如:加账号、克隆管理员了等等。我们可以将这些命令程序删除或者改名。 4 t( B+ L/ O- y.
提示:在删除与改名时先停掉文件复制服务 (FRS)或者先将 %windir%system32dllcache下的对应文件删除或改名。我爱电脑技术社区–打造最好的电
(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批处理文件来执行以及对这些命令进行修改。
(5)、对磁盘如C、D、E、F等进行安全的ACLS设置从整体安全上考虑的话也是很有必要的,另外特别要对Windows、WinntSystem、Document and Setting等文件夹。
6、组策略配置:
想禁用“cmd.exe”,执行“开始→运行”输入gpedit.msc打开组策略,选择“用户配置→管理模板→系统”,把“阻止访问命令提示符”设为“启用”。同样的可以通过组策略禁止其它比较危险的应用程序。
7、服务降级:
对一些以System权限运行的系统服务进行降级处理。比如:将Serv-U、Imail、IIS、Php、Mssql、Mysql等一系列以 System权限运行的服务或者应用程序换成其它administrators成员甚至users权限运行,这样就会安全得多了。但前提是需要对这些基本运行状态、调用API等相关情况较为了解。
小结:其实,关于防止如Overflow溢出类攻击的办法除了用上述的几点以外,还有很多种办法:比如通过注册表进行建立相应的键值,进行设置;写防护过滤程序用DLL方式加载windows到相关的SHell以及动态链接程序之中这类。当然自己写代码来进行验证加密就需要有相关深厚的Win32编程基础了,以及对Shellcode较有研究。
三 如何防止溢出获取Shell后对系统的进一步入侵
1、 在做好1中上述的工作之后,基本上可以防目骇客在溢出之后得到shell了;因为即使Overflow溢出成功,但在调用CMDSHELL、以及对外联接时就卡了。 (为什么呢,因为:1.溢出后程序无法再调用到CMDSHLL已经禁止system访问CMD.exe了。2.溢出之后在进行反弹时已经无法对外部IP进行连接了。所以,基本上要能过system权限来反弹shell就较困难的了…)
2、 当然世界上是不存在绝对的安全的,假设入侵者在得到了用户的shell之后,做些什么呢?一般入侵者在在得到shell之后,就会诸如利用系统命令加账号了 通过tftp、ftp、vbs等方式传文件了等等来达到进一步控制服务器。这里通过1上述的办法对命令进行了限制,入侵者是没有办法通过tftp、ftp来传文件了,但他们仍然可以能过echo写批处理,用批处理通过脚本BAT/VBS/VBA等从WEB上下载文件,以及修改其它盘类的文件等潜在破坏行为。所以用户需要 将echo命令也限制以及将其它盘的System写、修改文件的权限进行处理。以及将VBS/VBA类脚本以及XMLhttp等组件进行禁用或者限制system的运行权。这样的话别人得到Shell也无法对服务器上的文件进行删除以及进行步的控制系统了;以及本地提权反弹Shell了。
服务器的安全是个系统工程,任何小小的疏忽都有可以造成服务器的沦陷。“防”永远比“补”好,管理员“防”在溢出之前,把被攻击的危险降到最低,这才是真正的服务器安全之道。
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
相关推荐
-
实施虚拟化:管理员应避免五大安全错误
如今,有约50%的服务器负载在虚拟机上运行,并且在未来的几年还要增加。虚拟化带来很多好处,也不可避免地带来许多由其自身产生的威胁……
-
警惕!Heartbleed还在继续
自从Heartbleed漏洞被公开以来,虽然受影响的服务器的总数在降低,但新发现的仍受该漏洞影响的服务器的数量却仍在增加。
-
企业系统安全管理和强化的十个建议(二)
许多运行在的服务器上的服务并不需要超级用户权限来执行他们的功能。通常,他们不需要任何特殊权限以外的读取和写入数据目录的能力。
-
整合远程服务器和存储设备 实现安全与高效
Riverbed Steelhead Granite解决方案利用一种全新的存储架构,企业可以整合远程基础设施,从而提高安全性和效率,同时不会对分支机构的最终用户应用性能造成不良影响。