溢出是程序设计者设计时的不足所带来的错误,溢出也是是操作系统、应用软件永远的痛。在骇客频频攻击、系统漏洞层出不穷的今天,任何人都不能保证操作系统系统、应用程序不被溢出。既然溢出是必然的,并且利用溢出攻击的门槛又较低,有一定电脑基础的人都可以利用工具完成一次溢出。这样看来,电脑系统就处于随时被溢出的危险中,特别是肩负重任的服务器如果被溢出被渗透的话那后果不堪设想。我们总不能坐以待毙,做为网络管理人员,应该未雨绸廖做好防范工作,把服务器被溢出的可能性降到最低。
一 什么是溢出:
溢出是黑客利用操作系统的漏洞,专门开发了一种程序,加相应的参数运行后,就可以得到你电脑具有管理员资格的控制权,你在你自己电脑上能够运行的东西他可以全部做到,等于你的电脑就是他的了。
二 服务器溢出该如何防:
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、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了。
服务器的安全是个系统工程,任何小小的疏忽都有可以造成服务器的沦陷。“防”永远比“补”好,管理员“防”在溢出之前,把被攻击的危险降到最低,这才是真正的服务器安全之道。
溢出是程序设计者设计时的不足所带来的错误,溢出也是是操作系统、应用软件永远的痛。在骇客频频攻击、系统漏洞层出不穷的今天,任何人都不能保证操作系统系统、应用程序不被溢出。既然溢出是必然的,并且利用溢出攻击的门槛又较低,有一定电脑基础的人都可以利用工具完成一次溢出。这样看来,电脑系统就处于随时被溢出的危险中,特别是肩负重任的服务器如果被溢出被渗透的话那后果不堪设想。我们总不能坐以待毙,做为网络管理人员,应该未雨绸廖做好防范工作,把服务器被溢出的可能性降到最低。
【编辑推荐】