工作中的一次linux防范ddos攻击推荐

在上班路上,看到手机短信里面发送报警信息,一台服务器凌晨4点下线了.匆忙到工位,检查机器果然下线了,报告老板,然后联系机房.大概十分钟后机房回复,机器受到攻击,机房切断了Ip.

机器用电信联通双网络,既然电信ip被封,那就用联通的ip进入机器.

要素一:机器的硬件信息以及Ip信息平时一定要保管好.免得有问题了还要去问机房,白白浪费很多时间.

进入机器后top等发现机器硬件性能ok,再用iptraf,流量也不高(当然不高,主ip都被切了).

机器跑的是网站业务,所以要找问题,去日志文件里面找访问量最高的ip即可.

要素二:找到日志文件找到攻击ip,前面为访问数量,后面为访问ip

[root@localhostlogs]#awk'{print$1}'xxx.xxx.com.access.log-20160616|sort|uniq-c|sort-n-k1-r|head-n2091653106.185.53.12459492113.116.56.8056556106.186.18.22448629106.187.45.17226962103.61.136.9322825191.101.1.4921068103.61.136.1688947207.46.13.27508157.55.39.95639240.77.167.49367362.210.247.93282746.4.94.2262670207.46.13.1257658.60.220.128240261.143.205.2462035157.55.39.80202945.33.44.221953157.55.39.1051872157.55.39.2421862183.8.3.47

这是我第一次想到的命令,其实在网站访问日志里面应该过滤掉各种蜘蛛爬虫才对,封错了,老板会跟你急眼.所以,正确的命令应该是:

[root@localhostlogs]#catxxx.xxx.com.access.log-20160616|grep-i-v-E"bing|baidu|google|sougou"|awk'{print$1}'|sort|uniq-c|sort-n-k1-r|head-n2091653106.185.53.12459492113.116.56.8056556106.186.18.22448629106.187.45.17226962103.61.136.9322825191.101.1.4921068103.61.136.168366162.210.247.93281446.4.94.226257658.60.220.128240261.143.205.246202945.33.44.221862183.8.3.471300103.61.136.1641066218.6.71.19488014.125.142.19568361.158.163.11768261.158.180.226680218.29.54.198678118.212.147.71

把前几个ip查询,都是日本,台湾,德国.再配合访问日志,得知是cc攻击.

先把这几个Ip用iptables封掉.输入封杀内容,重启iptables.

[root@localhostlogs]#vim/etc/sysconfig/iptables-AINPUT-s106.185.53.124-ptcp-mstate--stateNEW-jDROP[root@localhostlogs]#serviceiptablesrestart

使用iptables查看就可以看到,很多流量包被丢弃;

[root@localhostlogs]#iptables-nvLChainINPUT(policyACCEPT4045Kpackets,604Mbytes)pktsbytestargetprotoptinoutsourcedestination00DROPtcp--**103.61.136.1670.0.0.0/0stateNEW382K18MDROPtcp--**106.186.18.850.0.0.0/0stateNEW974920DROPtcp--**183.8.3.470.0.0.0/0stateNEW380K18MDROPtcp--**106.187.45.1720.0.0.0/0stateNEW30015204DROPtcp--**46.4.94.2260.0.0.0/0stateNEW

这个时候机房那边也解封了电信Ip.观察一段时间,流量正常.

事后,研究写过脚本,把访问量异常的ip获取然后放在一个文件里面,使用iptbales封杀.

[root@localhostlogs]#cat/sbin/cc.sh#!/bin/shLOG_FILE=/usr/local/nginx/logs/xxx.xxx.com.access.log#访问日志IP_FILE=/etc/black#存放需要禁止的ip文件NUMBER=2000#非法访问量的值wan0=eth0#网卡BACKIP=`cat$IP_FILE`#每次操作先清空之前的ip`cat/dev/null $IP_FILE`Denyip=`cat$LOG_FILE|grep-i-v-E"bing|baidu|google|sougou"|awk'{print$1}'|sort|uniq-c|sort-n-k1-r|head-n1000000|awk'{if($1 '$NUMBER')print$2}'`echo$Denyip $IP_FILEif["$BACKIP"!=""];thenforXin$BACKIPdoecho$X---denyiptables-AINPUT-i$wan0-s$X-pall-jDROPdonefi

清空规则很简单,因为没有把规则保存,所以只要用

[root@localhostlogs]#serviceiptablesrestart

就可以把iptbales规则恢复.

反思:1.使用netstat把非法ip列出

2.不遍历整个日志,假设当前被攻击,列出1小时内访问异常的Ip并封杀.

欢迎各位提出解决方案,或者链接

当你开展的事业从事的行动穷途末路大势已去的时候,

工作中的一次linux防范ddos攻击推荐

相关文章:

你感兴趣的文章:

标签云: