日益频繁的网络攻击,因攻击手法趁向于低成本化(月光博客上周被攻击,据月光提供的数据,总共是使用了400多个HTTP代理)、效果化(个人博客、不管是虚拟机还是独立服务器,受到某类攻击CPU直接占满而拒绝服务)、隐蔽化(若无人工干预靠机器无法在保证正常用户体验上准确匹配特征而封禁攻击来源),掌握常见攻击的防护手法对站长、项目团队而言就非常重要了。
阿里云代金券1000元免费领取!领取地址:http://aliyun.jinre.com
新老阿里云账户均可领取!可用于购买阿里云服务器ECS、云数据库RDS、虚拟主机、安骑士、DDoS高防IP等100多云计算产品。
代金券自领取之日起,有效期是30天,请及时使用,过30天后还可以重新领取。
案例1:某站受到分布式网络攻击,CPU正常,网络入口堵满,网站无法正常提供服务。
这是典型的dDoS发包攻击,发包攻击主要针对以下几种目标:
1.占带宽,让目标服务器接受不到新的请求,从而达到拒绝服务的目的。
2.溢出攻击,因伺服系统、操作系统的一些未修复的漏洞,让攻击者探测到,攻击者则可以依此用非常小的代价实现让目标服务器死机、重启、甚至被提权。
此案例属于1情况,攻击者发包的目的就是为拼带宽实现拒绝服务。若是托管在普通机房,没有流量清洗能力的,很快你服务器IP会被机房网关null(网关封了你服务器IP)严重的还会被下架。
若是在阿里云,云盾可以起到一定的防护作用,官方公布的数据是可防20G,承诺免费防护300M。为了防止有漏网之鱼,掌握常用的iptables命令是必要的,毕竟机器不是人,不可能有人工那么智能,而且发包攻击若量较小的时候,很容易被防火墙放过,所以最好、最万无一失的解决之道就是在云主机上封禁IP,配合云盾将服务器受到的影响降到最低。
为防止被溢出攻击,需要日常多关注下系统漏洞,及时为自己的主机打上补丁。
案例2:某网站受到攻击,CPU占满,流量并不高,但网站完全无法打开了。
这是CC攻击(通过某些攻击工具伪造大量僵尸请求,让目标某部分资源耗尽)的特征,首先,你需要明确一个事情,此时WEB服务继续进行,高CPU占用将会成为你在云主机上操作的负担。所以第一件事情:停止WEB服务。
然后是确定攻击源,找到你的日志位置,假设为/var/log/nginx/access.log
假设记录日志的格式为: “访客IP – http method – uri – 日期”这类的(注意看“访客IP”是在日志的首段出现),
则执行
复制代码
cat nginx.log |awk ‘{print $1}’ |cut -f2 |cut -d, -f3 | sort |uniq -c | sort -nr | head -10
复制代码
[root@AY120723082752d383204 nginx]# cat nginx.log |awk ‘{print $1}’ |cut -f2 |cut -d, -f3 | sort |uniq -c | sort -nr | head -10
2947 123.234.34.35
2532 123.234.34.36
…
*.如果是“日期 – 访客IP – …“ 这类,就用cat nginx.log |awk ‘{print 3}' |cut -f2 |cut -d, -f3 | sort |uniq -c | sort -nr | head -10 ,其中的awk '{print 3}' |cut -f2 |cut -d, -f3 | sort |uniq -c | sort -nr | head -10 ,其中的awk '{print 3}’是取出第三段数据(段与段之间是以空格分开的, – 也是用空格与其它字体分隔的,所以”–”也要当做段)。
然后用iptables命令将访问量大的IP屏蔽:
复制代码
iptables -I INPUT -s 123.234.34.35 -j DROP
因为CC攻击通常是由攻击抓取HTTP代理来发起攻击的,如果在没有用CDN的情况下,完全可以在受到攻击时屏蔽请求中包含x-forwarded-for的请求。
实现方法只列举NGINX的:
复制代码
location / {
if ( $http_x_forwarded_for !~ “” ) {
return 444;
}
……
}
nginx return 444是直接掐断连接而不向“访客”返回任何数据,此处不建议使用弹回403等错误代码,这对阿里云用户非常有用的,因为出口带宽极有可能会被这
错误代码直接占满。
备份下日志(mv到备份目录然后压缩,提高下一次分析日志时的效率,避免重复运算),然后你就可以启动WEB服务,看启动过后是否仍受攻击影响。
CC攻击有可能会有几波,通常需要屏蔽好几次才能将代理IP屏蔽干净,上面的操作可能需要在几个小时内重复执行,所以,遇上网络攻击,首先你需要一颗淡定的心,当然你也可以研究新的算法,用更高效的手法查找攻击源。