我正在尝试在我的 Ubuntu 机器上由 VirtualBox 托管的 Debian 服务器上使用 iptables 设置端口碰撞。由于某种原因,当我从主机敲击服务器上的端口时,虚拟网关会多次重复该敲击,从而导致端口敲击出现问题。
我已经在来宾服务器上设置了 iptables 来记录所有传入连接
iptables -A INPUT -j LOG --log-prefix '*WALL Hit! '
为了调试正在发生的事情。 iptables 逻辑似乎完成了它的工作,但我无法按顺序正确敲入端口。
在 virtualbox 设置中,除了服务端口 (22) 之外,我还端口转发了敲击序列中使用的端口。当我尝试通过以下方式“敲”9514时
nmap -sT --host-timeout 201 --max-parallelism 1 --max-retries 0 -p 9514 localhost
sudo tcpdump -i lo port 9514
在我的主机上正确产生以下结果:
4:44:51.225394 IP localhost.37776 > localhost.9514: Flags [S], seq 3516530284, win 65495, options [mss 65495,sackOK,TS val 586800892 ecr 0,nop,wscale 7], length 0
14:44:51.225400 IP localhost.9514 > localhost.37776: Flags [S.], seq 2374911314, ack 3516530285, win 65483, options [mss 65495,sackOK,TS val 586800892 ecr 586800892,nop,wscale 1], length 0
14:44:51.225406 IP localhost.37776 > localhost.9514: Flags [.], ack 1, win 512, options [nop,nop,TS val 586800892 ecr 586800892], length 0
14:44:51.225421 IP localhost.37776 > localhost.9514: Flags [R.], seq 1, ack 1, win 512, options [nop,nop,TS val 586800892 ecr 586800892], length 0
这表明主机正确地与 VM 服务器进行了 TCP 握手。
然而,在我的来宾服务器上,我首先正确地看到由该初始握手产生的对防火墙的敲击,但如果我等待大约 10 秒,我会看到重复的连接尝试,然后是第三次尝试,依此类推,如图所示iptables 日志:
Feb 9 14:44:51 uname kernel: [347106.973331] *WALL Hit! IN=enp0s3 OUT= MAC=xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:08:00 SRC=10.0.2.2 DST=10.0.2.15 LEN=44 TOS=0x00 PREC=0x00 TTL=64 ID=22453 PROTO=TCP SPT=37776 DPT=9514 WINDOW=65535 RES=0x00 SYN URGP=0
Feb 9 14:44:57 uname kernel: [347113.109626] *WALL Hit! IN=enp0s3 OUT= MAC=xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:08:00 SRC=10.0.2.2 DST=10.0.2.15 LEN=44 TOS=0x00 PREC=0x00 TTL=64 ID=22455 PROTO=TCP SPT=37776 DPT=9514 WINDOW=65535 RES=0x00 SYN URGP=0
Feb 9 14:45:09 uname kernel: [347125.126824] *WALL Hit! IN=enp0s3 OUT= MAC=xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:08:00 SRC=10.0.2.2 DST=10.0.2.15 LEN=44 TOS=0x00 PREC=0x00 TTL=64 ID=22457 PROTO=TCP SPT=37776 DPT=9514 WINDOW=65535 RES=0x00 SYN URGP=0
Feb 9 14:45:21 uname kernel: [347137.143457] *WALL Hit! IN=enp0s3 OUT= MAC=xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:08:00 SRC=10.0.2.2 DST=10.0.2.15 LEN=44 TOS=0x00 PREC=0x00 TTL=64 ID=22459 PROTO=TCP SPT=37776 DPT=9514 WINDOW=65535 RES=0x00 SYN URGP=0
Feb 9 14:45:33 uname kernel: [347149.159284] *WALL Hit! IN=enp0s3 OUT= MAC=xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:08:00 SRC=10.0.2.2 DST=10.0.2.15 LEN=44 TOS=0x00 PREC=0x00 TTL=64 ID=22461 PROTO=TCP SPT=37776 DPT=9514 WINDOW=65535 RES=0x00 SYN URGP=0
Feb 9 14:45:45 uname kernel: [347161.175126] *WALL Hit! IN=enp0s3 OUT= MAC=xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:08:00 SRC=10.0.2.2 DST=10.0.2.15 LEN=44 TOS=0x00 PREC=0x00 TTL=64 ID=22463 PROTO=TCP SPT=37776 DPT=9514 WINDOW=65535 RES=0x00 SYN URGP=0
Feb 9 14:45:57 uname kernel: [347173.190381] *WALL Hit! IN=enp0s3 OUT= MAC=xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:08:00 SRC=10.0.2.2 DST=10.0.2.15 LEN=44 TOS=0x00 PREC=0x00 TTL=64 ID=22465 PROTO=TCP SPT=37776 DPT=9514 WINDOW=65535 RES=0x00 SYN URGP=0
正如您从时间戳中看到的那样,由于某些奇怪的原因会产生额外的敲击,并且这些连接尝试不会显示在tcpdump
主机上。
tcpdump
然而,在来宾服务器上执行 a会显示如下所示的行:
15:51:50.838919 IP 10.0.2.2.37792 > 10.0.2.15.9514: Flags [S], seq 1873367041, win 65535, options [mss 1460], length 0
对应于每个重复的 SYN 数据包。这表明位于(虚拟)ip 10.0.2.2 的网关重复发送 syn 数据包到位于(虚拟)ip 10.0.2.15 的访客服务器。
当我尝试设置端口转发时,这成为一个大问题,因为产生的额外撞击会干扰对其他端口的撞击。有谁知道为什么会发生这种行为以及我可以采取什么措施将连接尝试限制为一次?