linux扫描端口命令 linux扫描软件( 五 )


在这个 Python 脚本中,每个发送的封包都在传输之前展示,并且每个收到的封包都在到达之后展示 。在检验每个封包所激活的 TCP 标识的过程中 , 我们可以看到,三次握手失败了 。考虑由脚本生成的下列输出:
在脚本的输出中,我们看到了四个封包 。第一个封包是发送的 SYN 请求 , 第二个封包时接收到的 SYN+ACK 回复,第三个封包时发送的 ACK 回复,之后接收到了 RST 封包,它是最后的 ACK 回复的响应 。最后一个封包表明,在建立连接时出现了问题 。Scapy 中可能能够建立完成的三次握手 , 但是它需要对本地 IP 表做一些调整 。尤其是,如果你去掉发往远程系统的 TSR 封包,你就可以完成握手 。通过使用 IP 表建立过滤机制,我们可以去掉 RST 封包来完成三次握手,而不会干扰到整个系统(这个配置出于功能上的原理并不推荐) 。为了展示完整三次握手的成功建立,我们使用 Netcat 建立 TCP 监听服务 。之后尝试使用 Scapy 连接开放的端口 。
这个例子中,我们在 TCP 端口 4444 开启了监听服务 。我们之后可以修改之前的脚本来尝试连接 端口 4444 上的 Netcat 监听服务 。
这个脚本中,SYN 请求发送给了监听端口 。收到 SYN+ACK 回复之后,会发送 ACK回复 。为了验证连接尝试被系统生成的 RST 封包打断,这个脚本应该在 Wireshark 启动之后执行,来捕获请求蓄力 。我们使用 Wireshark 的过滤器来隔离连接尝试序列 。所使用的过滤器是 tcp(ip.src =https://www.04ip.com/post/= 172.16.36.135 || ip.dst == 172.16.36.135)。过滤器仅仅用于展示来自或发往被扫描系统的 TCP 流量 。像这样:
既然我们已经精确定位了问题 。我们可以建立过滤器 , 让我们能够去除系统生成的 RST 封包 。这个过滤器可以通过修改本地 IP 表来建立:
在这个例子中 , 本地 IP 表的修改去除了所有发往被扫描主机的目标地址的 TCP RST 封包 。list 选项随后可以用于查看 IP 表的条目,以及验证配置已经做了修改 。为了执行另一次连接尝试,我们需要确保 Natcat 仍旧监听目标的 4444 端口 , 像这样:
和之前相同的 Python 脚本可以再次使用,同时 WIreshark 会捕获后台的流量 。使用之前讨论的显示过滤器,我们可以轻易专注于所需的流量 。要注意三次握手的所有步骤现在都可以完成,而不会收到系统生成的 RST 封包的打断,像这样:
此外 , 如果我们看一看运行在目标系统的 Netcat 服务,我们可以注意到,已经建立了连接 。这是用于确认成功建立连接的进一步的证据 。这可以在下面的输出中看到:
虽然这个练习对理解和解决 TCP 连接的问题十分有帮助 , 恢复 IP 表的条目也十分重要 。RST 封包 是 TCP 通信的重要组成部分,去除这些响应会影响正常的通信功能 。洗唛按的命令可以用于刷新我们的 iptable 规则,并验证刷新成功:
就像例子中展示的那样,flush 选项应该用于清楚 IP 表的条目 。我们可以多次使用 list 选项来验证 IP 表的条目已经移除了 。
执行 TCP 连接扫描的同居通过执行完整的三次握手,和远程系统的所有被扫描端口建立连接 。端口的状态取决于连接是否成功建立 。如果连接建立,端口被认为是开放的,如果连接不能成功建立,端口被认为是关闭的 。
Linux中如何检查开放端口场景一:了解系统开放的端口 , 和正在使用的端口,在各种情况下都会有所帮助 。
比如:如果你的服务器正在运行着 Nginx,那么其端口应该为80或者443,可以检查一下 。再比如你可以检查一下 SMTP、SSH或者其他服务用的是哪个端口 。当有新的服务需要开放端口的时候 , 你需要知道目前已经被占用的,都有哪些端口 。

推荐阅读