保护面向公众的 PostgreSQL 服务器免遭滥用

保护面向公众的 PostgreSQL 服务器免遭滥用

我有一个 Postgres 数据库,其中包含我想公开到互联网上的公共信息,供任何人使用。我可以采取哪些步骤来防止:

  1. 过于昂贵的查询可能会占用资源,从而阻止其他人访问
  2. 查询返回的数据过多,占用了太多带宽,对服务器所有者造成了损害。
  3. 服务器本身被入侵并被用于不良用途。

我并不担心服务器上的任何数据被泄露,也不特别担心服务器崩溃——重建很简单。

它是带有 PostGIS 扩展的 PostgreSQL 9.1,包含 OpenStreetMap 数据和一些其他内容。它目前在 OpenStack 基础架构上的 Ubuntu (Quantal) VM 上运行。

数据库的当前配置是,唯一可以通过网络连接的帐户只具有对必要表的读取权限,仅此而已。它有一个简单密码,并在默认端口 (5432) 上运行,以简化使用。Shell 访问只能通过公钥进行。除了 OpenStack 基础设施提供的防火墙外,我没有使用防火墙。(所有这些决定都可以讨论...)

答案1

由于您使用的是 Linux,iptables 为您提供了一些选项。

如果您的发行版有 iptables 配额模块,您可以使用它来设置请求配额。务必设置配额规则,然后在达到限制后立即设置丢弃规则。设置完成后,您可能需要执行 cron 作业来刷新字​​节计数器以重置配额。

此外,iptables 和 tc 结合起来可以达到您想要的效果,无论您是想限制重度用户还是阻止他们使用。

看看这些工具,看看它们是否能满足您的需要。

相关内容