DOS、DDOS、CC等完整解决方案

看看你的服务的访问日志,在防火墙中加过滤,或者在web服务器中加过滤吧。方法有以下几种。


1.对于特定的IP访问的情况,限制IP访问
2.限制同一IP在单位时间内的访问次数


另一种方法是利用Iptables预防DOS脚本

#!/bin/bash

netstat -an|grep SYN_RECV|awk '{print$5}'|awk -F: '{print$1}'|sort|uniq -c|sort -rn|awk '{if ($1 >1) print $2}'

for i in $(cat /tmp/dropip)

do

/sbin/iptables -A INPUT -s $i -j DROP

echo “$i kill at `date`” >>/var/log/ddos

done

该脚本会对处于SYN_RECV并且数量达到5个的IP做统计,并且把写到Iptables的INPUT链设置为拒绝。


SYN洪水**是DDOS中最常见的类型之一。是一种利用TCP 协议缺陷,者向被的主机发送大量伪造的TCP连接请求,从而使得被方主机服务器的资源耗尽(CPU 满负荷或内存不足) 的方式。SYN的目标不止于服务器,任何网络设备,都可能会受到这种,针对网络设备的SYN往往会导致整个网络瘫痪。企业遭到SYN该如何防御呢?今天墨者安全就来分享一下如何利用iptables来缓解SYN。**

1、修改等待数
sysctl -w net.ipv4.tcp_max_syn_backlog=2048


2、启用syncookies
sysctl -w net.ipv4.tcp_syncookies=1


3、修改重试次数
sysctl -w net.ipv4.tcp_syn_retries = 0

重传次数设置为0,只要收不到客户端的响应,立即丢弃该连接,默认设置为5次


4、限制单IP并发数
使用iptables限制单个地址的并发连接数量:
iptables -t filter -A INPUT -p tcp --dport 80 --tcp-flags FIN,SYN,RST,ACK SYN -m connlimit --connlimit-above 10 --connlimit-mask 32 -j REJECT


5、限制C类子网并发数
使用iptables限制单个c类子网的并发链接数量:
iptables -t filter -A INPUT -p tcp --dport 80 --tcp-flags FIN,SYN,RST,ACK SYN -m connlimit --connlimit-above 10 --connlimit-mask 24 -j REJECT


6、限制单位时间内连接数
设置如下:

iptables -t filter -A INPUT -p tcp --dport 80 -m --state --syn -m recent --set
iptables -t filter -A INPUT -p tcp --dport 80 -m --state --syn -m recent --update --seconds 60 --hitcount 30 -j DROP


7、修改modprobe.conf
为了取得更好的效果,需要修改/etc/modprobe.conf
options ipt_recent ip_list_tot=1000 ip_pkt_list_tot=60

作用:记录10000个地址,每个地址60个包,ip_list_tot最大为8100,超过这个数值会导致iptables错误


8、限制单个地址最大连接数
iptables -I INPUT -p tcp --dport 80 -m connlimit --connlimit-above 50 -j D

通过上述这些设置,可以缓解SYN**带来的影响,但如果遭到几百几千G的T级流量洪水,那只能选择像墨者安全那样的商业级的防DDOS服务了。墨者盾高防可以隐藏服务器真实IP,利用新的WAF算法过滤技术,清除DDOS异常流量,保障服务器正常运行**。


CC**原理者控制某些主机不停地发大量数据包给对方服务器造成服务器资源耗尽,一直到宕机崩溃。CC主要是用来页面的,每个人都有这样的体验:当一个网页访问的人数特别多的时候,打开网页就慢了,CC就是模拟多个用户(多少线程就是多少用户)不停地进行访问那些需要大量数据操作(就是需要大量CPU时间)的页面,造成服务器资源的浪费,CPU长时间处于100%,永远都有处理不完的连接直至就网络拥塞,正常的访问被中止。CC防御策略**

1.取消域名绑定取消域名绑定后Web服务器的CPU能够马上恢复正常状态,通过IP进行访问连接一切正常。但是不足之处也很明显,取消或者更改域名对于别人的访问带来了不变,另外,对于针对IP的CC它是无效的,就算更换域名者发现之后,者也会对新域名实施


2.更改Web端口一般情况下Web服务器通过80端口对外提供服务,因此者实施就以默认的80端口进行,所以,可以修改Web端口达到防CC的目的。


3.IIS屏蔽IP我们通过命令或在查看日志发现了CC的源IP,就可以在IIS中设置屏蔽该IP对Web站点的访问,从而达到防范IIS的目的。


**CC*的防范手段

1.优化代码尽可能使用缓存来存储重复的查询内容,减少重复的数据查询资源开销。减少复杂框架的调用,减少不必要的数据请求和处理逻辑。程序执行中,及时释放资源,比如及时关闭mysql连接,及时关闭memcache连接等,减少空连接消耗。

2.限制手段对一些负载较高的程序增加前置条件判断,可行的判断方法如下:必须具有网站签发的session信息才可以使用(可简单阻止程序发起的集中请求);必须具有正确的referer(可有效防止嵌入式代码的***);禁止一些客户端类型的请求(比如一些典型的不良蜘蛛特征);同一session多少秒内只能执行一次。

3.完善日志尽可能完整保留访问日志。日志分析程序,能够尽快判断出异常访问,比如单一ip密集访问;比如特定url同比请求激增。


**一、Dos*(Denial of Service attack)

是一种针对服务器的能够让服务器呈现静止状态的**方式。有时候也叫服务停止或拒绝服务。其原理就是发送大量的合法请求到服务器,服务器无法分辨这些请求是正常请求还是请求,所以都会照单全收。海量的请求会造成服务器停止工作或拒绝服务的状态。这就是Dos*


**二、DDOS*****

概念
分布式拒绝服务**(Distributed Denial of Service),简单说就是发送大量请求是使服务器瘫痪。DDos
是在DOS基础上的,可以通俗理解,dos是单挑,而ddos是群殴,因为现代技术的发展,dos的杀伤力降低,所以出现了DDOS,者借助公共网络,将大数量的计算机设备联合起来,向一个或多个目标进行。**

案例

SYN Flood ,简单说一下tcp三次握手,客户端服务器发出请求,请求建立连接,然后服务器返回一个报文,表明请求以被接受,然后客户端也会返回一个报文,最后建立连接。那么如果有这么一种情况,者伪造ip地址,发出报文给服务器请求连接,这个时候服务器接受到了,根据tcp三次握手的规则,服务器也要回应一个报文,可是这个ip是伪造的,报文回应给谁呢,第二次握手出现错误,第三次自然也就不能顺利进行了,这个时候服务器收不到第三次握手时客户端发出的报文,又再重复第二次握手的操作。如果者伪造了大量的ip地址并发出请求,这个时候服务器将维护一个非常大的半连接等待列表,占用了大量的资源,最后服务器瘫痪。
CC,在应用层http协议上发起,模拟正常用户发送大量请求直到该网站拒绝服务为止。

**被*的原因

服务器带宽不足,不能挡住者的流量

预防
最直接的方法增加带宽。但是者用各地的电脑进行,他的带宽不会耗费很多钱,但对于服务器来说,带宽非常昂贵。
云服务提供商有自己的一套完整DDoS解决方案,并且能提供丰富的带宽资源。——如果是阿里云推荐使用高防。

1、采用高性能的网络设备
首先要保证网络设备不能成为瓶颈,因此选择路由器、交换机、硬件防火墙等设备的时候要尽量选用知名度高、口碑好的产品。再就是假如和网络提供商有特殊关系或协议的话就更好了,当大量发生的时候请他们在网络接点处做一下流量限制来对抗某些种类的DDOS是非常有效的。


2、尽量避免NAT的使用
无论是路由器还是硬件防护墙设备要尽量避免采用网络地址转换NAT的使用,因为采用此技术会较大降低网络通信能力,其实原因很简单,因为NAT需要对地址来回转换,转换过程中需要对网络包的校验和进行计算,因此浪费了很多CPU的时间,但有些时候必须使用NAT,那就没有好办法了。


3、充足的网络带宽保证
网络带宽直接决定了能抗受的能力,假若仅仅有10M带宽的话,无论采取什么措施都很难对抗现在的SYNFlood,当前至少要选择100M的共享带宽,最好的当然是挂在1000M的主干上了。但需要注意的是,主机上的网卡是1000M的并不意味着它的网络带宽就是千兆的,若把它接在100M的交换机上,它的实际带宽不会超过100M,再就是接在100M的带宽上也不等于就有了百兆的带宽,因为网络服务商很可能会在交换机上限制实际带宽为10M,这点一定要搞清楚。


4、把网站做成静态页面
大量事实证明,把网站尽可能做成静态页面,不仅能大大提高抗*能力,而且还给**带来不少麻烦,至少到现在为止关于HTML的溢出还没出现,看看吧!新浪、搜狐、网易等门户网站主要都是静态页面,若你非需要动态脚本调用,那就把它弄到另外一台单独主机去,免的遭受*时连累主服务器,当然,适当放一些不做数据库调用脚本还是可以的,此外,最好在需要调用数据库的脚本中拒绝使用代理的访问,因为经验表明使用代理访问你网站的80%属于恶意行为。


常见web安全及防护原理

sql注入原理
就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令
总的来说有以下几点:


1.永远不要信任用户的输入,要对用户的输入进行校验,可以通过正则表达式,或限制长度,对单引号和双”-“进行转换等


2.永远不要使用动态拼装SQL,可以使用参数化的SQL或者直接使用存储过程进行数据查询存取


3.永远不要使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接


4.不要把机密信息明文存放,请加密或者hash掉密码和敏感的信息
XSS原理及防范


Xss(cross-site scripting)**指的是者往Web页面里插入恶意html标签或者javascript代码。比如:者在论坛中放一个看似安全的链接,骗取用户点击后,窃取cookie中的用户私密信息;或者者在论坛中加一个恶意表单,当用户提交表单的时候,却把信息传送到*者的服务器中,而不是用户原本以为的信任站点


XSS防范方法

首先代码里对用户输入的地方和变量都需要仔细检查长度和对”<”,”>”,”;”,”’”等字符做过滤;其次任何内容写到页面之前都必须加以encode,避免不小心把html tag 弄出来。这一个层面做好,至少可以堵住超过一半的XSS ***
XSS与CSRF有什么区别吗?

XSS是获取信息,不需要提前知道其他用户页面的代码和数据包。CSRF是代替用户完成指定的动作,需要知道其他用户页面的代码和数据包。要完成一次CSRF***,受害者必须依次完成两个步骤

登录受信任网站A,并在本地生成Cookie

在不登出A的情况下,访问危险网站B
CSRF的防御

服务端的CSRF方式方法很多样,但总的思想都是一致的,就是在客户端页面增加伪随机数
通过验证码的方法
是否了解 Web 注入***(最常见 XSS 和 CSRF)?


SQL注入

把SQL命令插入到表单或输入URL查询字符串提交,欺骗服务器达到执行恶意的SQL目的
XSS(Cross Site Script),跨站脚本***

者在页面里插入恶意代码,当用户浏览该页之时,执行嵌入的恶意代码达到目的
CSRF(Cross Site Request Forgery),跨站点伪造请求

伪造合法请求,让用户在不知情的情况下以登录的身份访问,利用用户信任达到***目的


**如何防范 Web 前端*

不要信任任何外部传入的数据

针对用户输入作相关的格式检查、过滤等操作
不要信任在任何传入的第三方数据

使用 CORS,设置 Access-Control-Allow-Origin
更安全地使用 Cookie

设置Cookie为HttpOnly,禁止了JavaScript操作Cookie
防止网页被其他网站内嵌为iframe

服务器端设置 X-Frame-Options 响应头,防止页面被内嵌


**APR*发现

首先诊断是否为ARP病毒***

1、当发现上网明显变慢,或者突然掉线时,我们可以用arp -a命令来检查ARP表:(点击“开始”按钮-选择“运行”-输入“cmd”点击”确定”按钮,在窗口中输入“arp -a”命令)如果发现网关的MAC地址发生了改变,或者发现有很多IP指向同一个物理地址,那么肯定就是ARP欺骗所致。这时可以通过”arp -d“清除arp列表,重新访问。

2、利用ARP防火墙类软件(如:360ARP防火墙、AntiARPSniffer等)。


**如何判断交换机是否受到ARP*以及处理方式

**一、如果网络受到了ARP*,可能会出现如下现象:

1、用户掉线、频繁断网、上网慢、业务中断或无法上网。

2、设备CPU占用率较高、设备托管、下挂设备掉线、设备主备状态震荡、设备端口指示灯红色快闪。

3、Ping有时延、丢包或不通。


局域网内的机器遭到ARP病毒欺骗**,如果找到源头的机器,将其病毒或杀掉,局域网内机器就会恢复正常,那么如何才能快速定位到*的源头机器呢?


1、用arp -a命令。当发现上网明显变慢,或者突然掉线时,我们可以用arp -a命令来检查ARP表。如果发现网关的MAC地址发生了改变,或者发现有很多IP地址指向同一个MAC地址,那么肯定就是ARP***所致。


2、利用彩影ARP防火墙软件查看。如果网卡是处于混杂模式或者ARP请求包发送的速度大或者ARP请求包总量非常大,判断这台机器有可能就是“元凶”。定位好机器后,再做病毒信息收集工作。


3、通过路由器的“系统历史记录”查看。由于ARP程序发作的时候会发出大量的数据包导致局域网通讯阻塞以及其自身处理能力的限制,用户会感觉上网速度越来越慢。当ARP程序停止运行时,用户会恢复从路由器上网,切换过程中用户会再断一次线。这个消息代表了用户的MAC地址发生了变化,在ARP**开始运行的时候,局域网所有主机的MAC地址更新为病毒主机的MAC地址(即所有信息的MAC New地址都一致为病毒主机的MAC地址),同时在路由器的“用户统计”中看到所有用户的MAC地址信息都一样。

如果是在路由器的“系统历史记录”中看到大量MAC Old地址都一致,则说明局域网内曾经出现过ARP(ARP的***程序停止运行时,主机在路由器上恢复其真实的MAC地址)。


***方式:

**1. 简单的诈骗*****

这是对比多见的,经过发送伪造的ARP包来诈骗路由和方针主机,让方针主机认为这是一个合法的主机,便完成了诈骗,这种诈骗多发生在同一网段内,因为路由不会把本网段的包向外转发,当然完成不一样网段的也有办法,便要经过ICMP协议来告诉路由器从头挑选路由。

2. 根据ARP的DOS

这是新呈现的一种办法,D.O.S又称拒绝服务,当大量的衔接请求被发送到一台主机时,因为主机的处理才能有限,不能为正常用户提供服务,便呈现拒绝服务。这个过程中假如运用ARP来躲藏自己,在被主机的日志上就不会呈现真实的IP,也不会影响到本机。

3. MAC Flooding

这是一个对比风险的***,能够溢出交流机的ARP表,使全部网络不能正常通讯。

4. 交流环境的嗅探

在开始的小型局域网中咱们运用HUB来进行互连,这是一种广播的办法,每个包都会经过网内的每台主机,经过运用软件,就能够嗅谈到全部局域网的数据。现在的网络多是交流环境,网络内数据的传输被锁定的特定方针。既已断定的方针通讯主机,在ARP诈骗的根底之上,能够把自己的主机伪形成一个中心转发站来监听两台主机之间的通讯。

**arp*的防护

1. ARP 高速缓存超时设置

在ARP高速缓存中的表项一般都要设置超时值,缩短这个这个超时值能够有用的避免ARP表的溢出。

2. IP+MAC访问操控 ? —–推荐使用

单纯依托IP或MAC来树立信赖联系是不安全,抱负的安全联系树立在IP+MAC的根底上,这也是咱们校园网上网有必要绑定IP和MAC的因素之一。

3. 静态ARP缓存表

每台主机都有一个暂时寄存IP-MAC的对应表ARP***就经过更改这个缓存来到达诈骗的意图,运用静态的ARP来绑定正确的MAC是一个有用的办法,在命令行下运用arp -a能够检查当时的ARP缓存表。

4. 自动查询

在某个正常的时间,做一个IP和MAC对应的数据库,以后定时检查当时的IP和MAC对应联系是否正常,定时检查交流机的流量列表,检查丢包率。

ARP本省不能形成多大的损害,一旦被联系使用,其风险性就不可估量,因为ARP自身的疑问,使得防备ARP的***很棘手,经常检查当时的网络状况,监控流量对一个站来说是个很好的风气