Web 防火墙的构思
2019-12-04 本文已影响0人
码农UP2U
最近有一个不成熟的想法,经过简单的测试应该可以实现,但是实现的效果并不好,感觉还需要提高一些内在的能力
端口复用
在使用 Socket 编程时有一个很不错的功能就是端口复用,最早了解端口复用是在接触木马的时候学习到的,它可以通过端口复用来隐藏木马的端口,在隐藏端口的同时可以嗅探、截获、甚至篡改和截断发往原本端口上的数据。不过端口复用不单单是用在恶意程序的开发上,后来了解到端口复用不但可以用在恶意程序的开发上,还可以用在服务器开发的优化上,真的很强大。
Web 防火墙
既然端口复用可以绑定到同一个端口上,那么自己写一个端口复用的程序绑定到 Nginx 或 Apache 等服务器上,那么是不是就可以在 Nginx 或 Apache 之前拿到 HTTP 的请求头呢?为了验证这个想法,我写了一个 Demo 进行测试,也验证了自己的想法的确是可以的。Web 防火墙的大致示意图如下:
示例图
浏览器直接访问端口复用的 Nginx 的代理,然后由端口复用的 Nginx 的代理去和 Nginx 服务器建立连接,这样在整个代理的部分就可以设置很多规则来过滤有恶意的 HTTP 请求了。
补充
其实思来想去,这种实现也许效率不高,还可以使用其他的方式进行实现,比如还可以使用 HOOK、底层的过滤驱动,或者一些入侵检测或防火墙的库进行开发。其实有了想法我应该先去网上找找是否有相应的实现,或者是否有人已经否定了这种想法。而且我觉得 Nginx 本身应该是具备相应的功能的,毕竟我对 Nginx 并不熟悉,具体行不行也不清楚。
我的微信公众号:“码农UP2U”