この記事は、Cloud Computing 基礎シリーズの最終回です。Cloud Computing 。 認定コース.
開発ライフサイクルの最も重要な側面の1つは、Webアプリを実行するホスティング環境をどのようにセキュアにするかを理解することです。私たちのサーバーは、ウェブアプリをデプロイするたびに、特定のポートで外部システムからの着信接続を許可します。サーバーのポートは、送受信されるネットワーク・トラフィックを識別します。
サーバーの脆弱性を理解するには、通信がどこで行われるかを考える必要がある。
上の例では
- クライアント(左)、通常はウェブ・ブラウザーがサーバーにHTTPリクエストを送る。
- サーバーはHTTPリクエストを受け取り、それを処理する。
- ドメイン名は、通常ドメイン名レジストラによって管理されている1つ以上のドメインネームサーバーに対して照会される。
- サーバーは要求されたコンテンツを取得または生成し、HTTPレスポンスをクライアントに送り返す。
- クライアントはレスポンスを受け取り、コンテンツをレンダリングする。
この過程で、場合によっては、サーバー設定の弱点を突こうとする悪意のあるコンピューターからサーバーに接続されることがあります。サーバーが悪用される理由はたくさんあります。
よくあるサーバー攻撃を見てみよう。
分散型サービス拒否攻撃(DDoS)
分散型サービス拒否(DDoS)攻撃では、攻撃者はHTTPリクエストの洪水で標的サーバーに過負荷をかけようとする。これはHTTPフラッド攻撃とも呼ばれます。覚えておいてほしいのは、私たちがHTTPリクエストをするたびに、サーバーはそのリクエストに応答する役目を担っているということです。もしサーバーが、同時に送られてくるリクエストの数を満たすだけのリソース容量を持っていない場合、ウェブサーバーはストールするかクラッシュします。それ以降のHTTPリクエストは失敗し、ウェブサーバーに到達できなくなります。
DDoS攻撃は一般的にボットネットを通じて行われる。ボットネットとは、マルウェアとも呼ばれる悪意のあるソフトウェアに感染したデバイスのネットワークで、標的のマシンにHTTPリクエストを大量に送信するように特別に設計されています。
上の図は、HTTPフラッド攻撃の仕組みの概要を示している。右側では、クライアントがサーバーにリクエストしていますが、複数のボットもサーバーにリクエストしているため、サーバーのリソースが枯渇し、クライアントはサーバーに接続できません。
ディレクトリトラバーサル
ディレクトリトラバーサルは、一般的に設定不十分なサーバーを狙う、もう一つの一般的な悪用です。すべてのウェブファイルは、ウェブルートディレクトリから直接提供されます。HTTPウェブ・リクエストでサーバーに接続するユーザーは、ウェブ・ルート・ディレクトリから特定のファイルにアクセスできるだけで、ディレクトリ構造の上位にあるフォルダのファイルにナビゲートしたり、実行したりすることはできないはずです。このようなことが起こると、攻撃者が重要なシステムファイルや設定ファイルにアクセスし、サーバーを大混乱に陥れる可能性があります。
上の画像は、この攻撃がどのように機能するかを示している。攻撃者は、システム・ファイルやコンフィギュレーション・ファイルへのディレクトリ・パスを含む改ざんされた URL を使って、悪意のある HTTP リクエストを送信します。サーバはリクエストを処理し、サーバの設定やアプリケーションの設計が不適切な結果、システムファイルを取得し、その内容やソースコードを表示することができます。
ブルート・フォース・アタック
ブルートフォース攻撃は、辞書攻撃やアカウント乗っ取りとも呼ばれ、悪意のあるエージェ ントがサーバー上の制限されたアクセスポイントへの侵入を試みる、もう一つの非常に 一般的な攻撃である。この制限されたアクセス・ポイントは、通常、サーバーのルート・アカウントまたはルート権限を持つ別のアカウントです。攻撃者はマルウェアを使用して、辞書の単語に基づいて自動的に生成されたパスワードとユーザー名の組み合わせで、自動的に多数のログイン試行を送信します。
上の図は、この攻撃がどのように機能するかを示している。左側では、攻撃者はマルウェアを使って単語リストから生成したログイン試行を繰り返し送信します。正しい組み合わせが見つかれば、攻撃者はサーバーにアクセスできる。ブルートフォース攻撃は、たとえサーバーがSSH鍵認証しか使っていなくても、非常に効果的です。
サーバーを安全に保つ
ここでは、サーバーの設定とセキュリティの確保に際して考慮すべきベストプラクティスをいくつか紹介する:
- オペレーティングシステムとソフトウェアを最新のセキュリティパッチとアップデートに保つ。
- 不要なサービスやポートを無効化またはブロックし、攻撃対象領域を最小化する。
- 許可されたユーザーのみにサーバーへの接続と操作を許可することで、サーバーへのアクセスを制限します。
- SSLやTLSなどの暗号化プロトコルを使用して、ネットワークトラフィックを保護する。
- データの損失とダウンタイムを最小限に抑えるため、堅牢なバックアップとディザスタリカバリの計画を立てる。
- 不正アクセスから保護するために、強力なパスワードと多要素認証を導入する。
- ファイアウォールを使用して、ネットワークトラフィックの送受信を制御する。
- サーバーログやネットワークトラフィックを監視し、不審な動きがないか確認する。
- 侵入検知および防止システムを使用して、攻撃を特定し、防止する。
- 機密データへの不正アクセスから保護するために、ファイルシステムのパーミッションやアクセス制御などのセキュリティ対策を実施する。
Cloud Computing 認定コースを受講して、クラウド・コンピューティングで成功するためのスキルを身につけましょう。
コメント