• 公開日: 2024-06-15
  • 最終更新日:

CloudFrontで直接オリジンにアクセスさせない方法(オリジンガード)

オリジンに直接アクセスするため、保護がないの説明図

問題提起

例えば、CloudFrontの前にAWS WAFを設置し、レイヤー7のDoS攻撃やDDoS攻撃などの対策を講じていても、
オリジンサーバーに直接攻撃が行われた場合、オリジンサーバーがダウンしてしまう可能性があり、
対策が不十分と言えます。

そこで、CloudFrontのカスタムヘッダー機能を活用し、オリジンサーバーへのアクセスをCloudFront
に限定することで、オリジンサーバーへの不正アクセスを防ぎ、セキュリティを強化することできます。
なので、今回はその一連の流れを解説していこうと思います。

オリジンに直接アクセスするため、保護がないの説明図

CloudFront側でカスタムヘッダーを追加しよう

まずはお好きな桁数で、記号なしの英数字(大文字,小文字あり)の乱数を生成してください
https://www.luft.co.jp/cgi/randam.php のようなサイトを使うと良いと思います。
私は10桁にしました。

そして、CloudFrontの画面に戻ってください。
対象のディストリビューションの設定画面に行き、「オリジン」をクリック
そしたら対象のオリジンが出てくると思うので、選択して、編集をクリック

CloudFront オリジン

そして、カスタムヘッダーの項目の、「ヘッダーを追加」をクリック

CloudFront オリジンの編集画面

そしたら、好きな名前(私は、X-Origin-Guardにしました)
をつけて、さっき乱数生成した値を入力してください。

CloudFront オリジン カスタムヘッダーの追加

以上CloudFrontでやる設定は完了です。
次はオリジン側で.htaccessの設定をします。

.htaccessに特定のヘッダを持ってるアクセスしか許可しないようにしよう

オリジン側の.htaccessファイルに以下のコードを追加してください。

RewriteEngine On
RewriteCond %{HTTP:さっき付けた名前(X-Origin-Guardなど)} !^さっきの乱数$
RewriteRule ^(.*)$ - [F,L]

サンプル

RewriteEngine On
RewriteCond %{HTTP:X-Origin-Guard} !^Y3tqzBTkf2$
RewriteRule ^(.*)$ - [F,L]

結果

cdn.pita-app.comに今までアクセスできてたのがこうなりました

ビフォー

cdn.pita-app.com 直接アクセスした画面 ビフォー 正常にアクセスできる

アフター

cdn.pita-app.com 直接アクセスした画面 アフター アクセス拒否される

CloudFrontを経由してアクセスすると

正常にアクセスできてることが確認できます
また、CloudFrontのキャッシュを削除しても大丈夫でした。

pita-app.comにアクセスした画面

まとめ

近年、サイバー攻撃は巧妙化しており、オリジンサーバーが直接攻撃対象となる場合もあるかもしれません。

そこで、オリジンサーバーへの直接アクセスを遮断することで、セキュリティを強化することができます。
具体的には、CloudFrontのカスタムヘッダー機能などを活用し、
オリジンサーバーへのアクセスをCloudFront経由に限定することができます。

参考
https://manual.sakura.ad.jp/cloud/webaccel/manual/settings-originguard.html

よかったらグッドボタン&シェアお願いします!

記事の削除依頼や修正依頼については、問い合わせにて受け付けております。
ぜひお気軽に問い合わせください。

筆者のプロフィール

profile-img

名前: Otusoaオツソア (本名: 小林 栄太)

主に1年間ぐらい趣味でWebサイトを作っています。
当サイトでは、自分の好きなようなことを発信していきます。

Contact