修改默认访问的站点配置文件,添加以下代码即可。
return 408;
当然改成502、403等其它状态码都可以,如果想把这部分流量导入到指定网站,添加以下代码即可实现301跳转。
rewrite ^(.*) https://www.jiangdefu.com permanent;
若要禁止HTTPS访问,添加监听端口443并配置任意的SSL证书即可。
2025年1月30日补充更新:
如果需要隐藏存在Web服务,建议使用不会返回任何响应的状态码444,这样可防止攻击者嗅探到存在Web服务。
特性 | 408(Request Timeout) | 444(Nginx 直接关闭连接) |
---|---|---|
是否返回响应 | 是,返回 408 状态码和响应头 | 否,直接关闭连接,不返回任何数据 |
是否符合标准 | 是,HTTP 标准状态码 | 否,Nginx 特有状态码 |
客户端感知 | 客户端会收到 408 状态码 | 客户端只会发现连接被关闭 |
攻击者感知 | 攻击者知道服务器存在并返回了 408 | 攻击者无法判断服务器是否存在 |
适用场景 | 客户端请求超时 | 隐藏服务器存在,丢弃非法请求 |
为了进一步迷惑攻击者进行嗅探,可以延迟一段时间后再返回状态码,攻击者可能会认为网络延迟或服务器性能问题导致了连接关闭,而不是服务器主动拒绝请求。
实现代码:
access_by_lua_block {
ngx.sleep(60) -- 延迟 60 秒
ngx.exit(444) -- 返回 444
}
使用前需要确认 Nginx 安装了 Lua 模块(OpenResty 默认支持)。
主流浏览器的默认超时时间是30秒和60秒,为了提高迷惑性因此延迟60秒
1. Chrome
Chrome浏览器的默认超时时间通常为30秒。如果在30秒内无法建立连接,Chrome会显示ERR_CONNECTION_TIMED_OUT
错误。
2. Firefox
Firefox浏览器的默认超时时间也通常是30秒。如果连接请求在30秒内没有响应,Firefox会提示连接超时。
3. Edge
Edge浏览器的默认超时时间与Chrome类似,也是30秒。如果连接请求在30秒内没有响应,Edge会显示ERR_CONNECTION_TIMED_OUT
错误。
4. Safari
Safari浏览器的默认超时时间通常为60秒。如果连接请求在60秒内没有响应,Safari会提示连接超时。