当内网服务器开放端口后,我们很难区分出哪些是正常的访问,哪些是攻击行为。
如果能将端口区分开,通过对方访问的端口,则可以判断哪个是正常访问,哪个是攻击行为。
一般攻击者都是批量扫描,在不清楚业务配置的情况下,攻击者分不清哪个是真实业务,哪个是影子业务。通过反代理可以实现一个真实业务,多个影子业务。通过影子业务来区分入侵者身份,原理和钓鱼网站类似。同样的入口页面,同样的功能,通过影子业务可以跟踪访问记录从而区分出攻击者。
就像一个房间有多个门,一个生门,多个死门,坏人一旦进错门就会被抓。下面讨论实现细节:
使用 frp 构造影子服务,frps、frpc 都在本地运行,以 3389 端口为例:
frps 服务端配置
# frps.toml
bindPort = 7000
frpc 客户端配置
# frpc.toml
serverAddr = "127.0.0.1"
serverPort = 7000
[[proxies]]
name = "rdp-3390"
type = "tcp"
localIP = "127.0.0.1"
localPort = 3389
remotePort = 3390
[[proxies]]
name = "rdp-3388"
type = "tcp"
localIP = "127.0.0.1"
localPort = 3389
remotePort = 3388
frps 服务端打开 debug 选项,记录访问者 IP:
log-level debug -c frps.toml ./frps.exe --
frpc 客户端连接服务端:
./frpc.exe -c frpc.toml
此时 3389 为真实业务端口,3388、3390 为影子业务端口。当攻击者访问影子业务端口时在 frps 服务端会记录访问者 IP ,通过 frps 的日志可以跟踪攻击行为,搜集攻击者攻击时间和 IP 。通过搜集到的 IP 可以在防火墙阻断 IP 。
可以通过 telnet 测试 frps 的日志功能是否完整:
telnet 10.20.1.200 3388
通过 frps 日志可以知道攻击者连接的是哪个端口,对方的 IP 等信息。所使用的 frp 版本为:
./frps.exe -v
0.55.1
除了使用 frp 映射端口外,也可以使用 nginx 和 WAF 来做反代理,只要把正常业务端口和影子端口分开就可以对非授权访问进行记录,后续通过日志对攻击行为进行溯源。关于 nginx 反代理及 WAF 的使用,可以参考之前的文章:
全文完。
如果转发本文,文末务必注明:“转自微信公众号:生有可恋”。
原文始发于微信公众号(生有可恋):内网服务器敌我识别
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论