如何让 nginx 在 https 握手前就判断并阻断黑名单 IP 连接

2018-05-28 16:19:31 +08:00
 MX7J
使用 if ( $remote_addr = x.x.x.x ){ return 444; }和 deny x.x.x.x,都不行,都会先握手。

但是就是连握手也不想让它握,怎么做。
不能设置防火墙,因为还有同 IP:443 下还有别的虚拟主机
6541 次点击
所在节点    NGINX
35 条回复
flyingfz
2018-05-28 17:05:44 +08:00
貌似,openResty 可解。本贴右侧有链接。
mashiro233
2018-05-28 17:07:25 +08:00
@lsylsy2
是的,这个是 TLS 那层的事,所以丢给 openssl 处理这么做设计上来说没什么问题。
要实现这种需求估计只能魔改 nginx 了,在把数据转发到 bio 之前解析 client hello 取出 server name 然后再判断写入到 bio 还是关闭这个链接……真是太 hack 了。
akira
2018-05-28 17:09:43 +08:00
@lsylsy2 对的,理解有偏差。一说握手就本能的反应到 tcp 的握手去了。lz 的这个情况应该是在 ssl 的握手环节来处理
3dwelcome
2018-05-28 17:51:52 +08:00
楼上都说 SSL 握手,个人觉得不是。LZ 的主要目的,就是为了爬虫访问的时候,能防止网站证书外泄。
如果严格控制 SNI 的走的路径,是可以在 ClientHello 阶段,就直接阻断的。
janxin
2018-05-28 18:02:13 +08:00
@lsylsy2 嗯,第一反应是 TCP 握手就阶段,后来想了想只要证书不发送即可
julyclyde
2018-05-28 18:12:40 +08:00
你的需求是 tcpwrapper
但不知道 nginx 是否支持这个
xuanyuanaosheng
2018-05-28 18:17:31 +08:00
楼主可以说下解决思路以及解决方法啊
gesse
2018-05-28 18:22:10 +08:00
还是计算机基础没有学好。
zingl
2018-05-28 21:15:16 +08:00
nginx 单独可能不行,deny、return 貌似都是证书验证以后才执行
nginx 前面放 haproxy 之类的应 i 该可以解决
LoliconInside
2018-05-28 21:30:21 +08:00
写一个 ssl 的 default server,里面配一个假证书,这样 nginx 在 SNI 过程中如果没有找到对应主机名的配置就会返回这个证书
dndx
2018-05-29 01:54:10 +08:00
@flyingfz 正解,这么简单的需求用 OpenResty 几行 Lua 代码就搞定了,可以在握手前就断开连接,也不会发送证书。

https://github.com/openresty/lua-nginx-module#ssl_certificate_by_lua_block
https://github.com/openresty/lua-resty-core/blob/master/lib/ngx/ssl.md#raw_client_addr
0312birdzhang
2018-05-29 07:53:49 +08:00
这么简单的话就不会这么多公司被 ddos 了
wawehi
2018-05-29 11:56:33 +08:00
openResty 试试, 写点 LUA 脚本
monbai
2018-06-11 05:08:44 +08:00
据我所知 ddos 用 cdn 挡不住的,目前我们客户都是直接防火墙或者安全组做源站保护白名单地址,你源站 ip 直接在 4 层 deny 了怎么会有这个问题呢,莫非有其他需求,希望楼主解答一下
monbai
2018-06-11 05:14:40 +08:00
补充一下,目前就是做抗 d 和 cc,,就说网站业务,cdn 基本没用,要干你直接打到回源,也许根本没法跑,waf 和抗 d 基本都是网络创业的买路费,很多客户被打的莫名其妙的也没收到勒索

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://tanronggui.xyz/t/458395

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX