编程技术分享平台

网站首页 > 技术教程 正文

Linux基础14-网络安全之模拟CC攻击以及防御(连载中)

xnh888 2024-10-16 17:43:31 技术教程 22 ℃ 0 评论

最近有一台服务器的web服务器老是被人攻击导致网站访问特别慢,抓了下包看了下运来是cc攻击

那么什么是cc攻击

cc攻击的原理就是控制某些主机不停的发大量的数据包给服务器造成服务器资源耗尽(资源指带宽,硬件设备) 一直到用户访问不了为止。cc主要是用来攻击页面的,每个人都有这样的体验:当一个网页访问人数特别多的时候,打开网页就慢了,(我相信大家在2014年的时候访问12306买票的网站都有这样的体验吧).cc攻击就是模拟多个用户(多少进程就多少用户)不停的进行访问那些需要大量数据操作(或者带宽)的页面,造成服务器资源浪费,CPU长时间处于百分之百,永远有处理不完的链接直到网络拥塞,正常的访问终止.

既然被攻击了,那么我们就要想办法解决

我们写一个脚本来用iptables把连接过多的给删掉

脚本思路:

1) 我们可以通过iptables来防御攻击我们的IP地址

iptable -I INPUT -s drop_ip -j DROP

2) 怎么获取攻击我的ip

我们要拒绝cc攻击,cc攻击一般是攻击web的那么我们可以去手机web服务器的日志,比如nginx有访问日志

access.log 这个文件就是我们需要查看的

```

[root@CentOS65 ~]# /etc/init.d/nginx start 注意需要先开启nginx服务,可以先把日志文件删掉
shell脚本:
#!/bin/bash
#功能:iptables防火墙监控
# 5分钟之内访问次数超过300的IP全部拒绝
# cc攻击是通过80端口进来主机的
# 在/var/log/nginx/access.log日志文件中有访问记录
#统计各个IP访问数量,筛选出超过100次的IP
drop_ip=`tail -5000 /var/log/nginx/access.log | awk '{num[$1]++}END{for(ip in num)if(num[ip]>100)print ip}'`
if test -n $drop_ip;then #如果drop_ip字符串长度大于零
 for i in $drop_ip
 do 
 asearch=`iptables -nvL|grep $i`
 if [ -z "$asearch" ]
 then #如果防火墙规则里没有这个IP
 /sbin/iptables -I INPUT -s $i --j DROP #将从这个IP访问输入链的包作丢弃处理
 fi 
 done
fi

```

定期执行

```

crontab -e

* */3 * * * sh /usr/local/iptables/drop_iptables.sh

```

测试:

先运行一下模拟cc攻击的程序

过一段时间可以发现生成的日志文件很大了

```

[root@CentOS65 nginx]# du -h access.log
10.8M access.log

```

查看结果

可以看到我们的攻击的模拟器已经不能对网站进行攻击了 出现了错误10060

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表