最近杜老师的一台云服务器向外大量发送流量,不断地建立 TCP 连接,目标地址是美国的一个 IP,估计是被当成肉鸡了,情况比较糟。今天杜老师就聊一下如何处理这个问题!
问题排查
1 | sar -n DEV 2 10 |
注意:在服务器上运行上面命令,确认了出现大量发包的问题。
问题处理
开始之前,先清除 eth0 所有队列规则:
1 | tc qdisc del dev eth0 root 2> /dev/null > /dev/null |
定义顶层队列规则,指定 default 类别编号:
1 | tc qdisc add dev eth0 root handle 1: htb default 20 |
查看状态:
1 | yum install -y tcpdump |
找到大量异常 IP,可以将异常 IP 加入到 /etc/hosts.deny,或者在防火墙中设置一下。之后安装 nethogs:
1 | yum -y install epel-release |
处理结果
找到大量发包进程,之后 kill 掉,排查一下这个进程是什么程序、文件路径在哪,删除掉异常的文件。
目前问题已暂时解决,可以观察一段时间看是否还会再次发生。另外通过防火墙对公网 IP 进行了访问限制,只允许指定 IP 访问,进一步提升安全性。
命令扩展
nethogs 的选项如下:
| 选项 | 作用 |
|---|---|
| V | 显示版本信息,注意是大写字母 V |
| d | 延迟更新刷新速率,秒为单位。默认为 1 |
| t | 跟踪模式 |
| p | 混合模式 |
| 设备 | 要监视的设备名称,默认为 eth0 |
nethogs 运行时,按键效果如下:
| 按键 | 效果 |
|---|---|
| q | 退出 |
| m | 总数、当前使用情况模式之间切换 |