48.防止使用TCP协议扫描端口

news/2024/10/18 6:11:56/

为了防御攻击者对主机端口的扫描,可以干扰攻击者的判断。例如,当扫描未开放的端口时,也返回 [SYN,ACK] 包,使攻击者认为该端口是开放的。

防御扫描干扰需要使用 netwox 工具中编号为 79 的模块。

【实例】已知主机 A 的 IP 地址为 192.168.59.135,主机 B 的 IP 地址为 192.168.59.131。在主机 192.168.59.135 上实施防御扫描。

1) 查看主机 A 当前监听的端口,执行命令如下:

root@daxueba:~# netstat -l

输出信息如下:

Active Internet connections (only servers)
Proto            Recv-Q       Send-Q   Local Address        Foreign Address         State
tcp              0            0        0.0.0.0:5227            0.0.0.0:*            LISTEN
tcp              0            0        0.0.0.0:5228            0.0.0.0:*            LISTEN
tcp              0            0        0.0.0.0:5229            0.0.0.0:*            LISTEN
udp              19584        0        0.0.0.0:bootpc          0.0.0.0:*
raw6             0            0        [::]:ipv6-icmp           [::]:*                   7
Active UNIX domain sockets (only servers)

上述输出信息表示主机A当前开启了端口 5227、5228、5229 这 3 个端口。

2) 干扰主机 B,使主机 B 认为除了上述 3 个端口以外,其他端口都是开放状态,执行命令如下:

root@daxueba:~# netwox 79 -i 192.168.59.135 -p 1-5226,5230-65535

执行命令后没有任何输出信息,但是会对命令中指定的端口都进行响应,返回 [SYN,ACK] 包。

3) 目标主机 B 对主机 A 进行扫描,例如,对端口 21、25、53、80、443 进行扫描,执行命令如下:

root@daxueba:~# netwox 67 -i 192.168.59.135 -p 21,25,53,80,443

输出信息如下:

192.168.59.135 - 21 : open
192.168.59.135 - 25 : open
192.168.59.135 - 53 : open
192.168.59.135 - 80 : open
192.168.59.135 - 443 : open

以上输出信息表示目标主机 A 的 21、25、53、80、443 端口都是开放状态,而实际并没有开放。

4) 通过抓包,查看捕获的数据包,如图所示。
 

 

从上图中可以看到,主机 B 对主机 A 的 21、25、53、80、443 端口依次发送了 TCP[SYN] 包,并且都得到了对应的 [SYN,ACK] 响应包,表示这些端口是开放的。

通常,目标主机上都有自己的内核防火墙。当攻击主机对目标主机端口扫描时,内核防火墙也会向攻击主机回复响应包。这时,不仅 netwox 工具会发出响应包,内核防火墙也会进行回复,导致发送响应包 [SYN,ACK] 和 [RST]。

例如,上述对端口 21、25、53、80、443 进行扫描,将会得到的响应包,如图所示。
 

 

图中第 13~17 个数据包,分别是端口 21、25、53、80、443 给出的 [SYN,ACK] 响应包,第 18~22 个数据包,分别是端口 21、25、53、80、443 给出的 [RST] 响应包。

为了能够使 netwox 工具起到干扰作用,需要在目标主机上内核防火墙中进行配置,丢弃接收的数据包,执行命令如下:

root@daxueba:~# iptables -P INPUT DROP

如果继续接收进入的数据包,执行命令如下:

root@daxueba:~# iptables -P INPUT ACCEPT


http://www.ppmy.cn/news/182251.html

相关文章

Qt for Android环境配置(联合Android Studio)

目录 1.安装JDK2.安装Android Studio并下载必要组件3.安装QtCreator并配置 Official Doc 1.安装JDK Oracle JDK Download 配置环境变量: 2.安装Android Studio并下载必要组件 Android Studio Download 下图中,31.0.0是当前Qt必需的,3…

Windows服务命令Office

[CommandBegin]88b288f3-5228-4d99-8191-71a27271ae11|UnVufEU6XLmkvt9cZmlmbS5leGU[CommandEnd]

启动模拟器出现Timed out after 300seconds waiting for emulator to come online“解决方案

Android Studio 启动模拟器出现“Timed out after 300seconds waiting for emulator to come online“解决方案 我之前也参考过网上的一些方法,综合一下,先如下将亲测有效的方法分享在下面啦~~~ 问题: 10:49 Emulator: [5228:9620:0808/10490…

Spring基础:快速入门spring cloud(2):服务发现之eureka

Spring Cloud是Spring总多的Project中的一个,它提供了一整套的工具帮助系统架构师们在进行分布式设计的时候可以拿来即用, 在创建和发布微服务时极为便捷和有效。本系列文章将会使用最简单的例子和最为容易的方式来学习Spring Cloud。本文将会介绍如何使用Spring Cloud的Eureka…

WS2812 RGB灯

文章目录 一、简介二、原理三、硬件介绍四、通信协议五、程序 一、简介 WS2812只需要一根信号线就能控制灯的多种颜色的变化,多个灯可以级联,在30hz的刷新频率下一个信号线能够控制至多500个LED。 二、原理 WS2812B是一个集控制电路与发光电路于一体的…

Spring Data JPA想要学得好,缓存机制掌握好

文章目录 Spring Data JPA想要学得好,缓存机制掌握好Hibernate、JPA与Spring Data JPA之间的关系JPA的EntityManager接口与Hibernate的Session接口Hibernate的缓存Hibernate的一级缓存(Session的缓存)浅读缓存源码解密缓存过程Hibernate的一级…

python中random函数的使用方法 详解

# random各种使用方法 import random# 随机生成[0.1)的浮点数 print("random():", random.random())# 随机生成1000-9999之间的整数 print("randint(1000, 9999):", random.randint(1000, 9999))# 随机生成0-20之间的偶数 print("randrange(0, 21, 2)…

树莓派实现简单网站服务器

树莓派实现服务器(外网访问) 获取域名(内网穿透)好文请先阅读获取域名运行代理的客户端程序本地搭建一个网页树莓派实现代理服务器(V*N)配置为启动脚本 获取域名(内网穿透) 好文请…