是的,你没看错,我标题写的是"别用马克飞象"了。似乎我的博客里从来没有出现过说不要用某个产品的说辞,但是这一次,我觉得必须要说一下了。如果你在意你的隐私,那就别用马克飞象了。
那么为啥不要用呢?
太长不看版
HTTP传输。全站HTTPS的行动刻不容缓,为 HTTPS 打一场人民战争!
起因
今天白天勤快给小蜗牛童鞋的服务器部署了防盗链,用Nginx大概是下面这样的语法:
valid_referers none blocked www.mingyueli.com *.google.com *.baidu.com *.so.com; if ($invalid_referer) { rewrite ^/ https://okwbu9s8e.qnssl.com/moon-hotlink2.png; }
大家可以看到,如果referer不是www.mingyueli.com *.google.com *.baidu.com *.so.com
这几个,那么就会被302重定向到一个图片上,实际上这个图片也就是盗链提示的图。
晚上的时候,小蜗牛突然给我发图,问我这个防盗链的图是怎么回事。其实我是没想到这么快发现的好吧。想着新站大概也不会有多少流量、有多少盗链,深感此中必有蹊跷,我就分析了下Nginx的日志打算寻找下原因。
首先过滤下302,大概就是这样的命令吧
cat www.mingyueli.com.log|grep –a '302'
然后我就发现了这么奇怪的一行日志
(出于隐私保护,我把小蜗牛童鞋的IP、UA给打上马赛克了)
果真是有个referer,被Nginx撵走了。但是这个referer这么奇葩,竟然是个IP,是哪的呢?
ip.cn查了下,青岛阿里云,本着好奇的想法就贴到了地址栏,我这么一回车啊……
哎我去?我就想,难道这是小蜗牛童鞋自己搭建了一个markdown服务器?不可能啊超级麻烦的,而且闲的没事干啊?
于是我就nslookup
一下马克飞象的官网
当当当!
然而这丫的官网却是带https的,敢情这IP是default_server
啊……
进一步调查
我开始觉得马克飞象这玩意不太靠谱,于是果断去官网,下个客户端,安装-wireshark抓包。当然啦,俺平时是开着VPN的,如果这个时候抓包,直接被路由表搞走了,肯定是没啥效果的,所以我暂时关了VPN
反正抓包的过程也简单的,既然咱都知道要过滤的目标IP是115.29.201.173,所以咱就选择网卡,抓,打开马克飞象,随意做点操作,上传个图啊什么的。
之后停止抓包,过滤条件里输入这么个条件一回车:
ip.dst==115.29.201.173
好多TCP,有点干扰,为了过滤掉多余的TCP,再这么一弄过滤条件
ip.dst==115.29.201.173 and http
我擦别逗我,全都是HTTP的,擦,那我写的东西传输过程中指不定变成啥样、指不定被谁看个遍啊……
太没良心了吧我说!default server
(也就是http://115.29.201.173/client_zh.html)存在的cookies泄露、中间人啥的我就不说了,这客户端直接明文传,是几个意思啊?明文传也就罢了,host还是default server
HTTPS的通信抓包之后应该是咋样的
拿本博做例子,是酱紫的:
咱能明显的看到有Client Hello、密钥交换过程,在这个交换过程中、交换之后,到底做了啥、主机名是啥,咱是真不知道。只有DNS查询过程中能看见我请求了一个解析。这第三者(包括抓包,本质上也算是"窃听者")想要解密,就没那么容易了。
后续
后来手欠看了下马克飞象的安装包,图标大概是这样的
哎我这不是WinRAR的自解压文件吗?那你要个毛管理员权限啊!在一个test.bat
中我发现了这么一句话
莫非是临时工做的?
总结
所以啊,这玩意快扔垃圾桶吧,http是最不能忍的,一丝一毫都不能忍……全站HTTPS是必须的!全世界最大的黄网pornhub都上https了,咱还有啥理由不拥抱全站https啊?
当然了,有些人大可以说,我不在乎我的隐私,嗯这就好似有些人说"政治与我无关"一样。
然而我个人是非常在乎我的、以及我的访客的隐私,这也是我没有开启评论UA、更别提把地理位置信息啥的暴露给大众的原因。
所以在我为小蜗牛童鞋二次开发的主题中,UA选项选项默认是关闭的(那俺为啥要开发这个功能呢?没事闲的、写点程序练练手、满足一下内心那可怕的心理需求、刷刷存在感呗)的确,我可以通过日志、通过访问统计工具来获得访客的UA等信息,如果我想,我可以分析出来一个人都看了什么(很显然我啥时候闲的有这个功夫了)。但是这只有我才能做到,这也就意味着我需要对访客的隐私负责—— 我需要做好服务器的安全工作,保护日志不外泄,尽管访客可能毫不在意这点。
好吧,说实话,其实我是装有Random User-Agent的……
其他markdown替代品
有人可能会问了,有没有啥markdown替代品啊?嗯,在Windows下我使用markdown pad2,在Linux下我使用Remarkable(这家伙也要出Windows版本的,只是一直是Under development)。
如果你使用的是Windows 8及更新版本,markdown pad2可能会有这么一条警告导致无法预览。解决方案很简单,下载awesomium并安装就好啦
更狠一步的解决方案
对于这么嚣张的玩意,我一直是深恶痛绝的,那怎么再以身作则玩一玩呢?
屏蔽马克飞象UA
咦,是不是日志中记录了这么一串UA
Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Marxico/1.0.0 Chrome/47.0.2526.110 Electron/0.36.10 Safari/537.36
那好办了,找到自己的nginx配置文件,server段里加这么一句
if ($http_user_agent ~* (Marxico)) { return 403; }
然后重启Nginx
/etc/init.d/nginx reload
就好了,假如要禁止掉多个UA,那就用管道隔开,形如python-requests|Python-urllib|Marxico
就可以了。
Nginx屏蔽马克飞象IP
呐,这个很简单,直接来一句deny 115.29.201.173;
然后重启Nginx即可。
当然了我这人超级爱黑名单,所以都是新建一个名为blackip.conf
,里面写满了那些我讨厌的IP,然后nginx.conf
里直接include blackip.conf
UFW/iptables屏蔽马克飞象IP
这个就更暴力了,直接来一句
ufw insert 1 deny from 115.29.201.173 to any
世界清净了
最后的致歉
如果原先的防盗链的图给小蜗牛童鞋造成了困扰,那么深表歉意……我是故意的,有一些事情,大概就是它原本的样子,也许只是内心深处最后的挣扎与冲突吧——如果,没有如果。