从nmap扫描隐藏postgres版本

时间:2017-05-16 17:42:39

标签: postgresql server nmap

我正在设置一个服务器,postgresql作为服务运行。我可以使用nmap获取当前的postgresql版本

 nmap -p 5432 -sV [IP]

它返回:

PORT     STATE SERVICE    VERSION
5432/tcp open  postgresql PostgreSQL DB 9.3.1

有没有办法从nmap扫描中隐藏postgresql版本?我已经搜索了,但这都是关于隐藏操作系统检测的。

谢谢。

2 个答案:

答案 0 :(得分:3)

这里只有一个答案:防火墙

如果你打开了Postgres端口,你将被探查。如果您可以被探测,您的服务可能会中断。大多数数据库并不打算像公开这样开放,它们不会抵御拒绝服务攻击。

维护一个非常狭窄的IP列表,允许连接到它,并尽可能使用VPN或SSH隧道连接到Postgres,而不是直接进行。这样做的另一个好处是可以加密所有流量,否则这些流量将是纯文本。

答案 1 :(得分:3)

您有几个选项,但首先要了解Nmap是如何做到的:PostgreSQL数据库服务器响应格式错误的握手,其中包含错误消息,其中包含发生错误的源代码中的行号。 Nmap有一个可能的PostgreSQL版本列表以及该特定版本中发生错误的行号。有问题的源文件经常更改,Nmap通常可以告诉使用的确切版本,或至少2或3个版本号的范围。

那你有什么选择?

  1. 什么都不做。如果有人能说出你正在运行的PostgreSQL版本,为什么重要?保持最新并在其他地方实施适当的安全控制,您无需担心。

  2. 限制访问权限。使用防火墙将对数据库系统的访问限制为仅受信任的主机。如果不需要网络通信,则将PostgreSQL配置为仅在localhost上侦听。隔离系统,以便未经授权的用户甚至无法与之通信。

  3. 修补源并重建。更改PostgreSQL,使其不返回发生错误的源代码行。或者只是在postmaster.c的顶部添加几百个空白行,因此Nmap的标准指纹无法匹配。但是要意识到每次有新版本或安全补丁时你都必须这样做。