レポート用データベースを保護する

サイバーセキュリティBeginner
オンラインで実践に進む

はじめに

レポート用アプリは、別の PostgreSQL データベースから合成の店舗注文を読み取ります。現在は External Probe もそのデータベースに接続できます。不要な経路を閉じながらレポートページを維持してください。

この Challenge は独立した環境で始まります。Guided Lab で練習した接続テスト、ルート確認、順序付き Gateway ルールを、別のアドレス図とデータベースポートに適用します。

レポート用データベースを保護する

現在の状況

Order Page で注文、ネットワーク図、現在の接続結果を確認できます。Report Client は正規アプリのノード、External Probe は不要なクライアントです。Gateway が転送通信を制御します。これらは別々のネットワーク名前空間を持つコンテナで、1 つのインスタンスのカーネルを共有します。

対象範囲

稼働中 Gateway の LAB_FORWARD チェーンだけを変更します。ルート、アドレス、認証情報、データベース設定、アプリのコード、サービスは変更しません。親の FORWARD は接続済みで、一致しない通信を拒否します。ルールは今回の実習セッション中に有効ならよく、再起動後の永続化は対象外です。

送信元 宛先 必要な結果
Report Client 172.29.10.40 データベース 172.29.20.15:5544 実際の PostgreSQL 読み取りを許可
External Probe 172.29.10.50 データベース 172.29.20.15:5544 新規 TCP 接続を遮断
両クライアント 公開ステータス 172.29.20.15:8001 許可

クライアントの次の転送先は 172.29.10.254、データベースの戻り先は 172.29.20.254 です。固定の接続情報はユーザー shopapp、パスワード training-only、データベース shop、テーブル orders、列 id と item です。tcp-probe ADDRESS PORT、ip route get ADDRESS、psql、curl は学習済みの方法で使えます。レポート用アプリも同じ認証情報を使います。

ルールの参照:-A は末尾追加、-s は送信元、-d は宛先、-p tcp はプロトコル、--dport は宛先ポート、-j は処理を指定します。-F CHAIN は指定チェーンだけを消去し、-nvL CHAIN は数値ルールとカウンターを表示します。返信には接続追跡が必要です。広い拒否が狭い許可より前にあると、拒否が優先されます。

目標

データベースは正規クライアントを受け入れ、External Probe の新規 TCP 接続を拒否し、レポートページと公開サービスは動作し続ける状態にしてください。データベースと認証情報は変更しません。

合格条件

  • Report Client が固定認証情報を使い、5544 の PostgreSQL 経由で実際の行を読み取れる。
  • External Probe はそのポートに新規 TCP 接続を確立できない。
  • External Probe は引き続き 8001 から PUBLIC STATUS OK を受け取り、レポートの注文も表示される。
  • 変更後に Order Page で作成した注文 practice-2 があり、商品は Green tea である。レポートやスクリーンショットは不要。

ヒント

例外に指定する送信元はどれですか?

ブラウザや Gateway ではなく、データベース接続を実際に開くクライアントを使います。図と ip route get で送信元を確認できます。

正規通信が止まったのはなぜですか?

最初に一致するルール、宛先ポート、応答処理を比較します。ポートは Guided Lab と異なります。誤入力後は実習専用チェーンを再構築できます。

認証エラーで遮断を証明できますか?

パスワード拒否は PostgreSQL に到達したことを意味します。禁止経路は TCP テスト、許可経路は実際のクエリで確認し、公開ステータスも別に確認します。

まとめ

別のクライアントとポートにゲートウェイの制御を応用し、データベースに基づくレポートと公開ステータスを維持しました。実際の許可・拒否テストが結果を証明します。広い許可を残す、データベースを止める、無効なパスワードを使う方法では達成できません。

✨ 解答を確認して練習