Postgresql 从nmap扫描中隐藏postgres版本

Postgresql 从nmap扫描中隐藏postgres版本,postgresql,server,nmap,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版本?我已经搜索过了,但都是关于隐藏操作系统检测的 谢谢。这里只有一个答案:防火墙它 如果您打开了Postgres端口,

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

 nmap -p 5432 -sV [IP]
它返回:

PORT     STATE SERVICE    VERSION
5432/tcp open  postgresql PostgreSQL DB 9.3.1
有没有办法在nmap扫描中隐藏postgresql版本?我已经搜索过了,但都是关于隐藏操作系统检测的


谢谢。

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

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


维护允许连接到它的IP的非常狭窄的白名单,并尽可能使用VPN或SSH隧道连接到Postgres,而不是直接连接。这还有一个额外的优点,那就是加密所有本来是纯文本的流量。

您有一些选择,但首先要了解Nmap是如何做到的:PostgreSQL数据库服务器对格式错误的握手做出响应时会显示一条错误消息,其中包含发生错误的源代码中的行号。Nmap有一个可能的PostgreSQL版本列表,以及该特定版本中发生错误的行号。所讨论的源文件的更改非常频繁,Nmap通常可以告诉您使用的确切版本,或者至少是2或3个版本号的范围

那么你有什么选择呢

  • 什么也不做。如果有人能告诉你正在运行哪个版本的PostgreSQL,那又有什么关系呢?让它保持最新,并在其他地方实施适当的安全控制,您就没有什么可担心的了

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

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


  • 我认为没有办法,因为
    nmap
    是一个功能强大的扫描工具,当检测到一个服务(开放端口)时,可以得到它的所有细节。@ok,希望这是一个教育练习。与任何工具一样,nmap在正确的人手中非常有用,在错误的人手中非常危险。谢谢。这是非常详细和有用的。如果是,请对答案进行投票并将其标记为已解决。也许对其他人有用。