本站的七牛CDN被冻结,原因是有用户头像违规,但对应的图片在服务器上死活找不到,求大家帮忙

今天收到一封这样的邮件

尊敬的七牛云用户:
您好!
接举报,贵方外链存在违规信息,请立即删除违规资源并刷新URL缓存:
https://cdn.iosre.com/user_avatar/iosre.com/baal998/135/2210_2.png

https://cdn.iosre.com/user_avatar/iosre.com/baal998/64/2210_2.png

https://cdn.iosre.com/user_avatar/iosre.com/baal998/75/2210_2.png

https://cdn.iosre.com/user_avatar/iosre.com/baal998/75/2210_2.png

https://cdn.iosre.com/user_avatar/iosre.com/baal998/75/2210_2.png

https://cdn.iosre.com/user_avatar/iosre.com/lincwee/135/5414_2.png

https://cdn.iosre.com/user_avatar/iosre.com/baal998/75/2210_2.png

https://cdn.iosre.com/user_avatar/iosre.com/lincwee/75/5414_2.png

https://cdn.iosre.com/user_avatar/iosre.com/baal998/96/2210_2.png

https://cdn.iosre.com/user_avatar/iosre.com/lincwee/90/5414_2.png

依据《网络安全法》第47条等相关法律法规的规定,当发现用户存在法律、行政法规禁止发布或者传输的信息的,七牛云有权,并且应当立即采取处置措施,防止信息扩散。
依据《七牛云用户服务协议》第3.1.3.5 条第3.1.3.5.3款,第3.1.3.10条的约定,如发现用户利用七牛云服务发布违法违规信息,七牛云有权立即终止服务或删除相应数据、信息。
基于此,七牛云接到举报后已对上述链接内容进行了屏蔽,还请贵方收到本邮件后立即删除其中的违法违规信息,并对贵方平台其他内容进行自检,防止此类情况再次发生。如再次接到违法违规举报,视情节严重程度,七牛云将依法关停贵方涉案域名,甚至关停贵方账户。
为避免贵方正常业务经营受到影响,还请贵方予以重视,有效采取防范措施。谢谢!
七牛云团队

和一条这样的短信

【七牛云服务】尊敬的七牛云用户,您账号snakeninny@qq.com下的域名cdn.iosre.com已冻结。冻结原因:冻结-违法违规,详情请查看邮箱snakeninny@qq.com。您可登录「Portal/CDN/通知管理」关闭短信通知

把邮件中链接地址的cdn去掉,是https://iosre.com/user_avatar/iosre.com/baal998/135/2210_2.png,可以看到,这是一位敏感人物。这个问题之前出现过一次,七牛已经给我发过一封邮件了,我在discourse官方论坛发了个帖寻求帮助,有了一个初步的解决线索,但问题没有彻底解决,官方也不管这个事了,结果今天CDN就被冻结了。

我ssh到服务器后台找了半天,用户上传图片翻了个遍,死活找不到这张图片,只好求助大家。关于这张图片在哪里,怎么彻底删除,大家有什么思路吗?

你可以在后台更新掉这个图片,然后在访问这张图片时候加上 一些参数,应该可以刷新掉吧,以前我做游戏热更新是这样处理的 类似 https://iosre.com/user_avatar/iosre.com/baal998/135/2210_2.png?xxx=xx这样

现在我就是在服务器上找不到这张图,如果能找到我就直接删掉了

这个资源应该是已经在外面的CDN节点上了,我意思是服务器那边放一个替代的,然后刷新下CDN节点的资源,应该是可以解决的

我已经在论坛后台把这个用户的头像改过来了;但是服务器这边怎么放一个替代的,我不知道,因为不知道这张图片在服务器上的位置在哪里

在服务器全局搜索也搜索不到吗?难道文件名做的有映射关系?

搜不到

应该是的,正在排查呢

要不试试清除一下 nginx 缓存.我看这个论坛程序默认的 nginx 配置有配置缓存.而且这个头像其他大小的链接已经没了,只有 135 的还在.如果是上传时候就自动生成好的,说明只有这一个尺寸的了,如果是根据链接里的参数现生成裁剪的说明源文件已经没了.

我之前删掉了图片后把服务器重启了一遍,这样理论上所有缓存都清除了,但图片还是可以访问,应该就不是缓存的问题了吧

cdn 那边缓存了原图,问cdn 那边要一下图片的md5值, 写个脚本把服务器上所有 md5 符合的图片扫一遍 看看找了删掉

原图就是https://iosre.com/user_avatar/iosre.com/baal998/135/2210_2.png

我把图片的md5和sha1值都计算出来了,然后跟论坛所有图片的md5和sha1值一一比对,没有对得上的;还把论坛上所有头像下载下来肉眼对了一遍,也没有对得上的

可以拍一期走进科学了 :rofl:

即使cdn那边缓存了原图,当我访问https://iosre.com/user_avatar/iosre.com/baal998/135/2210_2.png 时,这访问的也不是CDN,而是我本地的文件吧?

nginx 的缓存好像是以文件形式存储在配置里的proxy_cache_path路径下,重启不会消失.
另外我试了一下 https://iosre.com/user_avatar/iosre.com/baal998/135/2210_2.png?a=1 是无法加载图片的,其他正常图片加了参数一样可以加载,例如这个https://iosre.com/user_avatar/iosre.com/wzqwzq666/135/5914_2.png?a=1 .
可以说明这个违规头像应该就是缓存文件.
再加上在缓存有效期内你或者别人不断的访问导致一直不过期才出现这种情况.(这是我猜的

这个缓存文件在哪里呢?

我先用find ./ -name nginx.conf找出了所有的nginx.conf文件,然后挨个打开,但是都没有看到proxy_cache_path这个字段,不知道是怎么回事

看看这个地方 /var/nginx/cache

如果nginx.conf 里没有,你需要去 nginx.conf 内include里去找.conf 文件,里面肯定有,就算没有也应该有这个网站相关的配置.

没有这个路径

root@iosre:/var# cd /var/nginx/cache
-bash: cd: /var/nginx/cache: No such file or directory
root@iosre:/var# cd cache
root@iosre:/var/cache# ls
apparmor  apt  apt-xapian-index  debconf  dictionaries-common  ldconfig  man  nscd  pppconfig

还是要找到配置,后面跟的就是路径. 类似这种
proxy_cache_path /var/nginx/cache inactive=1440m levels=1:2 keys_zone=one:10m max_size=600m;

好,我找找看,不行我就全局grep一下proxy_cache_path