Better

Ethan的博客,欢迎访问交流

博客日志分析

本想通过查看日志分析系统有什么隐藏的BUG,在查找的过程中发现一些奇怪的问题。

奇怪的404请求

查看日志发现很多奇怪的404请求。为什么会有这么多系统根本不支持的访问记录呢?而且千奇百怪?查阅资料才知这可能是代理扫描软件在不断扫描你的系统。

全世界每一秒都有大量的,人工,半人工,全自动的程序在扫瞄 ip 段,注意是 ip 段,而不是唯一 ip,这跟你有没有公布无关,除非你不出现在公网上。

代理扫描软件在检测你的服务器是否支持代理,从而可以利用你的服务器来做跳板访问其它网站。

what?跳板是什么?

目的

就是为了隐藏自己的地址,让别人无法查找到自己的位置。为了更好地隐蔽自己,一些网络攻击者通常并不直接从自己的系统向目标发动攻击,而是先攻破若干中间系统,让它们成为“跳板”,再通过这些“跳板系统”完成攻击行动。

确定目标

攻击者在通过扫描工具进行定点(IP)扫描或者对某IP段扫描的过程中发现了该系统(服务器)的某个漏洞,然后准备实施攻击.

比如,笔者通过对某IP段的扫描,发现该IP段IP地址为211.52.*.84的主机存在MYSQL漏洞,可以通过提权获取系统权限进而控制该服务器.

设计跳板

跳板通俗讲就是一条通往目标主机的主机链,理论上讲当然是链越长就越安全,但是链太长的话连接的速度太慢,因为其中的中转太多. 攻击者往往会评估入侵风险,从而制定或者设计跳板. 一般的原则是,如果是政府. 军队等敏感部门往往跳板会比较多,甚至这些跳板主机会纵横七大洲四大洋. 另外,入侵国内服务器往往也会需要国外的跳板主机.

更多

跳板技术是博大精深,感兴趣的可以深入了解!

系统安全性

系统只要部署在公网上,就存在被代理扫描软件扫描漏洞的风险,那么如何提交主机的安全性呢,最基本的可以隐藏自己服务器的类型和版本,这样一来提高了被扫描漏洞的难度,不会被针对性扫描,具体的解决方法有:

  1. express 里 diable x-powered-by
    • app.disable('x-powered-by');
    • res.removeHeader("X-Powered-By");
    • res.setHeader('X-Powered-By', 'sky pig1024');
  2. nginx 里 关掉 server_tokens
    • http对象添加server_tokens off;达到隐藏服务器版本的目的
    • 如果是编译安装的版本还可以修改服务名词,具体百度

404错误

不知道是否因为代理软件扫描的原因,在代理软件扫描出现404时,如果访问/posts也有可能出现404。在本地通过修改404中间件的顺序模拟,先进入/post,再进入404,最后进入error,此时在404中间件和error中间件时由于多次render,报错Can't set headers after they are sent

这个错误不好排查,目前在项目中埋点,需要慢慢调试呀!

其他错误

formidable错误

今日查看日志,发现一个错误导致服务器自动重启了一次,具体如下:

// formidable/lib/incoming_form.js:157
var bytesParsed = this._parser.write(buffer);
// TypeError: this._parser.write is not a function

错误不总是出现,不太好重现!



留言