linux

记一次 阿里云 流量异常 - abnormal network traffic of aliyun cloud

今天早上快到公司楼下了,突然收到微信,我们整个系统都挂了,急匆匆赶到公司,另一位同事已经在跟踪,但没找到问题所在,我登录了 阿里云 后台,查看到流量异常,怎么说呢,服务器按流量计费,公网带宽最大 5M,但是流出的峰值早已经是 7M 多了,逼近 8M,至于为什么会超过 5M 不清楚了。但是有一点很明显,被人 ddos 了或者爬数据了,或者竞争对手恶意为之了,总之出问题了,而后果就是我家的带宽不足,导致正常的请求很慢很慢,于是临时将带宽升级到了 20M,这下子 我终于能 通过 ssh 连接到 服务器了。

先上张图

这是服务器今天网络流入流出的截图,其余四台服务器类似,不重复了。前面说了,这台服务器的带宽是按流量计费,最大峰值 5M,但是实际可能 7.6 M左右了,这一点不知道 阿里云 是怎么实现的,这里略过不提,关键在于 从 2019-10-11 03:00 开始 流入的流量有点大,导致流出很大,最后直接导致带宽被占用完了,到峰值了,正常业务因此受到影响。

问题定位出来了,下一步自然是 如何 确定攻击者(暂且称为攻击者吧)到底攻击的是那个端口,即那个端口在不停的收发流量,确定端口后确定具体部署的应用,然后对症下药。要监控某个端口的流量,恐怕大家都会想到 nethogs,至于其 安装,也非常简单,yum install nethogs 或者 apt install nethogs 即可,然后 直接 sudo nethogs 即可,下面是我在自己博客服务器上跑的截图,不是当时的服务器哦

在这个界面,你还可以按 M 切换单位哦。好了,继续今天的故事,这个界面显示了当前各个进程的流量信息,还有进程的端口号,拿到端口号后可以查看很多信息,比如这里拿到 474 这个端口,额,至于 跑在这个端口的程序,这里不说了,敏感词汇。然后可以 cd /proc/474 即 cd /proc/端口号,进入这个目录后,你会看到很多文件,其中有个文件叫 cmdline ,你可以直接 cat cmdline 会看到当时执行的完整命令,好了,扯远了,这些以后再补充。

我当时看到的情形是,java 进程在一直发送和接收流量,然后看了下,这个端口呢,不应该开放,我们的架构是 用户 请求 nginx,nginx 转发到网关端口,网关转发到应用端口,所以网关和应用端口都不应该对外开放,但是我们的服务器是所有端口都开放,所以很简单,删除所有 阿里云 安全组规则,然后只开放 22、80、443 就够了,至于以后碰到哪里用到了 某个端口而实际没有开放的,可以再加。我后来又增加了一些端口。主要是 阿里 rds 外网是访问不了的,或者说每次都需要允许 ip,很烦,可以做 端口转发,redis 也是,不过现在 阿里云 redis 已经支持外网访问了,应该是的。半年前应该是不行的,又扯远了。

后来,我又做了一些改动,这包括:不允许 ssh 明文登录,nginx 限速限连接、使用fail2ban,具体可以看:

1、Linux Server 安全设置

2、使用 nginx 防御 ddos 攻击

3、fail2ban - 防御 cc 利器

full-stack-trip

Share
Published by
full-stack-trip

Recent Posts

Android 自定义 View 入门

说来惭愧,工作数年,连基本的自…

4 年 ago

retrofit 同时支持 xml 和 json

retrofit 解析 jso…

4 年 ago

mysql - 存储过程 从入门到放弃

最近有个报表的需求,于是乎用了…

4 年 ago

奶嘴战略 - 你不得不知道的扎心真相(一)

一句:英雄枯骨无人问,戏子家事…

4 年 ago

acme.sh 的简单使用

acme.sh 是纯 shel…

4 年 ago

wrk -更现代化的http压测工具

wrk 是一款更现代化的 ht…

4 年 ago