服务器被攻击企业案例

释放双眼,带上耳机,听听看~!
服务器遭受到攻击,直接显示出运维的能力不行。我对此非常的自责,但是通过这次让我知道了运维的重要性,和重要职责!

服务器遭受攻击导致无法打开网址

服务器遭受攻击导致无法打开网址

2016年9月6日

今天我们公司发生了一个故障,首先是网站的带宽跑满,其次是CPU一直上不去。因为我们公司的服务器架构只有简单的1个nginx负载2台web。Web上面是2台有几个tomcat项目包

首先我们先查看阿里云监控的流量图,我们可以看到正常流量。然后突然流量大增

1.png-10.7kB

2.png-15.6kB

3.png-38.3kB

这里CPU使用率一直特别高,所以我使用了top命令来查看进程,发现不是这里的问题。

4.png-316.9kB

但是,看到web上面的tomcat项目并没有占用多少资源。开始进行日志查看

首先我查看的是系统错误日志

5.png-35.2kB

发现好像是洪水攻击,当时就有点不冷静了。因为服务器已经影响到业务。导致无法SSH连接进行管理,当时就设置了tcp的连接数,发现设置完成之后好了。但是几分钟之后还是出现问题。

当时把所有的服务器全停了,然后等了半个小时,在次开启,发现一开起几分钟就会出现这种问题。

6.png-23.9kB

后来发现一停掉,负载就下去。最后通过nginx负载均衡发现问题

---

在这期间,我查看了阿里云监控的态势感知

1.png-75.2kB

发现公司的服务器一直被攻击,当时项目整个的方案已经写好,还没实施就发生了这个问题。顿时感到心里有阴影!

当时有人让我查看一下web访问日志,终于发现了问题!

[root@vm-69-6cc2 logs]# grep 07/Sep/2016 mallView_access.log |awk '{a[$1]++}END{for(i in a)print i,a[i]}'
114.111.167.89 60
111.205.180.168 60
60.205.125.164 407876

有一个IP跟我们一直建立连接!

温馨提示:有的时候光查看web访问日志是不行的。因为我们公司的人员都访问我们自己的网站,此时Web访问日志会有很多。所以我们还要查看连接数

netstat -an|grep "ESTABLISHED"|awk -F "[ :]+" '{print $6}'|sort|uniq -c|sort -rn -k1

如下图

1.png-3.7kB

果断设置防火墙拒绝这个IP地址

4.jpg-26kB

从新启动发现负载正常。

因为当时显示带宽用的特别多,出口带宽。我就是用了nethogs工具查看内部带宽情况

3.png-5.8kB

提示:如果有使用阿里云服务器的同学,请务必要购买云盾和CDN等相关缓存业务。否则吃亏的是自己!

防范DDOS攻击脚本

#防止SYN攻击 轻量级预防

iptables -N syn-flood 
iptables -A INPUT -p tcp --syn -j syn-flood 
iptables -I syn-flood -p tcp -m limit --limit 3/s --limit-burst 6 -j RETURN 
iptables -A syn-flood -j REJECT

#防止DOS太多连接进来,可以允许外网网卡每个IP最多15个初始连接,超过的丢弃

iptables -A INPUT -i eth0 -p tcp --syn -m connlimit --connlimit-above 15 -j DROP 
iptables -A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT

#用Iptables抵御DDOS (参数与上相同)

iptables -A INPUT  -p tcp --syn -m limit --limit 12/s --limit-burst 24 -j ACCEPT
iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT

##########################################################

防范CC攻击

当apache站点受到严重的cc攻击,我们可以用iptables来防止web服务器被CC攻击,实现自动屏蔽IP的功能。

1.系统要求

(1)LINUX 内核版本:2.6.9-42ELsmp2.6.9-55ELsmp(其它内核版本需要重新编译内核,比较麻烦,但是也是可以实现的)。

(2)iptables版本:1.3.7

2. 安装

安装iptables1.3.7系统内核版本对应的内核模块kernel-smp-modules-connlimit

3. 配置相应的iptables规则

示例如下:

(1)控制单个IP的最大并发连接数

iptables -I INPUT -p tcp --dport 80 -m connlimit  --connlimit-above 50 -j REJECT #允许单个IP的最大连接数为 30

#默认iptables模块不包含connlimit,需要自己单独编译加载,请参考该地址

http://sookk8.blog.51cto.com/455855/280372不编译内核加载connlimit模块

(2)控制单个IP在一定的时间(比如60秒)内允许新建立的连接

iptables -A INPUT -p tcp --dport 80 -m recent --name BAD_HTTP_ACCESS --update --seconds 60 --hitcount 30 -j REJECT iptables -A INPUT -p tcp --dport 80 -m recent --name BAD_HTTP_ACCESS --set -j ACCEPT

#单个IP在60秒内只允许最多新建30个连接

4. 验证

(1)工具:flood_connect.c(用来模拟攻击)

(2)查看效果:

使用

watch 'netstat -an | grep:21 | grep<模拟攻击客户机的IP>| wc -l'

实时查看模拟攻击客户机建立起来的连接数,使用watch 'iptables -L -n -v | \grep<模拟攻击客户机的IP>'

查看模拟攻击客户机被 DROP 的数据包数。

5.注意

为了增强iptables防止CC攻击的能力,最好调整一下ipt_recent的参数如下:

#cat/etc/modprobe.conf options ipt_recent ip_list_tot=1000 ip_pkt_list_tot=60
#记录1000个IP地址,每个地址记录60个数据包 #modprobe ipt_recent

本段转载:http://sookk8.blog.51cto.com/455855/321242/


我自己写的脚本,本脚本是参考刘沈晨的防DDOS攻击,进行改写,写入定时任务即可!

[root@vm-69-6cc2 ~]# cat /server/scripts/iptables.sh 
#!/bin/sh
IP_filter_command="iptables -I INPUT -j DROP -s"
IP_recover_command="iptables -D INPUT -j DROP -s"
IP(){
  netstat -an|grep "ESTABLISHED"|awk -F "[ |:]+" '{print $6}'|sort |uniq -c|sort -rn -k1 > /server/scripts/ip.txt
}

a(){
   exec < /server/scripts/ip.txt
   while read line
   do
     IP_count=`echo $line|awk '{print $1}'`
     IP=`echo $line|awk '{print $2}'`
     IP_fil=`iptables -L -n|grep "\b${IP}\b"|wc -l`
     if [ ${IP_count} -gt 50 -a ${IP_fil} -eq 0 ];then
        ${IP_filter_command} ${IP}
        echo "${IP}" >> /server/scripts/ip_filtered.txt
        action "Filter ${IP}" /bin/true
     fi
   done
}
IP
a

总结:按照今天的错误发现了很多问题,首先我们公司没有监控。导致只有网站宕机了才会进行报警。其次最重要的一点,出了问题看日志!

2016年9月6日23:51:20

特么的,就在刚刚准备睡觉的时候。突然有人进行攻击!

1.jpg-93.6kB

果断封IP脚本!

最后查看了攻击的IP地址

1.png-3.1kB

2.png-3.1kB

按照分析可能是爬虫IP. 果断要买阿里云的安骑士,否则基础访问都做不了!

给TA买糖
共{{data.count}}人
人已赞赏
Linux

通知!

2016-9-6 19:05:53

Linux

安装部署Opennms

2016-10-13 19:18:55

2 条回复 A文章作者 M管理员
  1. 确实是企业案例,多多更新!

  2. 程某某

    没准就是阿里的人故意攻击的,为了让你买服务。

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索