阿里云的ECS访问量莫名暴增的处理过程

2023-11-20

前端时间把域名切到了另一个机器中,  并把控制流量的定时脚本关掉了, 然后!! 上周五发现这台机器(aliyunos 3)还有流量在偷跑, 扣了我不少费用, 无语..... 果断把这台机器停了...cao....

2023-10-20

Linux中有个工具叫 tc (traffic control), 使用来控制计算机往外流出流量的

数据先从内核, 流入到网卡, 再从网卡流出到外部网络中,  tc 可以控制流入到网卡(ingress)的数据, 也可以控制从网卡流出(egress)的数据

它通过丢包, 来让tcp协议调整数据流出速度

它通过建立 随机公平队列(SFQ)来控制流量/带宽不被某个连接全部占用

2023-10-11

准备摆烂了,  写了个脚本, 当连续几次流量超过1m时, 直接关闭网络服务, 每10分钟重启一次网络服务, 看看情况

获取累计流量(流入/流出)的有几种方法:

1 cat /sys/class/net/eth0/statistics/tx_bytes
2 
3 cat /proc/net/dev | grep eth0 | awk '{print $10}'
4 
5 ifconfig eth0 | grep TX | grep bytes | awk '{print $5}'

网络启动 /usr/sbin/ifup 关闭: /usr/sbin/ifdown

效果:

 

 

2023-10-10

使用netstat命令统计外部ip的访问数量, 通过正常访问来攻击网站, 而不是通过协议层的一些办法

netstat -ntup | awk '{print $5}' | awk '!/servers/' | awk '!/Address/' | awk '!/100.100/' | cut -d: -f1 | sort | uniq -c | sort -n

输出:

1 172.16.15.253
2 15.204.18.201
2 180.169.131.242

 

今天发现把nginx关掉后, 仍然有大量流量流出,

通过iftop命令查出有很多发往香港的数据, 流入的数据量基本没有, 接收流量的也不是阿里云插件的IP, 但是死活找不到是哪个进程发起的,

咨询了阿里云客服, 说让我安装 atop netatop 工具去查看, 但还没看

 

2023-10-7

nginx 限流方案 

请求限制:  Module ngx_http_limit_req_module (nginx.org) 请求限制, 可以自定义, 以ip或server_name为key进行限流, 但是如果ip过多, 就要考虑用地址段来限流了

链接限制: Module ngx_http_limit_conn_module (nginx.org) 

用法说明: 如何使用 Nginx 优雅的限流 - 知乎 (zhihu.com)

 

2023-9-8

最近一段时间, 我的ecs流量访问异常(1M带宽, 已被打满), 就是每隔几分钟就要扣我几毛钱, 我的小网站平常基本上没有流量, 都是我自己在玩,

今天还给我整的欠费停机了, 这下给我整不开心了, 就去找了阿里售后客服.

客服也没说啥有价值的, 给了我一篇文章, 让我自己找异常IP:

如何查看Linux系统网络流量负载情况_云服务器 ECS-阿里云帮助中心 (aliyun.com)

恶意IP列表: 威胁情报 (bjos.cn)

第一步: 加IP黑名单

下图: 左1:扣费历史 左2:近一小时公网流出(很平均) 左3: 欠费后停机  左4: 加了ip段黑名单后

    

操作过程:

(土办法)

1. 用 nethogs 查看访问量最大的几个IP地址

2. 复制出来, 用正则匹配出网址

3. 挨个看看IP归属地, 发现很多阿里内网的请求, 以及 美国/荷兰等海外的外网请求

4, 更新nginx的黑名单(主要是把海外的IP禁掉, 期间用正则处理了一下), 重启nginx后就暂时好了, 后续再观察观察

(上点科技)

1. 解析nginx access.log, 得到 ip 地址 (PHP解析Nginx访问日志并生成SQL-CSDN博客)

2. 购买一个ip地址库的api (百度智能云, api商城, 有0元20万次一年的)

3. 循环查询ip归属地, 海外的ip自动生成 ip.black 文件 (记得去重, 避免重复的ip地址查询)

4. 更新nginx的ip.black 文件, 重启nginx

5. tail -f 查看nginx的access.log文件, 看看返回状态是不是403多了起来

nginx IP黑名单文件(部分):

deny 205.210.0.0/16;
deny 194.50.0.0/16;
deny 198.199.0.0/16;
deny 172.176.0.0/16;
deny 35.90.0.0/16;
deny 65.49.0.0/16;
deny 107.170.0.0/16;
deny 65.154.0.0/16;
deny 192.241.0.0/16;
deny 66.175.0.0/16;
deny 54.215.0.0/16;
deny 198.235.0.0/16;
deny 151.235.0.0/16;
deny 179.43.0.0/16;
deny 66.249.0.0/16;
deny 54.176.0.0/16;
deny 45.128.0.0/16;
deny 45.66.0.0/16;
deny 159.203.0.0/16;
deny 162.216.0.0/16;
deny 103.144.0.0/16;
deny 138.197.0.0/16;
deny 35.233.0.0/16;
deny 194.180.0.0/16;
deny 45.79.0.0/16;
deny 34.76.0.0/16;
deny 52.167.0.0/16;
deny 194.87.0.0/16;
deny 80.187.0.0/16;
deny 35.203.0.0/16;
deny 90.151.0.0/16;
View Code

 

 第二步: 关闭 rpcbind进程

周一来看看访问量有没有下降, 发现还有, 心想这么加黑名单也不是办法, 于是就用 netsta 命令查看到底哪些端口一直再被访问, 结果发现了大量的 rpcbind 进程:

# netstat -tunp
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 172.16.10.159:111       205.210.31.136:53836    ESTABLISHED 481/rpcbind
tcp        0      0 172.16.10.159:111       209.17.97.90:64137      ESTABLISHED 481/rpcbind
tcp        0      0 172.16.10.159:111       198.74.56.46:52430      ESTABLISHED 481/rpcbind
tcp        0      0 172.16.10.159:111       45.33.87.154:38059      ESTABLISHED 481/rpcbind
tcp        0      0 172.16.10.159:111       192.3.251.169:40253     ESTABLISHED 481/rpcbind
tcp        0      0 172.16.10.159:111       205.210.31.149:54176    ESTABLISHED 481/rpcbind
tcp        0      0 172.16.10.159:111       45.33.87.154:38976      ESTABLISHED 481/rpcbind
tcp        0      0 172.16.10.159:20048     172.104.210.105:56798   ESTABLISHED 1030/rpc.mountd
tcp        0      0 172.16.10.159:111       46.148.20.13:60000      ESTABLISHED 481/rpcbind
tcp        0      0 172.16.10.159:111       205.210.31.151:50118    ESTABLISHED 481/rpcbind
tcp        0      0 172.16.10.159:111       209.17.96.250:63905     ESTABLISHED 481/rpcbind
tcp        0      0 172.16.10.159:111       107.173.180.231:41884   ESTABLISHED 481/rpcbind
tcp        0      0 172.16.10.159:111       209.17.97.34:52730      ESTABLISHED 481/rpcbind
tcp        0      0 172.16.10.159:111       89.248.165.7:61270      ESTABLISHED 481/rpcbind
tcp        0      0 172.16.10.159:111       107.174.176.6:46094     ESTABLISHED 481/rpcbind
tcp        0      0 172.16.10.159:111       205.210.31.130:53521    ESTABLISHED 481/rpcbind
tcp        0      0 172.16.10.159:111       205.210.31.170:51097    ESTABLISHED 481/rpcbind
tcp        0      0 172.16.10.159:111       198.235.24.161:53406    ESTABLISHED 481/rpcbind
tcp        0      0 172.16.10.159:111       89.248.165.7:62104      ESTABLISHED 481/rpcbind
tcp        0      0 172.16.10.159:111       45.33.87.154:42517      ESTABLISHED 481/rpcbind
tcp        0      0 172.16.10.159:111       172.104.210.105:56753   ESTABLISHED 481/rpcbind
tcp        0      0 172.16.10.159:111       45.33.87.154:38978      ESTABLISHED 481/rpcbind
tcp        0      0 172.16.10.159:111       92.63.196.97:44654      ESTABLISHED 481/rpcbind
tcp        0      0 172.16.10.159:111       45.33.87.154:38972      ESTABLISHED 481/rpcbind
tcp        0      0 172.16.10.159:111       205.210.31.33:53912     ESTABLISHED 481/rpcbind
tcp        0      0 172.16.10.159:20048     69.164.217.74:50026     ESTABLISHED 1030/rpc.mountd
tcp        0      0 172.16.10.159:20048     192.155.88.231:35787    ESTABLISHED 1030/rpc.mountd
tcp        0      0 172.16.10.159:111       218.16.138.122:61001    ESTABLISHED 481/rpcbind
tcp        0      0 172.16.10.159:111       204.15.78.236:45561     ESTABLISHED 481/rpcbind
tcp        0      0 172.16.10.159:111       205.210.31.6:57306      ESTABLISHED 481/rpcbind
tcp        0      0 172.16.10.159:111       77.83.36.44:47935       ESTABLISHED 481/rpcbind
tcp        0      0 172.16.10.159:111       107.174.176.6:49038     ESTABLISHED 481/rpcbind
tcp        0      0 172.16.10.159:111       198.235.24.24:50266     ESTABLISHED 481/rpcbind
......
View Code

网上查了查, 这个是用于 NFS 服务的, 阿里云报警过有黑客利用这个端口来进行DDOS攻击(low货的攻击方法):

【风险预警】RPCBind服务UDP反射DDoS攻击预警 (aliyun.com)

然后关闭了rpcbind服务:

 1 1、关闭 rpcbind 服务
 2 sudo systemctl stop rpcbind
 3 
 4 2、关闭开机自启动
 5 sudo  systemctl disable rpcbind
 6 
 7 3、立即执行关闭
 8 systemctl stop rpcbind.socket
 9 
10 4、 验证是否监听
11 netstat -ap | grep rpc

删除pid

cd /run

rm -rf rpcbind

rm -rf rpcbind.sock

 

关闭后, 发现还有一些rpc.mount的服务, 暂时没有管, 看看接下来的情况吧.

2023-9-25 

过了两周, 发现还是有异常的访问, 同时也查到  rpc.xxx是nfs相关的额一些服务, 找出这些服务, 关掉, 并禁止开机启动

找到相关的额服务, 然后关闭

# systemctl list-unit-files --type=service | grep nfs
nfs-blkmap.service                         disabled
nfs-convert.service                        enabled
nfs-idmapd.service                         static
nfs-mountd.service                         static
nfs-server.service                         enabled
nfs-utils.service                          static
nfsdcld.service                            static

 

使用 nethogs 命令发现还是有很多端口的访问, 于是使用firewalld 管理端口, (firewalld是为了代替iptables的, 比较好用)

# 启动firewalld
systemctl start firewalld

# 允许 80, 443 端口的访问
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=443/tcp --permanent

# 重启 firewalld (重启才会生效)
firewall-cmd --reload

# 查看开放的端口
firewall-cmd --list-ports

# 开机自启
systemctl enable firewalld

 

posted @ 2023-09-08 18:45  myD  阅读(488)  评论(0编辑  收藏  举报