web-dev-qa-db-ja.com

公開されているPostgreSQLサーバーを悪用から保護します

誰でも使用できるようにインターネットに公開したい公開情報を含むPostgresデータベースがあります。防止するためにどのような手順を実行できますか:

  1. リソースを占有し、他のユーザーによるアクセスを妨げる可能性のある過度に高価なクエリ
  2. 返されるデータが多すぎて帯域幅を使いすぎて、サーバーの所有者に害を及ぼすクエリ。
  3. サーバー自体が危険にさらされ、悪いことに使用されています。

サーバー上のデータが公開されることについては特に心配していません。また、サーバーがクラッシュすることについても特に心配していません。再構築するのは簡単です。

これは、PostGIS拡張機能を備えたPostgreSQL 9.1であり、OpenStreetMapデータやその他のいくつかのものが含まれています。現在、OpenStackインフラストラクチャ上のUbuntu(Quantal)VMで実行されています。

データベースは現在、ネットワーク経由で接続できる唯一のアカウントが必要なテーブルへの読み取りアクセス権を持ち、それ以上は何もできないように構成されています。簡単なパスワードがあり、使用を簡素化するためにデフォルトのポート(5432)で実行されています。シェルへのアクセスは公開鍵のみです。 OpenStackインフラストラクチャーによって提供されるもの以外のファイアウォールを使用していません。 (これらの決定はすべて、議論のための公正なゲームです...)

2
Steve Bennett

Linuxを使用しているので、iptablesにはいくつかのオプションがあります。

ディストリビューションにiptablesクォータモジュールがある場合は、それを使用してリクエストにクォータを設定できます。必ずクォータルールを設定し、制限に達したらすぐにドロップルールを設定してください。それが整ったら、クォータをリセットするためにcronジョブでバイトカウンターをフラッシュする必要があるかもしれません。

また、iptablesとtcを組み合わせることで、ヘビーユーザーを制限したい場合でも、トラックで停止したい場合でも、希望する効果を得ることができます。

それらのツールを見て、必要なことを実行できるかどうかを確認してください。

1
Aaron Mason