背景 最近这两天prometheus一直再对服务器的下行带宽告警,检查告警发现是一台图片服务器,这台图片服务器是很早部署的一台nginx反向代理本地静态文件的服务器,当时没有做任何的安全防护,只是简单做了一个上传接口暴露给外网,导致这台服务器被黑客入侵,上传了大量文件,同时对这些文件有大量的下载请求,导致服务器的带宽被打满,同时也导致了prometheus的告警。
发现 发现这台服务器的带宽被打满了,所以只能先从这台服务器开始排查。先检查nginx所有大量请求的日志 1cd /var/log/nginx 2awk '{print $7}' access.log | sort | uniq -c | sort -nr | head -n 10 这个是一个图片服务器,看起来都是图片的请求,好像没有发现异常的请求。但是这个图片为什么有那么高的流量呢?检查这个图片,发现图片无法打开,所以我换二进制的方式打开图片
发现图片的二进制头部是 FFmpeg, 所以这是一个伪装成图片的视频文件
解决 检查nginx的配置文件,上传接口拒绝所有外部请求 server{ location /upload { proxy_pass http://192.168.1.1:8080; # 拒绝所有外部请求 allow 192.168.1.0/24; deny all; } } 查找最早上传的文件,创建python文件,并在图片服务器执行 import os # 查找最早包含 FFmpeg 的 JPG 文件 def find_earliest_jpg_with_ffmpeg(directory): earliest_file = None earliest_timestamp = float('inf') for root, dirs, files in os.walk(directory): for file in files: if file.