geolonia.com のドメインで HSTS プリロードを有効化しました

Posted by kamataryo on August 29, 2023 · 1 min read

こんにちは。
geolonia.com のドメインに対して HSTS プリロードの設定を行いました。これにより Geolonia のサービスがより安全に利用できるようになりました。
このポストでは、HSTS の概要と導入手順について解説します。なお、導入手順については 2023年8月現在のものになります。

HSTS とは?

HSTS (HTTP Strict Transport Security) とはインターネットを安全に利用するめに HTTPS プロトコルでのアクセスをウェブブラウザに強制するための仕組みです。この設定が有効化されているドメインに対しては全ての HTTP 接続が自動的に HTTPS に変更されるようになります。

HSTS を導入する主な利点は中間者攻撃のリスクを軽減することです。中間者攻撃とは、攻撃者がユーザーとウェブサーバーの間に割り込んで通信を傍受または改ざんする手法です。 HTTP を使っていると条件によってはこのような攻撃が可能になってしまいますが、HSTS が有効になっていた場合、HTTP での接続の機会が減少し攻撃を防ぐことができる可能性が大きくなります。

HSTS が有効になっていないケースで攻撃が成功するのは、例えば以下のようなシナリオがあるかと思います。

  1. 攻撃者は HSTS が有効でない著名なウェブサービス (X) を装って詐欺サイト (Y) を作成し、クレジットカード情報などを盗み出すスクリプトを仕込む
  2. 攻撃者によってフリー Wi-Fi などに偽装したハニーポットが仕掛けられる
  3. ユーザーが誤ってハニーポットに接続する
  4. ユーザーのうっかりミス、あるいは攻撃者による標的型攻撃などにより、ユーザーが著名サービス X に HTTP プロトコルでアクセスする
  5. ハニーポットがユーザーの X へのアクセスを Y へと書き換える
  6. ユーザーは Y が詐欺サイトであることに気づかずクレジットカード番号を入力する

HSTS を有効にするためには?

ウェブサイトから次の HTTP セキュリティヘッダーをクライアントに対して返却するように設定することで、ブラウザは HSTS を認識して次回以降のアクセスを HTTPS で行うようになります。 max-age ディレクティブとして HSTS の有効期限を設定できます。また、 includeSubDomains ディレクティブを設定すると、サブドメインを含む全てのサイトに対して HSTS が有効になります。

Strict-Transport-Security: max-age=<expire-time> # 秒単位で指定。必須
Strict-Transport-Security: max-age=<expire-time>; includeSubDomains # サブドメインを含めて全てのドメインに対して有効化する設定

HSTS プリロードとは?

HSTS では初回の HTTP プロトコルでのアクセスを防ぐことができません。ブラウザが初回のアクセスの際にセキュリティヘッダーを認識し、その後 HSTS が有効化されるからです。この場合、初回のアクセスにおいてユーザーは攻撃者の攻撃に晒されるリスクがあります。この課題を解決するのが HSTS プリロードです。

HSTS プリロードが有効化されていると、初回から HTTP でアクセスしようとした場合でもウェブブラウザが HTTPS にプロトコルを変更するようになります。 初回から HTTPS でアクセスすることにより、非暗号化通信に由来する中間者攻撃の被害を完全に防ぐことができるようになります。

HSTS プリロードを有効にするためには?

HSTS プリロードは、その名の通り HSTS 設定をあらかじめ読み込んでおく(= preload)ための設定になります。事前にプリロードリストにドメインを追加しておくことで、ブラウザはあらかじめそのドメインを認識して初回から HTTPS でアクセスするようになります。設定の手順は以下の通りです。

  1. HSTS のセキュリティヘッダーを設定
    • max-age ディレクティブは値を 1 年 (31536000) 以上に設定
    • includeSubDomains ディレクティブが必要
    • preload というディレクティブが必要
  2. HSTS List Submission のウェブサイト (https://hstspreload.org/) で該当するドメインを入力して申請する
  3. 待つ

Geolonia で行っている HSTS の設定や、リスト追加への待ち時間

Geolonia の HSTS 設定は以下になります。

strict-transport-security: max-age=63072000; includeSubDomains; preload

この状態でリストに申請したところ、 Pending Submission と表示されるようになりました。この状態からしばらく待つと HSTS プリロードリストにドメインが追加されます。 Geolonia の場合は 2023年6月に設定を行い8月にリストに追加されていたことが確認できました。どうやらリストへの追加は2ヶ月くらいかかるか、あるいは2ヶ月以上の周期でリストの更新が行われているようです。

この間、 hstspreload.org のウェブサイトは以下のように変化しました。

提出後 リスト追加後
geolonia.com is pending submission to the preload list. geolonia.com is currently preloaded.

HSTS 導入による Geolonia のセキュリティ改善と、その一般的な手順の解説をお届けしました。HSTS に興味のある方はご自身のウェブサイトなどに導入してみると良いかもしれません。

それでは!



Geolonia Maps を無料で試してみる

Geolonia では、ウェブ地図や位置情報を利用したウェブアプリケーションや、モバイルアプリケーションの開発を承っています。

お問い合わせ