开发者社区> 科技小能手> 正文

在百花之中干掉一个杂草连接...

简介:
+关注继续查看

早上接到阿里云的服务器报警,说有一台服务器的流量超标,这个服务器的外网带宽是5M,但是登陆进去使用#iftop -i eth1发现里面的流量已经几乎跑满,如图:

wKioL1j1huahS67iAAF_zOlJVeo445.png


我这个服务器的名称叫online-mts-001,为啥会有一个mail25.u.tsender.com,这个是什么鬼?莫非是通过我的服务器去连接这个“邮箱”域名?于是我就ping了一下这个mail25.u.tsender.com,结果如图:

wKioL1j1h2eSzPTTAACG1Mg43pk828.png


看到这个域名对应的ip地址是115.29.177.8,嗯,115.29.177.8,哎?这个ip地址好熟悉啊,卧槽,这特么不是这个online-mts-001的外网ip么?

wKiom1j1h8WTYI_-AAFekKgrysw748.png


也就是说我这个机器在我不知道的情况下被人绑定了一个域名!但是我这个服务器不是网页服务器,上面那个tsender.com的域名打不开,我检查了服务器一番,发现这个机器没有被人入侵的痕迹,只能说是被人有意/无意(无意的可能性更大,比如看错了阿拉伯数字)绑定了域名。


被人绑定了域名就好比被人起了外号一样,一旦非本人操作就不太好往下摘了,查了很多资料都没有办法,毕竟主动权不在我这里了。


但是回头过来,我们的重心是要解决那个占据了3M带宽的连接,#netstat 看了一下,发现这个连接的具体信息如下:

wKioL1j1iS3CEKFoAAAps18eNgc369.png


仅仅是干掉连接的话,方法有很多,关闭网卡再重开或者关闭相应的服务都可以,但是现在的问题是这台服务器是生产环境的服务器,它主要是给用户提供视频拉流,通过抓包分析得知,这位183.228.128.188的用户合法通过外网连接到了这台视频服务器,而且拉取的是高清视频,所以才占据了这么大的带宽。不过我们还是决定先断开这位用户的连接同时不动其他用户的连接,这位183.228.128.188的用户在客户端虽然会发觉视频断开,但是有缓存和人为刷新的客观因素,实际的体验不会差太多,至少不会投诉400...


那么如何干掉一个established连接同时保证其他连接呢?请使用tcpkill。


tcpkill的下载比较有说法,下面是安装步骤:

1)wget http://rpm.repo.onapp.com/ramdisk-hv/centos6/dsniff/libnids-1.24-1.el6.x86_64.rpm

2)wget http://rpm.repo.onapp.com/ramdisk-hv/centos6/dsniff/libnet-1.1.5-1.el6.x86_64.rpm

3)wget http://rpm.repo.onapp.com/ramdisk-hv/centos6/dsniff/dsniff-2.4-0.14.b1.el6.x86_64.rpm

4)yum install libICE libSM libXmu -y

5)rpm -ivh libnet-1.1.5-1.el6.x86_64.rpm

6)rpm -ivh libnids-1.24-1.el6.x86_64.rpm 

7)rpm -ivh  dsniff-2.4-0.14.b1.el6.x86_64.rpm

请按顺序操作,不然的话dsniff就会报错:

1
2
3
4
warning: dsniff-2.4-0.14.b1.el6.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID 0608b895: NOKEY
error: Failed dependencies:
libnet.so.1()(64bit) is needed by dsniff-2.4-0.14.b1.el6.x86_64
libnids.so.1.24()(64bit) is needed by dsniff-2.4-0.14.b1.el6.x86_64

安装完毕之后,就会生成tcpkill命令,如图:

wKiom1j1sruBMzU2AACxKEY_jf8710.png


然后断开上面那个大带宽连接的命令是:#./tcpkill -i eth0 src port 9132 and dst port 9595 and src host 115.29.177.8 dst host 183.228.128.188 或者#./tcpkill -s 115.29.177.8:9132 -d 183.228.128.188:9595


但是要注意一下!tcpkill 一定要运行在能接收到应答包的主机上在,最好运行在连接或半连接存在的一端主机上,因为tcpkill会发现这个连接里有数据传输进而感知并且干掉。而且tcpkill默认情况下是只能干掉established状态的连接,对于假死连接(连接在,但是数据不传输)或者半连接由于tcp keeplive没打开而又没有数据向对端发送,导致一直无法感知次连接其实已经断开)是无法断开的。


如果遇到上述所说的假死连接和半连接就需要手动更改tcpkill的源码,更改原理在https://yq.aliyun.com/articles/59308


如果使用的系统是ubuntu or  debian,还可以使用cutter命令,#apt-get install cutter下载即可。使用方法:http://www.cyberciti.biz/tips/cutting-the-tcpip-network-connection-with-cutter.html


至于第一个问题,怎么把这台服务器上的域名撤除,我倒要好好想想了...





参考资料:

http://www.cyberciti.biz/howto/question/linux/kill-tcp-connection-using-linux-netstat.php


http://www.gnutoolbox.com/tcpkill-command/



本文转自 苏幕遮618 51CTO博客,原文链接:http://blog.51cto.com/chenx1242/1917007



版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,大概有三种登录方式:
9422 0
阿里云ECS云服务器初始化设置教程方法
阿里云ECS云服务器初始化是指将云服务器系统恢复到最初状态的过程,阿里云的服务器初始化是通过更换系统盘来实现的,是免费的,阿里云百科网分享服务器初始化教程: 服务器初始化教程方法 本文的服务器初始化是指将ECS云服务器系统恢复到最初状态,服务器中的数据也会被清空,所以初始化之前一定要先备份好。
13797 0
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
20079 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,云吞铺子总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系统盘、创建快照、配置安全组等操作如何登录ECS云服务器控制台? 1、先登录到阿里云ECS服务器控制台 2、点击顶部的“控制台” 3、通过左侧栏,切换到“云服务器ECS”即可,如下图所示 通过ECS控制台的远程连接来登录到云服务器 阿里云ECS云服务器自带远程连接功能,使用该功能可以登录到云服务器,简单且方便,如下图:点击“远程连接”,第一次连接会自动生成6位数字密码,输入密码即可登录到云服务器上。
33084 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
18367 0
23705
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载