如何防范服务器被攻击
不管哪种DDoS攻击,,当前的技术都不足以很好的抵御。现在流行的DDoS防御手段——例如黑洞技术和路由器过滤,限速等手段,不仅慢,消耗大,而且同时也阻断有效业务。如IDS入侵监测可以提供一些检测性能但不能缓解DDoS攻击,防火墙提供的保护也受到其技术弱点的限制。其它策略,例如大量部署服务器,冗余设备,保证足够的响应能力来提供攻击防护,代价过于高昂。
黑洞技术
黑洞技术描述了一个服务提供商将指向某一目标企业的包尽量阻截在上游的过程,将改向的包引进“黑洞”并丢弃,以保全运营商的基础网络和其它的客户业务。但是合法数据包和恶意攻击业务一起被丢弃,所以黑洞技术不能算是一种好的解决方案。被攻击者失去了所有的业务服务,攻击者因而获得胜利。
路由器
许多人运用路由器的过滤功能提供对DDoS攻击的防御,但对于现在复杂的DDoS攻击不能提供完善的防御。
路由器只能通过过滤非基本的不需要的协议来停止一些简单的DDoS攻击,例如ping攻击。这需要一个手动的反应措施,并且往往是在攻击致使服务失败之后。另外,现在的DDoS攻击使用互联网必要的有效协议,很难有效的滤除。路由器也能防止无效的或私有的IP地址空间,但DDoS攻击可以很容易的伪造成有效IP地址。
基于路由器的DDoS预防策略——在出口侧使用uRPF来停止IP地址欺骗攻击——这同样不能有效防御现在的DDoS攻击,因为uRPF的基本原理是如果IP地址不属于应该来自的子网网络阻断出口业务。然而,DDoS攻击能很容易伪造来自同一子网的IP地址,致使这种解决法案无效。
防火墙
首先防火墙的位置处于数据路径下游远端,不能为从提供商到企业边缘路由器的访问链路提供足够的保护,从而将那些易受攻击的组件留给了DDoS攻击。此外,因为防火墙总是串联的而成为潜在性能瓶颈,因为可以通过消耗它们的会话处理能力来对它们自身进行DDoS攻击。
其次是反常事件检测缺乏的限制,防火墙首要任务是要控制私有网络的访问。一种实现的方法是通过追踪从内侧向外侧服务发起的会话,然后只接收“不干净”一侧期望源头发来的特定响应。然而,这对于一些开放给公众来接收请求的服务是不起作用的,比如Web、DNS和其它服务,因为黑客可以使用“被认可的”协议(如HTTP)。
第三种限制,虽然防火墙能检测反常行为,但几乎没有反欺骗能力——其结构仍然是攻击者达到其目的。当一个DDoS攻击被检测到,防火墙能停止与攻击相联系的某一特定数据流,但它们无法逐个包检测,将好的或合法业务从恶意业务中分出,使得它们在事实上对IP地址欺骗攻击无效。
IDS入侵监测
IDS解决方案将不得不提供领先的行为或基于反常事务的算法来检测现在的DDoS攻击。但是一些基于反常事务的性能要求有专家进行手动的调整,而且经常误报,并且不能识别特定的攻击流。同时IDS本身也很容易成为DDoS攻击的牺牲者。
作为DDoS防御平台的IDS最大的缺点是它只能检测到攻击,但对于缓和攻击的影响却毫无作为。IDS解决方案也许能托付给路由器和防火墙的过滤器,但正如前面叙述的,这对于缓解DDoS攻击效率很低,即便是用类似于静态过滤串联部署的IDS也做不到。
DDoS攻击的手动响应
作为DDoS防御一部份的手动处理太微小并且太缓慢。受害者对DDoS攻击的典型第一反应是询问最近的上游连接提供者——ISP、宿主提供商或骨干网承载商——尝试识别该消息来源。对于地址欺骗的情况,尝试识别消息来源是一个长期和冗长的过程,需要许多提供商合作和追踪的过程。即使来源可被识别,但阻断它也意味同时阻断所有业务——好的和坏的。
这使得Apache对系统资源(CPU时间和内存)需求剧增,最终造成系统变慢甚至完全瘫痪。Apache服务器最大的缺点是,它的普及性使它成为众矢之的。Apache服务器无时无刻不受到DoS攻击的威胁。主要包括以下几种形式。
1.数据包洪水攻击
一种中断服务器或本地网络的方法是数据包洪水攻击,它通常使用Internet控制报文协议(ICMP)包或是UDP包。在最简单的形式下,这些攻击都是使服务器或网络的负载过重,这意味着黑客的网络速度必须比目标的网络速度要快。使用UDP包的优势是不会有任何包返回到黑客的计算机。而使用ICMP包的优势是黑客能让攻击更加富于变化,发送有缺陷的包会搞乱并锁住受害者的网络。目前流行的趋势是黑客欺骗目标服务器,让其相信正在受到来自自身的洪水攻击。
2.磁盘攻击
这是一种更残忍的攻击,它不仅仅影响目标计算机的通信,还破坏其硬件。伪造的用户请求利用写命令攻击目标计算机的硬盘,让其超过极限,并强制关闭。这不仅仅是破坏,受害者会遭遇不幸,因为信息会暂时不可达,甚至丢失。
3.路由不可达
通常,DoS攻击集中在路由器上,攻击者首先获得控制权并操纵目标机器。当攻击者能够更改路由器的路由表条目的时候,会导致整个网络不可达。这种攻击是非常阴险的,因为它开始出现的时候往往令人莫名其妙。毕竟,你的服务器会很快失效,而且当整个网络不可达,还是有很多原因需要详审的。
4.分布式拒绝服务攻击
最有威胁的攻击是分布式拒绝服务攻击(DDoS)。当很多堡垒主机被感染,并一起向你的服务器发起拒绝服务攻击的时候,你将伤痕累累。繁殖性攻击是最恶劣的,因为攻击程序会不通过人工干涉蔓延。Apache服务器特别容易受攻击,无论是对分布式拒绝服务攻击还是隐藏来源的攻击。为什么呢?因为Apache服务器无处不在。在万维网上分布着无数的Apache服务器,因此为Apache定制的病毒(特别是SSL蠕虫)潜伏在许多主机上;带宽如今已经非常充裕,因此有很多的空间可供黑客操纵。蠕虫攻击利用服务器代码的漏洞,通过SSL握手将自己安装在Apache服务器上。黑客利用缓冲溢出将一个伪造的密钥安装在服务器上(适用于运行低于096e版本的OpenSSL的服务器)。攻击者能够在被感染的主机上执行恶意代码,在许多这样的病毒作用下,下一步就是对特定的目标发动一场浩大的分布式拒绝服务攻击了。通过将这样的蠕虫散播到大量的主机上,大规模的点对点攻击得以进行,对目标计算机或者网络带来不可挽回的损失。
服务器遭受攻击后的处理流程
安全总是相对的,再安全的服务器也有可能遭受到攻击。作为一个安全运维人员,要把握的原则是:尽量做好系统安全防护,修复所有已知的危险行为,同时,在系统遭受攻击后能够迅速有效地处理攻击行为,最大限度地降低攻击对系统产生的影响。下面是我整理的服务器遭受攻击后的处理流程:
一、处理服务器遭受攻击的一般思路
系统遭受攻击并不可怕,可怕的是面对攻击束手无策,下面就详细介绍下在服务器遭受攻击后的一般处理思路。
1 切断网络
所有的攻击都来自于网络,因此,在得知系统正遭受黑客的攻击后,首先要做的就是断开服务器的网络连接,这样除了能切断攻击源之外,也能保护服务器所在网络的其他主机。
2 查找攻击源
可以通过分析系统日志或登录日志文件,查看可疑信息,同时也要查看系统都打开了哪些端口,运行哪些进程,并通过这些进程分析哪些是可疑的程序。这个过程要根据经验和综合判断能力进行追查和分析。下面的章节会详细介绍这个过程的处理思路。
3 分析入侵原因和途径
既然系统遭到入侵,那么原因是多方面的,可能是系统漏洞,也可能是程序漏洞,一定要查清楚是哪个原因导致的,并且还要查清楚遭到攻击的途径,找到攻击源,因为只有知道了遭受攻击的原因和途径,才能删除攻击源同时进行漏洞的修复。
4 备份用户数据
在服务器遭受攻击后,需要立刻备份服务器上的用户数据,同时也要查看这些数据中是否隐藏着攻击源。如果攻击源在用户数据中,一定要彻底删除,然后将用户数据备份到一个安全的地方。
5 重新安装系统
永远不要认为自己能彻底清除攻击源,因为没有人能比黑客更了解攻击程序,在服务器遭到攻击后,最安全也最简单的方法就是重新安装系统,因为大部分攻击程序都会依附在系统文件或者内核中,所以重新安装系统才能彻底清除攻击源。
6 修复程序或系统漏洞
在发现系统漏洞或者应用程序漏洞后,首先要做的就是修复系统漏洞或者更改程序bug,因为只有将程序的漏洞修复完毕才能正式在服务器上运行。
7 恢复数据和连接网络
将备份的数据重新复制到新安装的服务器上,然后开启服务,最后将服务器开启网络连接,对外提供服务。
二、检查并锁定可疑用户
当发现服务器遭受攻击后,首先要切断网络连接,但是在有些情况下,比如无法马上切断网络连接时,就必须登录系统查看是否有可疑用户,如果有可疑用户登录了系统,那么需要马上将这个用户锁定,然后中断此用户的远程连接。
1 登录系统查看可疑用户
通过root用户登录,然后执行“w”命令即可列出所有登录过系统的用户,如图1-11所示。
通过这个输出可以检查是否有可疑或者不熟悉的用户登录,同时还可以根据用户名以及用户登录的源地址和它们正在运行的进程来判断他们是否为非法用户。
2 锁定可疑用户
一旦发现可疑用户,就要马上将其锁定,例如上面执行“w”命令后发现nobody用户应该是个可疑用户(因为nobody默认情况下是没有登录权限的),于是首先锁定此用户,执行如下操作:
[root@server ~]# passwd -l nobody
锁定之后,有可能此用户还处于登录状态,于是还要将此用户踢下线,根据上面“w”命令的输出,即可获得此用户登录进行的pid值,操作如下:
[root@server ~]# ps -ef|grep @pts/3
531 6051 6049 0 19:23 00:00:00 sshd: nobody@pts/3
[root@server ~]# kill -9 6051
这样就将可疑用户nobody从线上踢下去了。如果此用户再次试图登录它已经无法登录了。
3 通过last命令查看用户登录事件
last命令记录着所有用户登录系统的日志,可以用来查找非授权用户的登录事件,而last命令的输出结果来源于/var/log/wtmp文件,稍有经验的入侵者都会删掉/var/log/wtmp以清除自己行踪,但是还是会露出蛛丝马迹在此文件中的。
三、查看系统日志
查看系统日志是查找攻击源最好的方法,可查的'系统日志有/var/log/messages、/var/log/secure等,这两个日志文件可以记录软件的运行状态以及远程用户的登录状态,还可以查看每个用户目录下的bash_history文件,特别是/root目录下的bash_history文件,这个文件中记录着用户执行的所有历史命令。
四、检查并关闭系统可疑进程
检查可疑进程的命令很多,例如ps、top等,但是有时候只知道进程的名称无法得知路径,此时可以通过如下命令查看:
首先通过pidof命令可以查找正在运行的进程PID,例如要查找sshd进程的PID,执行如下命令:
[root@server ~]# pidof sshd
13276 12942 4284
然后进入内存目录,查看对应PID目录下exe文件的信息:
[root@server ~]# ls -al /proc/13276/exe
lrwxrwxrwx 1 root root 0 Oct 4 22:09 /proc/13276/exe -> /usr/sbin/sshd
这样就找到了进程对应的完整执行路径。如果还有查看文件的句柄,可以查看如下目录:
[root@server ~]# ls -al /proc/13276/fd
通过这种方式基本可以找到任何进程的完整执行信息,此外还有很多类似的命令可以帮助系统运维人员查找可疑进程。例如,可以通过指定端口或者tcp、udp协议找到进程PID,进而找到相关进程:
[root@server ~]# fuser -n tcp 111
111/tcp: 1579
[root@server ~]# fuser -n tcp 25
25/tcp: 2037
[root@server ~]# ps -ef|grep 2037
root 2037 1 0 Sep23 00:00:05 /usr/libexec/postfix/master
postfix 2046 2037 0 Sep23 00:00:01 qmgr -l -t fifo -u
postfix 9612 2037 0 20:34 00:00:00 pickup -l -t fifo -u
root 14927 12944 0 21:11 pts/1 00:00:00 grep 2037
在有些时候,攻击者的程序隐藏很深,例如rootkits后门程序,在这种情况下ps、top、netstat等命令也可能已经被替换,如果再通过系统自身的命令去检查可疑进程就变得毫不可信,此时,就需要借助于第三方工具来检查系统可疑程序,例如前面介绍过的chkrootkit、RKHunter等工具,通过这些工具可以很方便的发现系统被替换或篡改的程序。
五、检查文件系统的完好性
检查文件属性是否发生变化是验证文件系统完好性最简单、最直接的方法,例如可以检查被入侵服务器上/bin/ls文件的大小是否与正常系统上此文件的大小相同,以验证文件是否被替换,但是这种方法比较低级。此时可以借助于Linux下rpm这个工具来完成验证,操作如下:
[root@server ~]# rpm -Va
L c /etc/pamd/system-auth
S5 c /etc/security/limitsconf
S5T c /etc/sysctlconf
S5T /etc/sgml/docbook-simplecat
S5T c /etc/logindefs
S5 c /etc/openldap/ldapconf
S5T c /etc/sudoers
5T c /usr/lib64/security/classpathsecurity
L c /etc/pamd/system-auth
S5 c /etc/security/limitsconf
S5 c /etc/ldapconf
S5T c /etc/ssh/sshd_config
对于输出中每个标记的含义介绍如下:
S 表示文件长度发生了变化
M 表示文件的访问权限或文件类型发生了变化
5 表示MD5校验和发生了变化
D 表示设备节点的属性发生了变化
L 表示文件的符号链接发生了变化
U 表示文件/子目录/设备节点的owner发生了变化
G 表示文件/子目录/设备节点的group发生了变化
T 表示文件最后一次的修改时间发生了变化
如果在输出结果中有“M”标记出现,那么对应的文件可能已经遭到篡改或替换,此时可以通过卸载这个rpm包重新安装来清除受攻击的文件。
不过这个命令有个局限性,那就是只能检查通过rpm包方式安装的所有文件,对于通过非rpm包方式安装的文件就无能为力了。同时,如果rpm工具也遭到替换,就不能通过这个方法了,此时可以从正常的系统上复制一个rpm工具进行检测。
;1OOB攻击
这是利用NETBIOS中一个OOB(Out of Band)的漏洞而来进行的,它的原理是通过TCP/IP协议传递一个数据包到计算机某个开放的端口上(一般是137、138和139),当计算机收到这个数据包之后就会瞬间死机或者蓝屏现象,不重新启动计算机就无法继续使用TCP/IP协议来访问网络。
2DoS攻击
这是针对Windows 9X所使用的ICMP协议进行的DOS(Denial of Service,拒绝服务)攻击,一般来说,这种攻击是利用对方计算机上所安装协议的漏洞来连续发送大量的数据包,造成对方计算机的死机。
3WinNuke攻击
目前的WinNuke系列工具已经从最初的简单选择IP攻击某个端口发展到可以攻击一个IP区间范围的计算机,并且可以进行连续攻击,还能够验证攻击的效果,还可以对检测和选择端口,所以使用它可以造成某一个IP地址区间的计算机全部蓝屏死机。
4SSPing
这是一个IP攻击工具,它的工作原理是向对方的计算机连续发出大型的ICMP数据包,被攻击的机器此时会试图将这些文件包合并处理,从而造成系统死机。
5TearDrop攻击
这种攻击方式利用那些在TCP/IP堆栈实现中信任IP碎片中的包的标题头所包含的信息来实现自己的攻击,由于IP分段中含有指示该分段所包含的是原包哪一段的信息,所以一些操作系统下的TCP/IP协议在收到含有重叠偏移的伪造分段时将崩溃。TeadDrop最大的特点是除了能够对Windows 9X/NT进行攻击之外,连Linux也不能幸免。
另外,也可以对指定服务器进行漏洞检测,一般服务器上都搭有网站,可尝试对该站进行注入过旁注之类的,或者利用最新漏洞进行溢出攻击!
方法有很多,脑子要灵活!
0条评论