hostsファイルで一時的にPCを騙して作業する~dnsよりも優先されることを利用する

PCツール

サーバー引越しの作業をしています。現在の共用サーバー環境ではPHPやMySQLのバージョンが古いので、システム的な更新が出来ないのが理由です。OSS系のCMSも併用しているのでリスクがあるという事でご依頼を頂いている案件です。

既存のサイトはとりあえずそのまま運用しつづけながら、移行先のサーバー環境にコンテンツをごっそり引越しさせて、カスタマイズの検証を行い、正常性を確認出来たら、レンタルサーバー屋に連絡してDNSを新サーバー向けに切り替えて貰う手はずです。

課題は、併用中の名前解決(DNS)です。現行のサーバーを運用しつつ、引越し先のサーバーの正常性も確認しなくてはならないので、同じサイトが2つ存在することにしなければなりません。ここでは私が作業に使っているPCのhostsファイルを書き換えて対応することにしました。通常利用のhostsファイルと、移行先サーバー専用のhostsファイルを切り替えて、移行先のサーバーにも本来使用するURLでアクセスして正常性を確認します。hostsファイルを切り替えさえすれば、同じURLで新旧サーバー任意の方にアクセス出来ます。その為にはhostsファイルの切り替えが頻繁に生じます。

Windows Vista以降、HostsファイルはUAC(ユーザーアカウント制御)によって保護されているので、メモ帳等でいちいち編集する手間+管理者権限でメモ帳を起動する手間などが煩わしく、作業効率も良くないし、何よりストレスを感じます。しかしこの仕組(セキュリティ)は重要な仕組みです。

そこで、この作業の期間中はhostsファイルを切り替えられるユーティリティーを使用することにしました。多分有るだろうなと思って検索してみたら、SOURCEFORGEに「Hosts Manager」というシンプルなアプリがありました。使い勝手もシンプルで良さそうです。

レンタル・サーバーの新サーバーのIPアドレスを調べます。nslookupコマンドを使えば簡単に調べられます。それを移行先サーバー専用のhostsに記します。そして「Hosts Manager」で切り替えながら移行及び検証作業を行います。

なお、hostsファイルは、DNSよりも優先度が高くなっているので、Windowsは、まずhostsファイルを参照して、そこに該当するアドレスが存在すればhostsファイルに従います。hostsファイルに存在しなかった場合は、通常通りインターネット上のDNSに問い合わせます。

この「hostsファイルはDNSよりも優先順位が高い」点を悪用されると非常にリスクが高いことを理解しておかなくてはなりません。ネット上の脅威の一つに「DNSキャッシュポイズニング」というものがあります。DNSキャッシュを改ざんされてしまうと、本来アクセスしたいサイトにアクセスできなくなります。言い換えると危険なサイトに誘導される可能性があります。例えばネットバンキングをしようと思って銀行のサイトにアクセスしたけど、DNSキャッシュが改ざんされていて、実はフィッシングサイトに誘導されていた・・なんて事が現実に起こっています。これは悪意のある手法です。

従ってhostsファイルを改ざんされるとひとたまりもありません。ここを十分に理解した上で使わないと非常にリスクのある方法なのです。「Hosts Manager」はWeb系の作業をする際には非常に便利なユーティリティーアプリケーションですが、リスクも大きいので一般にはお勧めしづらいツールでもあります。このユーティリティーを使う上では、hostsファイルがどれだけ重要かを理解した上で使うこと、そして時々hostsファイルのチェックをすること、要らなくなったらアンインストールするのは当然の備えでしょう。

ちなみに、私はFirefoxをメインブラウザとして使っているので、「network.dns.disablePrefetch」をTrueにしておきました。デフォルトがFalseなのですが、デフォルト状態だとDNSプリフェッチ機能が災いしてhostsすら参照に行きません。Firefoxが勝手にキャッシュしている情報で名前解決をすっ飛ばすからです。

about:config
network.dns.disablePrefetch
falsetrueにすると、プリフェッチが無効になり、毎回hosts、dns問い合わせを行います。本来Firefoxのレスポンスを少しでも高速化する目的の設定なので、移行作業が終わったらこれも元に戻しておく方が良さそうですね。

さて本腰入れてやりますか(w

コメント

タイトルとURLをコピーしました