Hebikuzure's Tech Memo

2019年11月4日

Android 9 (Pie) 以降で DoT (DNS Over TLS) を利用する

Filed under: Security — タグ: , , , — hebikuzure @ 2:52 午後

先日「HTML5 5th Anniversary」というイベントで「Web に関わる人に知っておいてほしい) Web ブラウザー 最新事情」(リンク先 SlideShare) というセッションを行いました。

このセッションで紹介した Android 9 (Pie) 以降で DoT (DNS over TLS) を利用する方法について解説します。

DoT とは

DoT (DNS over TLS) とは何か、簡単に説明しておきましょう。従来の DNS の通信は通信自体の暗号化、サーバー検証、エンティティ検証といったセキュアな通信が一切行われておらず、DNS スプーフィングや中間者攻撃に対して脆弱です。また DNS クエリの内容がネットワーク経路上で簡単に傍受できるプライバシー上の問題もありました。こうした問題を改善し DNS をセキュアなものにする技術がいくつか提唱され実用化されています。DoT はその中で、DNS クライアント(スタブ リゾルバ)と DNS キャッシュ サーバー(フルサービス リゾルバ)の間の通信を TLS で保護するものです。

image

image

DNS の安全性

携帯電話キャリアの DNS であればクライアントと DNS サーバーの間の通信はキャリアの WLAN 網内で完結するので、基本的に DNS トラフィック自体を暗号化などで保護しなくとも安全と考えられます。また固定回線で ISP 経由でインターネット接続する場合も、日本国内であれば宅内装置と ISP の間は電話会社の回線を PPPoE で通過するので、同様に ISP の DNS サーバーまでのトラフィックを暗号化などで保護しなくとも安全と考えられます。

ただし DNS 問い合わせの内容はキャリア側で収集可能なので、プライバシーの問題は考慮しなければならないでしょう。一時期話題になった「海賊版コンテンツのブロッキング」もキャリアや ISP の DNS でブロックを行う手法が検討されていました。

DNS の安全性が問題になるのは、こうしたクライアントと DNS サーバーの間の経路が信頼できない場合です。具体的には公衆無線 LAN などのパブリックなネットワークを経由してインターネット接続する場合です。こうしたネットワークでは DNS の盗聴や中間者攻撃による DNS スプーフィングが可能な場合がありますし、そもそもそのネットワークが提供している DNS サーバー自体が安全に構成されていて信頼/信用できるのかどうか分からない場合もあるでしょう。DoT(やクライアント・DNS サーバー間を暗号化する別の方法である DoH – DNS over HTTPS)はこうしたネットワークを利用する場合に効果を発揮します。

DoT を利用する

Android 9 (Pie) 以降の Android OS ではシステム DNS に DoT が実装されています。そのため [設定] でネットワークに DoT を構成すれば、基本的にすべてのネットワーク通信の DNS 問い合わせをセキュアにできます。本年後半以降、各携帯電話キャリアから発売された Android スマートフォンはほぼ Android 9 を搭載しているので、最近 Android スマートフォンを買った / 機種変更した人であれば、すぐに DoT を試してみることができます。

Android 9 以降でDoT を利用するには [設定] – [ネットワークとインターネット] を開き、[詳細設定] をタップして開きます。すると [プライベート DNS] という項目が見つかるでしょう。これが DoT の設定です。[プライベート DNS] をタップすると、以下のような画面が表示されます。

image

この各項目はそれぞれ次のような動作を示しています。

  • OFF:DoT を利用しない
  • 自動:DHCP などで現在構成されている DNS サーバーに DoT での接続を試し、DoT が使えなければ従来の DNS にフォールバックする
  • プライベート DNS プロバイダのホスト名:指定した DNS サーバーに DoT で接続、失敗してもフォールバックしない

既定は「自動」ですが、現時点では携帯電話キャリアの DNS サーバーで DoT に対応しているところはありませんし、Wi-Fi アクセスポイントで DHCP で提供される DNS サーバーでも DoT に対応しているところはまずないので、「自動」のままでは DoT が利用されることは無いでしょう。

[プライベート DNS プロバイダのホスト名] を選択し、DNS のホスト名を入力します。注意が必要なのは、DoT は TLS で通信を保護するので、TLS の証明書検証のためにホスト名が必要になるという点です、通常の DNS は IP アドレスで指定しますが、ここではホスト名を指定します。

※ DoT 対応 DNS サーバーのホスト名は既存の DNS 構成を利用して(保護されていない)DNS で問い合わせ可能です。仮にここで不正なレコードが返って来たとしても、その不正な IP アドレスに対して(正しいホスト名での)TLS 接続はできませんので、安全は保たれるという仕組みです。またそのために DoT 接続に失敗した場合、フォールバックしない動作になっています。

利用可能な DoT 対応のパブリック DNS の一覧は

などで公開されていますし、提供元の Web サイトなので設定方法が公開されています。

ここでは Cloudflare と Google、そして IIJ のパブリック DNS のホスト名を紹介しておきます。

実際に Cloudflare のパブリック DNS (1dot1dot1dot1.cloudflare-dns.com) を設定して、Cloudflaer のテスト ページ(https://1.1.1.1/help)を表示すると、以下のように DoT が有効と表示されます。

image

Google のインストラクションに書かれているように、Android 9 ではこの [プライベート DNS] による DoT の設定は VPN では利用されません。この問題は Android 10 で修正されています。

2018年9月26日

Windows でインターネット接続しているのに「インターネットなし」と表示される

Filed under: Windows Tips — タグ: , , , — hebikuzure @ 7:37 午後

Windows Vista 以降の Windows ではタスクバーの通知領域に表示されるネットワーク 接続アイコンをポイントすると、

キャプチャ

このように「インターネット アクセス」など現在の接続の制限の有無が表示されます。

この接続状態の認識は単に表示されるだけでなく、Windows のシステムを含むプログラムからも利用できるようになっています。例えば Microsoft アカウントでのサインインの際にオンラインでの認証が可能かどうか判断したり、アプリでオンライン モードとオフライン モードを切り替えたりするのに使われます。

さて、ごくまれな現象ですが、実際にブラウザーなどからインターネットに接続して Web ページを閲覧できているのに、この状態の表示が「インターネットなし」になってしまう場合があります。この現象について解説します。

「インターネットなし」になる理由

この状態の表示は「ネットワーク接続インジケーター Network Connection Status Indicator」 (NCSI) と呼ばれる機能で、いくつかの接続テストを行ってインターネット接続の有無を判定しています。

具体的には以下のような接続テストを行います。

Windows 10 バージョン 1607 未満の場合

  1. http://www.msftncsi.com (ipv6.msftncsi.com for IPv6) の名前解決ができること
  2. http://www.msftncsi.com (ipv6.msftncsi.com for IPv6) に対して HTTP でアクセスし、ncsi.txt ファイルを取得できること
  3. dns.msftncsi.com の DNS 名前解決が ”131.107.255.255” と一致すること

Windows 10 バージョン 1607 以降の場合

  1. http://www.msftconnecttest.com (ipv6.msftconnecttest.com for IPv6) の名前解決ができること
  2. http://www.msftconnecttest.com (ipv6.msftconnecttest.com for IPv6) に対して HTTP でアクセスし、connecttest.txt ファイルを取得できること
  3. dns.msftncsi.com の DNS 名前解決が ”131.107.255.255” と一致すること

つまり、実際に多くのインターネット サイト / インターネット リソースに問題なく接続できていても、上記のテストにパスしなければ NCSI は「インターネットなし」になります。そのため Microsoft アカウントでのパスワードの変更が反映されない、ストアがオフラインになり利用できない、Outlook の先進認証が機能しない、Office サブスクリプションのライセンス認証ができない、などの問題が生じます。

テストにパスできない理由はプロキシやファイアウォールなどのネットワーク経路で http://www.msftncsi.comhttp://www.msftconnecttest.com へのアクセスが制限されている、dns.msftncsi.com の DNS 名前解決が正しく行えない、などとなります。企業内のネットワークなどであれば管理者に依頼してこれらの通信が正しくできるよう設定を変更すればよいのですが、公衆サービス / 施設の LAN / Wi-Fi や WLAN などの場合、こうした変更を行うことが難しい場合もあるでしょう。

回避策

クライアント側の設定に問題が無いにも関わらず、ネットワーク経路の問題で NCSI が「インターネットなし」になり Windows やアプリケーションの動作に問題が出る場合は、NSCI の検知の動作を無効にして回避することができます。

NCSI の検知動作を無効にするには、以下のいずれかの方法を取ってください。

レジストリを構成する

以下のレジストリ値を構成します。

  • キー:HKLM\ SOFTWARE\Policies\Microsoft\Windows\NetworkConnectivityStatusIndicator
  • 名前:EnableActiveProbing
  • 種類:REG_DWORD
  • データ:0

グループポリシー

コンピューターの管理
ー 管理用テンプレート
ーー システム
ーーー インターネット通信の管理
ーーーー インタネット通信の設定
ーーーーー Windows ネットワーク接続状態インジケーターのアクティブなテストを無効にする

キャプチャ2

副作用としては、通知領域の NCSI アイコンが常に警告の表示になる場合があります。

なお企業内のネットワークで NCSI のテストのトラフィックを遮断したい場合は、イントラネット内などに http://www.msftncsi.comhttp://www.msftconnecttest.com の代替のアクセス先サーバーを立てて、NCSI のテストをパスするという方法があります。詳しくは参考資料の「The Network Connection Status Icon」をご覧ください。

参考資料

2015年7月3日

ブラウザーの一般的なトラブルシュート(その3)

Filed under: Internet Explorer — タグ: , , , , — hebikuzure @ 5:31 午後

1回目、2回目に続き、ブラウザーで Web サイトや Web アプリケーション が正しく機能しない場合のトラブルシュートについて解説します。ここまでの記事でブラウザーのキャッシュ (一時ファイル) の削除、IE の互換表示機能の解除、アドオンの無効化、ブラウザー設定の初期化について解説してきましたが、それでも改善がみられない場合は、ブラウザーを動作させているオペレーティング システムの側に原因がある可能性が考えられます。今回は Windows で一般的なオペレーティング システムに関するトラブル シュートを行う方法をまとめたいと思います。

今回紹介するのは以下の3つの方法です

  • クリーンブート
  • セーフモードとネットワーク
  • 新規ユーザープロファイル

クリーンブート

Windows では、Windows 自身の起動時に自動的に読み込まれ動作を開始するプログラムが多数設定されています。これらの自動起動プログラムの中には Windows の機能の一部となっていたり、ハードウェアを正常に認識し利用するために必要だったり、またウイルス対策ソフトウェアのように利用時に常時活動していることが期待されていたりする、ユーザーにとって有益なプログラムが多く含まれています。しかし同時にユーザーにとって特に必要としないプログラムが自動起動するように設定されている場合や、ワームやアドウェア、スパイウェアのようなユーザーにとって有害なプログラムが含まれている場合も少なくありません。さらに個々のプログラムはユーザーにとって有益でも、類似の機能や動作が競合することにより、結果的に Windows の動作やユーザーの操作の妨げとなってしまうプログラムもあります。

クリーンブートではこうした自動起動プログラムのうち、「サービス」として起動されるプログラムと、「スタートアップ」として起動されるプログラムから PC の動作に必須ではないものを停止し、「クリーン」な状態で Windows を起動することができます。Windows をクリーンブートする方法は、以下のサポート技術情報に解説されています。

ただしこのサポート技術情報は目下のところ機械翻訳されたものになっているため、操作方法などがややわかりにくくなっています。そこで Windows 7 と Windows 8.1 での手順を以下に説明していきます。

※クリーンブートのために Windows の再起動が必要になります。作業中の文書やドキュメントをすべて保存し、利用中のプログラムを閉じてから以下の作業を行ってください。

Windows7 の手順

  1. Windows キー + R を押して [ファイル名を指定して実行] を開きます
  2. [名前] ボックスに以下のように入力して Enter を押すか [OK] をクリックします
    msconfig

  3. [システム構成] が表示されます

    [サービス] タブをクリックして画面を切り替えます
  4. [Microsoft のサービスをすべて隠す] にチェックを入れます

    表示されているサービスの項目数が減ります
  5. [すべて無効] をクリックします。表示されている項目のチェックがオフになります

    ※最初からチェックが外れているものがある場合は、後で設定を戻せるようその項目名を控えておいてください
    ※指紋認証デバイスなどの特殊なデバイスを搭載した一部のメーカー製 PC では特定の項目を無効にすると Windows が正常に起動できなくなる場合があります。念のため PC メーカーのサポート情報を確認するか、サポート窓口に相談してください
  6. [スタートアップ] タブをクリックして画面を切り替え、[すべて無効] をクリックします。表示されている項目のチェックがオフになります

    ※最初からチェックが外れているものがある場合は、後で設定を戻せるようその項目名を控えておいてください
    ※指紋認証デバイスなどの特殊なデバイスを搭載した一部のメーカー製 PC では特定の項目を無効にすると Windows が正常に起動できなくなる場合があります。はじめてクリーンブートの設定をされる場合は、念のため PC メーカーのサポート情報を確認するか、サポート窓口に相談してください
  7. [OK] をクリックします
  8. 確認のメッセージが表示されるので、[再起動] をクリックします
  9. Windows が再起動して、クリーンブートの状態で起動します

クリーンブートできたら、Web サイトや Web アプリケーション が正常に機能するか確認してください。

Windows 8.1 の手順

  1. 手順「1.」から「5.」までは Windows 7 の場合と同じ手順を実行します
  2. [スタートアップ] タブをクリックして画面を切り替え、[タスク マネージャーを開く] をクリックします
  3. [タスク マネージャー] の [スタートアップ] タブが開きます
  4. 表示されている項目をクリックして選択し、[無効にする] をクリックします。選択している項目の [状態] 列が [無効] に変わります
  5. 表示されている項目をすべて無効に変更して、[タスク マネージャー] を閉じます
    ※最初から無効になっているものがある場合は、後で設定を戻せるようその項目名を控えておいてください
    ※指紋認証デバイスなどの特殊なデバイスを搭載した一部のメーカー製 PC では特定の項目を無効にすると Windows が正常に起動できなくなる場合があります。はじめてクリーンブートを設定する場合は念のため PC メーカーのサポート情報を確認するか、サポート窓口に相談してください
  6. [システム構成] の [OK] をクリックします
  7. 確認のメッセージが表示されるので、[再起動] をクリックします
  8. Windows が再起動して、クリーンブートの状態で起動します

クリーンブートできたら、Web サイトや Web アプリケーションが正常に機能するか確認してください。

トラブルシュート

クリーンブートすると問題が改善する場合、クリーンブートの設定の際にチェックを外したり無効にしたりした項目のいずれかに問題の原因があると考えられます。

この場合、どの項目を有効にすると問題が発生するか調査し、原因となる項目を特定することが可能です。

  1. [システム構成] を起動します
  2. [サービス] タブをクリックして画面を切り替えます
  3. [すべて有効にする] をクリックし、[OK] をクリックします
  4. 確認のメッセージが表示されるので、[再起動] をクリックします

この手順でサービスのみ無効になった状態で Windows が起動します。起動したらWeb サイトや Web アプリケーションが正常に機能するか確認します。問題が発生しない場合、[サービス] タブの中の項目のいずれかに原因があると考えられます。逆にこの状態でも問題が発生する場合は、[スタートアップ] の項目のいずれかに原因があると考えられます。

[サービス] タブの中の項目に原因があると考えられる場合は、[システム構成] を使って [サービス] タブの中の項目の一つを有効にして再起動します。再起動後に問題が発生するか確認し、もし問題が発生するのであれば最後に有効に戻した項目がトラブルの原因であるとわかります。

[スタートアップ] の項目に原因があると考えられる場合も、[システム構成] (Windows7 の場合) または [タスク マネージャー] (Windows 8.1 の場合) を使って [スタートアップ] の中の項目の一つを有効にして再起動します。再起動後に問題が発生するか確認し、もし問題が発生するのであれば最後に有効に戻した項目がトラブルの原因であるとわかります。

問題の原因となる項目が特定できたら、以下のような対処が考えられます。

  • 原因となる項目で起動されるプログラムをアンインストールする
    項目名や製造元、コマンドなどの情報からプログラム名が確認できます
  • 原因となる項目で起動されるプログラムを更新する
    プログラムが古いことが原因の場合もあります。最新版の入手についてはプログラムの製造元に確認してください
  • 原因となる項目を [システム構成] で無効にしたまま Windows を利用する
    クリーンブートをいったん解除した後、再度 [システム構成] を使って原因となる項目のみ無効にします

クリーンブートの解除

  1. トラブルシュートが完了したら、クリーンブートを解除して通常の起動に戻します。
  2. [システム構成] を起動します
  3. [全般] タブで [通常スタートアップ] をクリックしてチェックを入れます
    ※クリーンブートの設定をする際、最初から無効になっていた項目がある場合は、[通常スタートアップ] を選択した後、それぞれのタブで該当する項目を無効にしてください
  4. [OK] をクリックし、Windows を再起動します
  5. Windows が通常起動します

セーフモードとネットワーク

クリーンブートでは多くの自動起動プログラムは読み込まれなくなりますが、「ドライバー」と呼ばれるタイプのソフトウェアは依然として読み込まれ動作しています。こうしたソフトウェアも読み込まないようにして、Windows を最小限の機能だけで起動するのが「セーフモード」と呼ばれる起動方法です。またネットワーク接続のために必要なドライバーは読み込むように構成するのが「セーフモードとネットワーク」です。ここまでの方法で Web サイトや Web アプリケーションの問題が改善しない場合、セーフモードとネットワークで Windows を起動し、問題に変化がないか確認するとよいでしょう。

※「セーフモード」や「セーフモードとネットワーク」の場合、ご利用になっているコンピューターに内蔵している機器、接続している周辺機器を動作させるために必要なドライバーも読み込まれなくなる場合があります。そのため利用できない機器や機能が出る可能性があります。そのためコンピューターの構成によっては「セーフモードとネットワーク」として起動しても正常にネットワーク通信を行うことができない場合があります。こうした場合のトラブルシュートについては、お使いのコンピューターの製造元にご相談ください。

セーフモードとネットワークで現象が発生しない場合、何らかのドライバーの誤動作や競合、破損が問題の原因となっていると考えられます。ただしどのドライバーが問題の原因となっているのかを調査し、個別にドライバーの有効/無効を切り替えるのは専門的な知識と技術が必要になります。一般的には以下のようなことを試すと良いでしょう。

  • Windows Update で推奨される更新も含めて検出される更新プログラムをすべてインストールする
  • 内蔵機器や周辺機器のドライバーを最新版に更新する (最新版の入手方法についてはそれぞれの機器の製造元に確認してください)
  • ウイルス対策ソフト、自動バックアップソフト、自動暗号化ソフト、情報漏洩防止ソリューションなどのファイルの読み書きを常時監視するソフトウェアを一時的に無効にする、またはアンインストールする

Windows をセーフモードとネットワークで起動する方法は、以下を参照してください。

Windows 7 の場合

Windows 8.1 の場合

新規の Windows ユーザー プロファイル

Web サイトや Web アプリケーションが正常に動作しない原因が、Windows へのログオン ユーザーの個人設定の破損である場合があります。これを切り分けるには、問題の発生しているコンピューターに新規の Windows ユーザー プロファイルを使ってログオンし、問題が発生するか確認します。

新規のユーザー プロファイルを利用した場合に問題が発生しなければ、問題の原因は元のユーザーの個人設定 (ユーザー プロファイル) の破損です。こうしたユーザー プロファイルの破損はその破損個所を特定したり修復したりすることが困難です。そのため現在のユーザー プロファイルを削除して再構築するか、今後は新規に作成したユーザーで利用することが良いでしょう。いずれの場合も現在のユーザーで利用しているドキュメント類 (マイ ドキュメントやピクチャ、デスクトップなどに保存しているユーザーのデータ) のバックアップを作成して、問題改善後にデータをバックアップから復元してください。

ユーザー プロファイルの削除方法については以下を参照してください。

新規の Windows プロファイルを使ってログオンするには、以下の手順を実行します。

※いずれの場合も、問題の発生している元のユーザーと同じ権限のユーザーを作成してください。

ワークグループの場合

コンピューターがワークグループに所属している場合は、新規ユーザーを作成してそのユーザーでコンピューターにログオンします。

新規ユーザーを作成する方法については、以下を参照してください。

Active Directory ドメインの場合

コンピューターが Active Directory ドメインに参加している場合は、問題の発生しているコンピューターでログオンしたことのない Active Directory ユーザーでコンピューターにログオンします。

問題の発生しているコンピューターでログオンしたことのない Active Directory ユーザーが存在しない場合は、新規の Active Directory ユーザーを作成し、そのユーザーでコンピューターにログオンします。

Active Directory で新規ユーザーを作成する方法については、以下を参照してください。

新しいユーザー アカウントを作成する (https://technet.microsoft.com/ja-jp/library/cc732336.aspx)

WordPress.com で無料サイトやブログを作成.

%d人のブロガーが「いいね」をつけました。