nmap可用于检测与其关联的开放端口和服务。此外,我们还可以使用-sV标志来确定服务版本。
是否有任何方法禁用此服务器版本检测?如果黑客知道版本的详细信息,他就可以攻击系统。
例如,在Ubuntu-20.04上,以下是在给定范围内检测服务版本的结果
SHW@system:~$ nmap -sV -p 631 localhost
Starting Nmap 7.80 ( https://nmap.org ) at 2022-05-16 18:11 IST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00022s latency).
rDNS record for 127.0.0.1: view-localhost
PORT STATE SERVICE VERSION
631/tcp open ipp CUPS 2.3 <== Version detected
Service detection performed. Please report any incorrect results
at https://nmap.org/submit/.
Nmap done: 1 IP address (1 host up) scanned in 7.58 seconds在这里,我应该对Ubuntu进行哪些更改来阻止631端口的服务版本?
发布于 2022-05-16 14:39:49
您会发现cups本身很高兴地在通过端口631通过HTTP请求/时交付了HTML的D1属性中的版本。
这是从您的CUPS附带的配置模板文件中读取的--很可能类似于/usr/share/cups/www/index.html。因此,删除这个获取版本字符串的方法非常简单--只需修改配置文件:)
然而,这实际上只是化妆品--从文件中的链接来看,即使您决定完全重写它,您也可以非常微不足道地推断它是一个CUPS (而不是其他一些IPP服务器)。
此外,CUPS的存在是为了实现一个目的;它所做的方式可能足以正确地识别它的版本。在这样的细节中,版本是不同的--这就是为什么它们是不同的版本。只要不费太大力气,有人就可以查看CHANGELOGs/git历史,找出它要查询的端点是什么,从而触发允许一个人确定版本的响应。
这就是问题所在:任何协议,即使只留下一点点的自由(如果它只是在时间上,或者在响应中被忽略的空格数!)将允许不同的实现(对于此,不同的版本是不同的实现)行为不同,可见如此。由此你可以推断出版本。
唯一的版本将是一个协议是非常小和限制,并只允许一种行为。(如果您有这样的协议,那么提供实现的服务器可能也不会看到任何新版本。)这些协议非常罕见,IPP当然正好相反:灵活的传输(基于HTTP的复杂协议!),具有灵活的检测和灵活的应答功能。该协议的任何两个实现都不会是相同的!
TL;DR:一般来说,你不能。特别是对于IPP这样复杂的协议(这是CUPS在那个端口上提供的),您不可能完全混淆版本;唯一的选择就是以不同的方式重新实现CUPS的重要部分。然后你就会用它做一个不同的软件,得到你自己的可探测版本,还有你自己的安全问题。
我对这句话有些意见:
如果黑客知道版本的详细信息,他就可以攻击系统。
真的不是这么回事。管理员可以修复系统,如果他知道哪些服务需要升级,但攻击者只是想利用一个漏洞,如果它在那里。攻击者根本不关心版本--只关心漏洞的存在,这个漏洞通常和版本号一样难搞清楚,所以通常攻击者只是尝试几个已知的漏洞,而不是试图找出所使用的软件的版本--这些漏洞可能已经或者可能还没有修补以不包含该漏洞!
所以,隐藏这个版本并没有多大用处。如果我知道我正在交谈的杯子有一个双自由漏洞,我可以通过触发打印机的本地扫描来利用这个漏洞,那么我就会尝试跳槽--这只是一个请求。
https://unix.stackexchange.com/questions/702733
复制相似问题