背景
现在DDOS攻击越来越频繁,无需什么技术即可就行DDOS拒绝服务经常一些站长反映自己的网站经常出现mysql 1040错误,他的在线用户才不到一千,mysql配置也没问题。一般遇到这站情况就需注意了,你的网站可能被CC攻击了。
解决方案及思路
CC攻击防御措施,鉴于系统是centos,运行了下面的这两行命令。
1
|
netstat
-
anlp
|
grep
80
|
grep
tcp
|
awk
'{print $5}'
|
awk
-
F
:
'{print $1}'
|
sort
|
uniq
-
c
|
sort
-
nr
|
head
-
n20
|
netstat
-
ant
|
awk
'/:80/{split($5,ip,":");++A[ip[1]]}END{for(i in A) print A[i],i}'
|
sort
-
rn
|
head
-
n20
|
把请求过多的IP记录下来。
1
2
3
|
222.127.94.
*
247.27.128.
*
145.27.133.
*
|
开始封禁IP,具体可以看我下面运行的命令。本文主要是采用iptables进行封禁
1
2
3
4
|
iptables
-
I
INPUT
-
s
222.127.94.0
/
16
-
j
DROP
iptables
-
I
INPUT
-
s
247.27.128.0
/
16
-
j
DROP
iptables
-
I
INPUT
-
s
145.27.133.0
/
16
-
j
DROP
iptables
-
I
INPUT
-
s
193.1.0.0
/
8
-
j
DROP
【慎用封禁整个段】
|
运行上面这些命令之后我们已经完成封禁操作了,不过还得保存一下,如果不保存的话重启系统之后上面设定的规则会消失。
1
|
service
iptables
save
|
运行下面这行命令,来查看谁的访问量最高(需要服务器安装tcpdump)
1
2
3
4
5
6
7
8
|
tcpdump
-
i
eth0
-
tnn
dst
port
80
-
c
1000
|
awk
-
F
"."
'{print $1"."$2"."$3"."$4}'
|
sort
|
uniq
-
c
|
sort
-
nr
|
head
-
20
tcpdump
:
verbose
output
suppressed
,
use
-
v
or
-
vv
for
full
protocol
decode
listening
on
eth0
,
link
-
type
EN10MB
(
Ethernet
)
,
capture
size
65535
bytes
1000
packets
captured
1000
packets
received
by
filter
0
packets
dropped
by
kernel
1420
IP
174.7.7.
*
|
然后将packets过多的IP记录下来,用上面的方法封禁。
运行
1
|
service
iptables
save
|
保存然后重启
1
|
iptables
service
iptables
restart
|
这一步建议多进行几次,发现异常IP用上面的办法封禁。如果出现误封可以参考下面这行解封命令进行解封
1
|
iptables
-
D
INPUT
-
s
222.142.2.0
/
16
-
j
DROP
|
常用命令
封单个IP的命令是:
1
|
iptables
-
I
INPUT
-
s
211.1.0.0
-
j
DROP
|
封IP段的命令是:
1
2
3
|
iptables
-
I
INPUT
-
s
211.1.0.0
/
16
-
j
DROP
iptables
-
I
INPUT
-
s
211.2.0.0
/
16
-
j
DROP
iptables
-
I
INPUT
-
s
211.3.0.0
/
16
-
j
DROP
|
封整个B段的命令是:
1
|
iptables
-
I
INPUT
-
s
211.0.0.0
/
8
-
j
DROP
|
封几个段的命令是:
1
2
|
iptables
-
I
INPUT
-
s
61.37.80.0
/
24
-
j
DROP
iptables
-
I
INPUT
-
s
61.37.81.0
/
24
-
j
DROP
|
后续
进行了上面的操作之后,客户的网站正常了,几乎秒开,当然这和他的vps给力也有一定的关系。top了一下,服务器资源也正常了。
以上方法只做参考具体操作因情况而定,多多主意网络安全,不要给骇客有机可乘!