很多站长朋友们都不太清楚php防ddos,今天小编就来给大家整理php防ddos,希望对各位有所帮助,具体内容如下:
本文目录一览: 1、 ddos攻击是什么?怎么阻止服务器被ddos? 2、 防御DDoS攻击的几种好用的方式 3、 网站nginx配置限制单个IP访问频率,预防DDOS恶意攻击 4、 过度网络流量导致网络瘫痪,这是什么恶性程序 ddos攻击是什么?怎么阻止服务器被ddos?DDoS攻击是由DoS攻击转化的,这项攻击的原理以及表现形式是怎样的呢?要如何的进行防御呢?本文中将会有详细的介绍,需要的朋友不妨阅读本文进行参考.
DDoS攻击原理是什么?随着网络时代的到来,网络安全变得越来越重要。在互联网的安全领域,DDoS(Distributed
DenialofService)攻击技术因为它的隐蔽性,高效性一直是网络攻击者最青睐的攻击方式,它严重威胁着互联网的安全。接下来的文章中小编将会介绍DDoS攻击原理、表现形式以及防御策略。希望对您有所帮助。
DDoS攻击原理及防护措施介绍
一、DDoS攻击的工作原理
1.1 DDoS的定义
DDos的前身 DoS
(DenialofService)攻击,其含义是拒绝服务攻击,这种攻击行为使网站服务器充斥大量的要求回复的信息,消耗网络带宽或系统资源,导致网络或系统不胜负荷而停止提供正常的网络服务。而DDoS分布式拒绝服务,则主要利用
Internet上现有机器及系统的漏洞,攻占大量联网主机,使其成为攻击者的代理。当被控制的机器达到一定数量后,攻击者通过发送指令操纵这些攻击机同时向目标主机或网络发起DoS攻击,大量消耗其网络带和系统资源,导致该网络或系统瘫痪或停止提供正常的网络服务。由于DDos的分布式特征,它具有了比Dos远为强大的攻击力和破坏性。
1.2 DDoS的攻击原理
如图1所示,一个比较完善的DDos攻击体系分成四大部分,分别是攻击者( attacker也可以称为master)、控制傀儡机(
handler)、攻击傀儡机( demon,又可称agent)和受害着(
victim)。第2和第3部分,分别用做控制和实际发起攻击。第2部分的控制机只发布令而不参与实际的攻击,第3部分攻击傀儡机上发出DDoS的实际攻击包。对第2和第3部分计算机,攻击者有控制权或者是部分的控制权,并把相应的DDoS程序上传到这些平台上,这些程序与正常的程序一样运行并等待来自攻击者的指令,通常它还会利用各种手段隐藏自己不被别人发现。在平时,这些傀儡机器并没有什么异常,只是一旦攻击者连接到它们进行控制,并发出指令的时候,攻击愧儡机就成为攻击者去发起攻击了。
图1分布式拒绝服务攻击体系结构
之所以采用这样的结构,一个重要目的是隔离网络联系,保护攻击者,使其不会在攻击进行时受到监控系统的跟踪。同时也能够更好地协调进攻,因为攻击执行器的数目太多,同时由一个系统来发布命令会造成控制系统的网络阻塞,影响攻击的突然性和协同性。而且,流量的突然增大也容易暴露攻击者的位置和意图。整个过程可分为:
1)扫描大量主机以寻找可入侵主机目标;
2)有安全漏洞的主机并获取控制权;
3)入侵主机中安装攻击程序;
4)用己入侵主机继续进行扫描和入侵。
当受控制的攻击代理机达到攻击者满意的数量时,攻击者就可以通过攻击主控机随时发出击指令。由于攻击主控机的位置非常灵活,而且发布命令的时间很短,所以非常隐蔽以定位。一旦攻击的命令传送到攻击操纵机,主控机就可以关闭或脱离网络,以逃避追踪要着,攻击操纵机将命令发布到各个攻击代理机。在攻击代理机接到攻击命令后,就开始向目标主机发出大量的服务请求数据包。这些数据包经过伪装,使被攻击者无法识别它的来源面且,这些包所请求的服务往往要消耗较大的系统资源,如CP或网络带宽。如果数百台甚至上千台攻击代理机同时攻击一个目标,就会导致目标主机网络和系统资源的耗尽,从而停止服务。有时,甚至会导致系统崩溃。
另外,这样还可以阻塞目标网络的防火墙和路由器等网络设备,进一步加重网络拥塞状况。于是,目标主机根本无法为用户提供任何服务。攻击者所用的协议都是一些非常常见的协议和服务。这样,系统管理员就难于区分恶意请求和正连接请求,从而无法有效分离出攻击数据包
二、DDoS攻击识别
DDoS ( Denial of Service,分布式拒绝服务) 攻击的主要目的是让指定目标无注提供正常服务,甚至从互联网上消失,是目前最强大、最难防御的攻击方式之一。
2.1 DDoS表现形式
DDoS的表现形式主要有两种,一种为流量攻击,主要是针对网络带宽的攻击,即大量攻击包导致网络带宽被阻塞,合法网络包被虚假的攻击包淹没而无法到达主机;另一种为资源耗尽攻击,主要是针对服务器主机的政击,即通过大量攻击包导致主机的内存被耗尽或CPU内核及应用程序占完而造成无法提供网络服务。
2.2 攻击识别
流量攻击识别主要有以下2种方法:
1) Ping测试:若发现Ping超时或丢包严重,则可能遭受攻击,若发现相同交换机上的服务器也无法访问,基本可以确定为流量攻击。测试前提是受害主机到服务器间的ICMP协议没有被路由器和防火墙等设备屏蔽;
2)
Telnet测试:其显著特征是远程终端连接服务器失败,相对流量攻击,资源耗尽攻击易判断,若网站访问突然非常缓慢或无法访问,但可Ping通,则很可能遭受攻击,若在服务器上用Netstat-na命令观察到大量
SYN_RECEIVED、 TIME_WAIT, FIN_
WAIT_1等状态,而EASTBLISHED很少,可判定为资源耗尽攻击,特征是受害主机Ping不通或丢包严重而Ping相同交换机上的服务器正常,则原因是攻击导致系统内核或应用程序CPU利用率达100%无法回应Ping命令,但因仍有带宽,可ping通相同交换机上主机。
三、DDoS攻击方式
DDoS攻击方式及其变种繁多,就其攻击方式面言,有三种最为流行的DDoS攻击方式。
3.1 SYN/ACK Flood攻击
这种攻击方法是经典有效的DDoS攻击方法,可通杀各种系统的网络服务,主要是通过向受害主机发送大量伪造源P和源端口的SYN或ACK包,导致主机的缓存资源被耗尽或忙于发送回应包而造成拒绝服务,由于源都是伤造的故追踪起来比较困难,缺点是实施起来有一定难度,需要高带宽的僵尸主机支持,少量的这种攻击会导致主机服务器无法访问,但却可以Ping的通,在服务器上用
Netstat-na命令会观察到存在大量的 SYN
RECEIVED状态,大量的这种攻击会导致Ping失败,TCP/IP栈失效,并会出现系统凝固现象,即不响应键盘和鼠标。普通防火墙大多无法抵御此种攻击。
攻击流程如图2所示,正常TCP连接为3次握手,系统B向系统A发送完 SYN/ACK分组后,停在 SYN
RECV状态,等待系统A返回ACK分组;此时系统B已经为准备建立该连接分配了资源,若攻击者系统A,使用伪造源IP,系统B始终处于“半连接”等待状态,直至超时将该连接从连接队列中清除;因定时器设置及连接队列满等原因,系统A在很短时间内,只要持续高速发送伪造源IP的连接请求至系统B,便可成功攻击系统B,而系统B己不能相应其他正常连接请求。
图2 SYN Flooding攻击流程
3.2 TCP全连接攻击
这种攻击是为了绕过常规防火墙的检查而设计的,一般情况下,常规防火墙大多具备过滤
TearDrop、Land等DOS攻击的能力,但对于正常的TCP连接是放过的,殊不知很多网络服务程序(如:IIS、
Apache等Web服务器)能接受的TCP连接数是有限的,一旦有大量的TCP连接,即便是正常的,也会导致网站访问非常缓慢甚至无法访问,TCP全连接攻击就是通过许多僵尸主机不断地与受害服务器建立大量的TCP连接,直到服务器的内存等资源被耗尽面被拖跨,从而造成拒绝服务,这种攻击的特点是可绕过一般防火墙的防护而达到攻击目的,缺点是需要找很多僵尸主机,并且由于僵尸主机的IP是暴露的,因此此种DDOs攻击方容易被追踪。
3.3 TCP刷 Script脚本攻击
这种攻击主要是针对存在ASP、JSP、PHP、CGI等脚本程序,并调用 MSSQL Server、My SQL Server、
Oracle等数据库的网站系统而设计的,特征是和服务器建立正常的TCP连接,不断的向脚本程序提交查询、列表等大量耗费数据库资源的调用,典型的以小博大的攻击方法。一般来说,提交一个GET或POST指令对客户端的耗费和带宽的占用是几乎可以忽略的,而服务器为处理此请求却可能要从上万条记录中去查出某个记录,这种处理过程对资源的耗费是很大的,常见的数据库服务器很少能支持数百个查询指令同时执行,而这对于客户端来说却是轻而易举的,因此攻击者只需通过
Proxy代理向主机服务器大量递交查询指令,只需数分钟就会把服务器资源消耗掉而导致拒绝服务,常见的现象就是网站慢如蜗牛、ASP程序失效、PHP连接数据库失败、数据库主程序占用CPU偏高。这种攻击的特点是可以完全绕过普通的防火墙防护,轻松找一些Poxy代理就可实施攻击,缺点是对付只有静态页面的网站效果会大打折扣,并且有些代理会暴露DDOS攻击者的IP地址。
四、DDoS的防护策略
DDoS的防护是个系统工程,想仅仅依靠某种系统或产品防住DDoS是不现实的,可以肯定的说,完全杜绝DDoS目前是不可能的,但通过适当的措施抵御大多数的DDoS攻击是可以做到的,基于攻击和防御都有成本开销的缘故,若通过适当的办法增强了抵御DDoS的能力,也就意味着加大了攻击者的攻击成本,那么绝大多数攻击者将无法继续下去而放弃,也就相当于成功的抵御了DDoS攻击。
4.1 采用高性能的网络设备
抗DDoS攻击首先要保证网络设备不能成为瓶颈,因此选择路由器、交换机、硬件防火墙等设备的时候要尽量选用知名度高、口碑好的产品。再就是假如和网络提供商有特殊关系或协议的话就更好了,当大量攻击发生的时候请他们在网络接点处做一下流量限制来对抗某些种类的DDoS攻击是非常有效的。
4.2 尽量避免NAT的使用
无论是路由器还是硬件防护墙设备都要尽量避免采用网络地址转换NAT的使用,除了必须使用NAT,因为采用此技术会较大降低网络通信能力,原因很简单,因为NAT需要对地址来回转换,转换过程中需要对网络包的校验和进行计算,因此浪费了很多CPU的时间。
4.3 充足的网络带宽保证
网络带宽直接决定了能抗受攻击的能力,假若仅有10M带宽,无论采取何种措施都很难对抗现在的
SYNFlood攻击,当前至少要选择100M的共享带宽,1000M的带宽会更好,但需要注意的是,主机上的网卡是1000M的并不意味着它的网络带宽就是千兆的,若把它接在100M的交换机上,它的实际带宽不会超过100M,再就是接在100M的带宽上也不等于就有了百兆的带宽,因为网络服务商很可能会在交换机上限制实际带宽为10M。
4.4 升级主机服务器硬件
在有网络带宽保证的前提下,尽量提升硬件配置,要有效对抗每秒10万个SYN攻击包,服务器的配置至少应该为:P4
2.4G/DDR512M/SCSI-HD,起关键作用的主要是CPU和内存,内存一定要选择DDR的高速内存,硬盘要尽量选择SCSI的,要保障硬件性能高并且稳定,否则会付出高昂的性能代价。
4.5 把网站做成静态页面
大量事实证明,把网站尽可能做成静态页面,不仅能大大提高抗攻击能力,而且还给黑客入侵带来不少麻烦,到现在为止还没有出现关于HTML的溢出的情况,新浪、搜狐、网易等门户网站主要都是静态页面。
此外,最好在需要调用数据库的脚本中拒绝使用代理的访问,因为经验表明使用代理访问我们网站的80%属于恶意行为。
五、总结
DDoS攻击正在不断演化,变得日益强大、隐密,更具针对性且更复杂,它已成为互联网安全的重大威胁,同时随着系统的更新换代,新的系统漏洞不断地出现,DDoS的攻击技巧的提高,也给DDoS防护增加了难度,有效地对付这种攻击是一个系统工程,不仅需要技术人员去探索防护的手段,网络的使用者也要具备网络攻击基本的防护意识和手段,只有将技术手段和人员素质结合到一起才能最大限度的发挥网络防护的效能。相关链接
防御DDoS攻击的几种好用的方式随着Internet互联网络带宽的增加和多种DDoS黑客工具的不断发布,DDoS拒绝服务攻击的实施越来越容易,DDoS攻击事件正在成上升趋势。出于商业竞争、打击报复和网络敲诈等多种因素,导致很多IDC托管机房、商业站点、游戏服务器、聊天网络等网络服务商长期以来一直被DDoS攻击所困扰,随之而来的是客户投诉、同虚拟主机用户受牵连、法律纠纷、商业损失等一系列问题,因此,解决DDoS攻击问题成为网络服务商必须考虑的头等大事。
DDoS是英文Distributed Denial of Service的缩写,意即分布式拒绝服务,那么什么又是拒绝服务(Denial of Service)呢?可以这么理解,凡是能导致合法用户不能够访问正常网络服务的行为都算是拒绝服务攻击。也就是说拒绝服务攻击的目的非常明确,就是要阻止合法用户对正常网络资源的访问,从而达成攻击者不可告人的目的。
虽然同样是拒绝服务攻击,但是DDoS和DOS还是有所不同,DDoS的攻击策略侧重于通过很多僵尸主机(被攻击者入侵过或可间接利用的主机) 向受害主机发送大量看似合法的网络包,从而造成网络阻塞或服务器资源耗尽而导致拒绝服务,分布式拒绝服务攻击一旦被实施,攻击网络包就会犹如洪水般涌向受害主机,从而把合法用户的网络包淹没,导致合法用户无法正常访问服务器的网络资源,因此,拒绝服务攻击又被称之为洪水式攻击。
常见的DDoS攻击手段有SYN Flood、ACK Flood、UDP Flood、ICMP Flood、TCP Flood、Connections Flood、Script Flood、Proxy Flood等;而DOS则侧重于通过对主机特定漏洞的利用攻击导致网络栈失效、系统崩溃、主机死机而无法提供正常的网络服务功能,从而造成拒绝服务,常见的DOS攻击手段有TearDrop、Land、Jolt、IGMP Nuker、Boink、Smurf、Bonk、OOB等。就这两种拒绝服务攻击而言,危害较大的主要是DDoS攻击,原因是很难防范,至于DOS攻击,通过给主机服务器打补丁或安装防火墙软件就可以很好地防范,后文会详细介绍怎么对付DDoS攻击。三、被DDoS了吗?
DDoS的表现形式主要有两种,一种为流量攻击,主要是针对网络带宽的攻击,即大量攻击包导致网络带宽被阻塞,合法网络包被虚假的攻击包淹没而无法到达主机;另一种为资源耗尽攻击,主要是针对服务器主机的攻击,即通过大量攻击包导致主机的内存被耗尽或CPU被内核及应用程序占完而造成无法提供网络服务。
当然,这样测试的前提是你到服务器主机之间的ICMP协议没有被路由器和防火墙等设备屏蔽,否则可采取Telnet主机服务器的网络服务端口来测试,效果是一样的。不过有一点可以肯定,假如平时Ping你的主机服务器和接在同一交换机上的主机服务器都是正常的,突然都Ping不通了或者是严重丢包,那么假如可以排除网络故障因素的话则肯定是遭受了流量攻击,再一个流量攻击的典型现象是,一旦遭受流量攻击,会发现用远程终端连接网站服务器会失败。
相对于流量攻击而言,资源耗尽攻击要容易判断一些,假如平时Ping网站主机和访问网站都是正常的,发现突然网站访问非常缓慢或无法访问了,而 Ping还可以Ping通,则很可能遭受了资源耗尽攻击,此时若在服务器上用Netstat -na命令观察到有大量的SYN_RECEIVED、TIME_WAIT、FIN_WAIT_1等状态存在,而ESTABLISHED很少,则可判定肯定是遭受了资源耗尽攻击。
还有一种属于资源耗尽攻击的现象是,Ping自己的网站主机Ping不通或者是丢包严重,而Ping与自己的主机在同一交换机上的服务器则正常,造成这种原因是网站主机遭受攻击后导致系统内核或某些应用程序CPU利用率达到100%无法回应Ping命令,其实带宽还是有的,否则就Ping不通接在同一交换机上的主机了。
当前主要有三种流行的DDoS攻击:
1、SYN/ACK Flood攻击:这种攻击方法是经典最有效的DDoS方法,可通杀各种系统的网络服务,主要是通过向受害主机发送大量伪造源IP和源端口的SYN或ACK 包,导致主机的缓存资源被耗尽或忙于发送回应包而造成拒绝服务,由于源都是伪造的故追踪起来比较困难,缺点是实施起来有一定难度,需要高带宽的僵尸主机支持。
少量的这种攻击会导致主机服务器无法访问,但却可以Ping的通,在服务器上用Netstat -na命令会观察到存在大量的SYN_RECEIVED状态,大量的这种攻击会导致Ping失败、TCP/IP栈失效,并会出现系统凝固现象,即不响应键盘和鼠标。普通防火墙大多无法抵御此种攻击。
2、TCP全连接攻击:这种攻击是为了绕过常规防火墙的检查而设计的,一般情况下,常规防火墙大多具备过滤TearDrop、Land等DOS攻击的能力,但对于正常的TCP连接是放过的,殊不知很多网络服务程序(如:IIS、Apache等Web服务器)能接受的TCP连接数是有限的。
一旦有大量的TCP连接,即便是正常的,也会导致网站访问非常缓慢甚至无法访问,TCP全连接攻击就是通过许多僵尸主机不断地与受害服务器建立大量的TCP连接,直到服务器的内存等资源被耗尽而被拖跨,从而造成拒绝服务,这种攻击的特点是可绕过一般防火墙的防护而达到攻击目的,缺点是需要找很多僵尸主机,并且由于僵尸主机的IP是暴露的,因此容易被追踪。
3、刷Script脚本攻击:这种攻击主要是针对存在ASP、JSP、PHP、CGI等脚本程序,并调用MSSQLServer、 MySQLServer、Oracle等数据库的网站系统而设计的,特征是和服务器建立正常的TCP连接,并不断的向脚本程序提交查询、列表等大量耗费数据库资源的调用,典型的以小博大的攻击方法。
一般来说,提交一个GET或POST指令对客户端的耗费和带宽的占用是几乎可以忽略的,而服务器为处理此请求却可能要从上万条记录中去查出某个记录,这种处理过程对资源的耗费是很大的,常见的数据库服务器很少能支持数百个查询指令同时执行,而这对于客户端来说却是轻而易举的,因此攻击者只需通过 Proxy代理向主机服务器大量递交查询指令,只需数分钟就会把服务器资源消耗掉而导致拒绝服务。
常见的现象就是网站慢如蜗牛、ASP程序失效、PHP连接数据库失败、数据库主程序占用CPU偏高。这种攻击的特点是可以完全绕过普通的防火墙防护,轻松找一些Proxy代理就可实施攻击,缺点是对付只有静态页面的网站效果会大打折扣,并且有些Proxy会暴露攻击者的IP地址。
网站nginx配置限制单个IP访问频率,预防DDOS恶意攻击对于网站来说,尤其是流量较大出名的网站,经常遇到攻击,如DDOS攻击等,虽然有些第三方,如Cloudflare可以挡,但对于动态网站PHP来说,只能挡一部分。这时候需要对于单个IP恶意攻击做出限流。nginx的两个模块可以限流。
nginx两个限流模块:
连接频率限制,ngx_http_limit_conn_module:官方文档:
请求频率限制,ngx_http_limit_req_module:官方文档:
网上理论很多,根据名字可知:
当然还是看不懂的话,通俗点讲(相对于时间比较):
比如秒杀,抢购,连接频率限制和请求频率限制应该配合使用 , 使用连接频率限制同一IP同时只能有3个连接, 再使用请求频率限制对于同一ip的请求,限制平均速率为5个请求/秒 , 这样比单独只使用一种限制要好很多。
比如只使用请求频率限制 , 可以精确地限制同一ip1秒只能发起5次的http请求 , 假如同一ip1秒内发起了100000次请求 , 虽然限制了只有5次成功响应 , 但是其他的99995次的请求TCP握手建立http连接是不是会消耗服务器资源? 所以还需要配合使用。
1、limit_req_zone,示例:
2、limit_conn_zone,示例:
3、搭配一起使用
1、ab命令
ab是apache自带的压力测试工具。一般不用额外安装,ab非常实用,它不仅可以对apache服务器进行网站访问压力测试,也可以对或其它类型的服务器进行压力测试。比如nginx、tomcat、IIS等。
测试命令
2、wrk命令
需自己安装,地址:
安装
测试命令:
还有其他压测工具,自行研究
过度网络流量导致网络瘫痪,这是什么恶性程序过度网络流量导致网络瘫痪1.系统在早上9点的时候非常慢,单台服务器占用流量很大,使交换机流量被占满,而连累挂在同一交换机上的其他应用也无法提供服务,或者速度非常慢
2.通过查看进程发现大量的perl程序占用了大量的CPU,并且无法被kill掉
3.通过查看网络设备的监控,发现网络带宽在8点20分左右被OA服务器所在的交换端口占满,拔掉该OA服务器的网线,网络恢复正常,重新插上系统瘫痪,可以断定问题出在该服务器上
4.重启系统后恢复正常

防火墙日志

流量走势

临时解决办法:
1.将OA系统挂载在单独的交换机上,并且对该交换机连接OA的端口限速,这样可以保证OA不会占用过多的带宽
2.安装安全狗服务器版,找到了部分asp的程序(没有对asp过滤,里面有一句话木马,系统是PHP的)
3.启用硬件防火墙的防DDOS功能

咨询多方专家后给出的解决方案如下:
1.针对系统做优化(这样可以抵御少量的攻击)
2.够买专业的防火墙设备
3.把系统迁移到云服务器上,用云来清洗流量
4.在系统发生故障时抓包,对包进行分析
# tcpdump -i em1 -w > /tmp/em120160317
5.使用nethops进行流量定位,找到引发流量对应的程序
# yum -y install nethogs
Loaded plugins: fastestmirror, refresh-packagekit
Loading mirror speeds from cached hostfile
* base: centos.ustc.edu.cn
* extras:
* updates:
Setting up Install Process
No package nethogs available.
Error: Nothing to do

# yum install epel-release -y
# nethops em1
真实的解决方法:
通过咨询其他同事,之前在北京的应用windows系统碰到类似的情况,是病毒引起的,杀毒后解决了问题,但当时可能被杀毒软件误删了操作系统文件,需要谨慎
后来搜索了下还真有linux下的杀毒软件
此次我们选择了nod32 linux x64版进行杀毒,查杀出了恶意木马,经过几天的观察发现没有再次出现服务器大量带宽被占用的情况,该问题暂时得到缓解
为什么选nod32,是因为之前在上一家公司任职的时候也碰到类似2003系统占用大量带宽使公司员工都上不了网的情况,用nod32杀掉蠕虫后解决问题
具体安装步骤,请参考前面的博文:
centos系统安装nod32杀毒软件并通过xmanager进行远程管理
安装需要输入用户名及注册码,输入后并升级到最新版本的病毒库
通过安装nod32 linux 64位版,升级病毒库以后,确实干掉了进程中出现的perl脚步,并且运行的用户也对上了,该事件暂告一段落

注意:
需要测试,不要直接在服务器运行,中间碰到了很多问题,测试的时候没有碰到类似问题(硬件不一样,测试环境是联想的PC,生产环境的服务器是dellr720,这个需要引起注意,下班后操作,并且需要做好备机,避免出现致命问题能及时恢复)
关于php防ddos的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。
查看更多关于php防ddos php防ddos攻击代码的详细内容...