插座隐身杀人

时间:2017-08-21 03:22:15

标签: java sockets

假设我有2个节点。

1.2.3.4(master)和3.4.5.6(slave),用Java编写。

我希望slave只接受来自1.2.3.4(之前配置的)的套接字连接(2路TLS),如果它不是来自1.2.3.4,并且如果2路TLS身份验证失败,则通过不响应而忽略所有其他连接

意思是,不要在TCP中发送RST。 socket.close();应关闭从端的套接字,但不要将RST发送给连接的对等体,以便对等体不知道它是否是有效的开放端口(通常由软件/硬件防火墙为对手使用)正在进行SYN / ACK扫描。

如何实现此代码?我准备使用本机代码,但是怎么做呢?

1 个答案:

答案 0 :(得分:1)

  • 如果攻击者不是来自1.2.3.4,则防火墙只能丢弃数据包。没问题。
  • 如果TLS身份验证失败,则已存在TCP连接,因此攻击者已经知道它是有效的开放端口。假装它没有,为时已晚。

  • socket.close()发送FIN,而不是RST。

  • 您的主/从术语很好奇。您的“奴隶”是TCP服务器,“主人”是TCP客户端。