从 nmap 扫描中隐藏 postgres 版本
Posted
技术标签:
【中文标题】从 nmap 扫描中隐藏 postgres 版本【英文标题】:Hide postgres version from nmap scan 【发布时间】:2017-10-15 22:25:15 【问题描述】:我正在设置一个服务器,postgresql 作为服务运行。我可以使用 nmap 获取当前的 postgresql 版本
nmap -p 5432 -sV [IP]
返回:
PORT STATE SERVICE VERSION
5432/tcp open postgresql PostgreSQL DB 9.3.1
有没有办法从 nmap 扫描中隐藏 postgresql 版本?我已经搜索过了,但都是为了隐藏操作系统检测。
谢谢。
【问题讨论】:
我认为没有办法,因为nmap
是一个强大的扫描工具,当检测到一个服务(开放端口)时会得到它的所有细节。
【参考方案1】:
您有几个选择,但首先要了解 Nmap 是如何做到的:PostgreSQL 数据库服务器响应格式错误的握手并带有错误消息,其中包含发生错误的源代码中的行号。 Nmap 有一个可能的 PostgreSQL 版本列表以及该特定版本中发生错误的行号。有问题的源文件更改得足够频繁,以至于 Nmap 通常可以分辨出正在使用的确切版本,或者至少是 2 或 3 个版本号的范围。
那么你有什么选择?
什么都不做。如果有人能告诉你正在运行什么版本的 PostgreSQL,为什么这很重要?保持最新并在其他地方实施适当的安全控制,您无需担心。
限制访问。使用防火墙将对数据库系统的访问限制为仅受信任的主机。如果不需要网络通信,请将 PostgreSQL 配置为仅在 localhost 上侦听。隔离系统,使未经授权的用户甚至无法与之交谈。
修补源并重建。更改 PostgreSQL,使其不返回发生错误的源代码行。或者只是在postmaster.c
的顶部添加几百个空白行,这样 Nmap 的标准指纹就无法匹配。但请注意,每次有新版本或安全补丁时,您都必须这样做。
【讨论】:
谢谢。这是非常详细和有用的。 如果是,请为答案投票并将其标记为已解决。也许对其他人有用。【参考方案2】:这里只有一个答案:防火墙。
如果您的 Postgres 端口打开,您将被探测。如果您可以被探测到,您的服务可能会中断。大多数数据库并不打算像这样向公众开放,它们没有针对拒绝服务攻击进行强化。
维护一个非常窄的允许连接到它的 IP 的白名单,并尽可能使用 *** 或 SSH 隧道连接到 Postgres,而不是直接连接。这具有加密所有流量的额外优势,否则这些流量将是纯文本。
【讨论】:
@OkieOth 希望是一个教育练习。像任何工具一样,nmap
在正确的手中非常有用,在错误的手中非常危险。以上是关于从 nmap 扫描中隐藏 postgres 版本的主要内容,如果未能解决你的问题,请参考以下文章