おうちFirewall導入やってみた2018(DS67U+EXSi Hypervisor+Sophos XG Firewall)
まずはちょっとした余談から。
余談:自宅セキュリティの話
インターネット、楽しんでしますか?
インターネットに繋がっている、ということは、その端末は公共の場所の一部である、ということです。
非エンジニアにお話をする時に、私はよくインターネットを道路に例えます。
道路がネットワーク、建物が物理機器、建物の構造がサーバーで、その構造の中でアプリケーションという店舗が動く、という具合に。
インターネットはほぼ世界共通の規格で動いているので、あっちの国では右側通行、こっちでは左、、、ということはありません。 それはつまり、誰でもどこにでもいけるということです。
セキュリティリスク的にそれを表現するならば、「善人でも悪人でもどこにでもいる」という言い方もできます。
基本的に、善悪を区別するのは私たち人間の仕事です。
昨今、セキュリティの事故(インシデント)やサイバー攻撃の話が多々言われるのは、 圧倒的に自由でどこにでもアクセスができる、インターネットの構造そのものに起因していますので、避けられない現実です。
そういう攻撃の話の度に、僕だけでなくみなさんが思われるのは、「ウチは大丈夫かな?」ということでしょう。
今こうしている間にもだれがあなたの端末にアクセスを試みているのかわからないのがインターネットです。(こう書くと怖いですが、対策はちゃんとあります。)
それに対して大丈夫を担保するのは難しい事です。誰にどういう種類の知識を得ればいいのかすらわからないのが普通です。
NWやセキュリティの仕事をするようになるまでは僕もそうでした。
まずはちょっとだけその話をします。
何のためのサイバー攻撃なのか
不正アクセスに類されるようなハッキング、クラッキング、DOS攻撃などの多様なサイバー攻撃ですが、目的は色々あります。
- 情報そのものを盗む(企業が対象の場合が多い)
- 機器を乗っ取り、決済を勝手に行ったり、犯罪行為を行う身代わりにする
- 機器をロックして身代金を要求する (ランサムウェア)
- 乗っ取りがしやすい機器を大量に乗っ取り、大量アクセス攻撃の弾丸に使用する(MIraiウイルス)
などなど。
実際、攻撃者はツールを利用して総当たりに攻撃を仕掛けて、当たった対象に攻撃を仕掛けるというのもポイントです。
一般人がインターネットに流す貴重な情報ってクレカぐらいで、
他の個人情報はたくさん属性が載っていたり、それなりに量が無いとカネになりません。
もちろん、特定の企業やアカウントを狙ったハッキングも同時に行われています。
世界に何億とある中の1台をねらう超狙い撃ちか、
それともとりあえずツールで全部狙うとか、
特定のクラスタをとりあえずツールで狙い撃つとか、
対象の絞り方にもいろいろですね。
攻撃はどこからくる?どう防げばいい?
ほぼ全ての攻撃はインターネットからやってきます。
例外として、スタックスネットのような、ローカルなつながりを利用した攻撃もあります。これは国同士の情報戦で使われた実例があります。
ほかの例外として、WPA2の脆弱性を利用した攻撃もありました。これが有効になるのは、あなたのWi-Fiルーターの近くに攻撃者がいた場合ですね。
つまり、超例外を除いて、インターネットに接続する端末を必ず経由するので、 自宅の場合は、 ルーター(中継器)にアクセスされないようにセキュリティをしっかりしておけば大抵の攻撃はなんとかすることができます。
ルーターのセキュリティをしっかりする、というのは、つまり「ルーターに予測しにくいパスワードを設定する」ということです。
セキュリティソフトを利用した防御もナシではないですが、セキュリティ会社に大量の情報を渡すリスクがあります。
自衛に必要なこととしての第一歩はそんなもんやと思います。
以上、余談。
以下は技術的な話。
Sophos XG Firewallの導入
ルーターセキュリティーを一歩進化させたら、
やはりセキュリティー専用の機器の導入でしょう。
ということで、FWアプライアンスの導入は、この記事を見つけて以来ずっとやりたかったことです。
例えば、企業やSOHO向けのFW専用機器としてはYAMAHAやJuniperなどが選択肢に上がりますが、 流石にサポートと本体含めて高額過ぎますし、
そもそもUTMではないので、通信の中身を開いてくれるような事はありません。
値段とサービスとして、理想的であるとおもいました。
記事を読んでいただければわかりますが、
以外のコストはゼロと言っていいです。
DS67Uのセットアップ
まずはハードウェアを購入するところから。
ShuttleのベアボーンPCは、公式でカスタマイズして購入しない限りは、マザボとI/O、CPUしかありません。メモリとストレージは買う必要があります。 なので必要な物品は、
- 本体
- SATA3.0の2.5ベイSSD
- DDR3メモリ
互換性を確認するときは製品のHPを参照しましょう。
販売終了品でしたが製品仕様のページは残ってました。ありがとう。
組み方は取り扱い説明書に詳しく載っています。
さあ起動だ
起動しない
なんか前もなったな。。。
マニュアルやらヘルプを探しました。すると、DS67Uの仕様ページを見た際にメモリの電圧が違うことが判明。
低電圧用でしか動かないのに、通常の電圧のメモリさしてた。
メモリに正しい電圧が届いてないので動かない。
メモリを買い直して起動。ちゃんとBIOSがみれました。
この瞬間はいつも感動しますが、完全に私のミス。
Hyper-V Serverをインストールする。
そもそもSophosの手順が死んでる。
XG FireWallを導入するときに参考にできるサイトってほとんどありません。
- おうちでUTM F/W - Sophos XG Firewall Home Edition 関連記事一覧。
- ルーター直下でウイルスやあやしい通信を遮断! 「Sophos XG Firewall」で家庭用UTMを無料で自作する
この二つくらい。上はHyper-V、 下はEXSiを使ったものです。
「Windows系列のほうがいいかなー」とHyepr-Vのやり方を選択。
両方とも、いわゆるHypervisorを利用したものです。
Hypervisor
通常、いろいろできる便利OS の上に、 いろいろできる便利仮想OS を立てるものですが、
Hypervisorは仮想OSを起動するための専用ソフトです。
PCを起動したらBIOSがHypervisorを起動します。OSに比べて機能は圧倒的に少ないですが、OSの仮想起動に特化しているのです。
DS67UやベアボーンのCPUにHyper-Vを入れる方法を探しますが、そもそもほとんどページがない。
英語の文献も含めて大量に文献を探す羽目になりました。
Hyper-Vインストール後に起動ディスクの順序指定を抜かす
いっつもやるやつ。
外部のインストーラでOSをインストールするときは、あとでそのメディアの起動の順番を下げなきゃいけないんだって。。。
Sophos XG Fierwallのインスコ
その前に色々問題が起きた。
NICが認識されないのでリモート管理ができない、そもそもアクセスできない。
自作PC組んだときもぶつかった
- 再インスコなどしても治らないので、BIOSかOSかがNICを認識していない可能性。
- BIOS直すのは方法がわからないので、手をつけやすいOSから。
- ドライバの名前をググる。
- Intelの公式HPからソフト引っ張ってくる。
- USBに入れてコマンドプロンプトから実行→再起動で治る。
これでまず一つ治った。BIOSではなさそう。でもDS67UにはNICが二つあるので、もう一つも治さないといけない。
まあ一つ治ったならもう一つも治るはず...と思ったら治らない。
もっといろいろ試さないといけなくなった。
試したことその1:Hyper-V Server 2012 R2 + 専用ドライバ
- SurfaceにUSBを挿す。
- Hyper-VのISOファイルをWinToFlashで書き込む。(事前にフォーマットしておく)
- DS67UにUSBを挿し、起動。DS67UのSSDをフォーマットしてインスコ。
- 再起動中にUSBを抜くか、BIOSで順番を書き換える。
- この時点ではNICは一つもインストールされない。
- SurfaceにUSBを再びさしてフォーマット、PROWin64.exeを普通に落としておく。
- DS67UにUSBをさして、コマンドプロンプトからPROWin64.exeを起動。
- 再起動するとイーサネット2のみがインストールされている。
- Windows Updateを入れ込んでみた→だめ
イーサネット2のみが認識されるのは、2つのNICの型番が違うためでした。
PROWin64.exeが対応しているのがイーサネット2だ毛だったのです。
UbuntuにVmware Playerを入れるとスペック的に不安+インストールがされない。
試したことその2:ふつうにXG FireWallインスコ
そもそものゴールはFirewallのOSがNICを2つ認識して建ってくれることです。
仮想のほうがいろいろ都合がいいかと思いましたが、一旦諦めて直インストールを試す。
無理でした。 ここら辺からハードウェア故障を疑いだしました。。
ここでShuttleのベアボーンPCがサポートしているのがクライアント用OS(Windows10, Windows7 , Linuxディストリビューション3つ)
しかないことを知りました。
HWエラーに振り回されてばっかりww
「じゃあHW故障じゃないかもしれない」、
今の所、OSがNIC2つを認識したことすら無いのです。 まずはそこをゴールにすべきでした。
HypervisorはおろかサーバーOSも保証対象外なので、公式が動作保証してるUbuntuを導入することに。
Ubuntu導入
1. WIn32 Disk ImagerでUbuntu入れる。 2. BIOSいじって起動 3. NICが両方とも認識された。
HWエラーでもOSのエラーでもなかった。そのかわりちょっと途方に暮れた。
(副産物)
Get-ChildItem -Path "C:\Users\user\Downloads\PROWinx64\PRO1000\Winx64" -recurse | Select-String -pattern "ven_8086" | group path | select
いわゆるWindows PowershellのGrep。
パスを入れる+ダブルクォーテーションの中に文字を入れる→で機能します。
USB壊れた
そうこうしてるうちに書き込みをやりすぎて読み取り不可になってしまった。
一旦作業用Win機に挿してをプロンプトからdiskpart実行。
DISKPART> clean
DISKPART> create partition primary
DISKPART> format fs=fat32 quick
DISKPART> exit
Hyper-Vにドライバーをインストールしてみる。
Win10用のドライバーインストーラーを改造して、Hyper-V Server 2012 R2用に改造した上で認識させる荒業があるみたい。
いろいろ試してみたしてみたけど、難しすぎる。保証も対象外になる。
あきらめてHyper-Vから vSphere Hypervisor に変更することに、
EXSiを入れる。
- 数十日の試用版と、機能制限あり&無期限の評価版があることに注意
- NWの設定が要ることに注意。
Rufusというインストールメディア作成ソフトを利用してExsiを導入する。 vSphere Hypervisor(EXSi)の導入に関しては各所でググればわかる。
映像出力端子があれば、インストールが完了すれば画面が表示されて、NW設定をいじることができます。
DHCPなりStaticなりでIPを設定してアクセスすれば、
https://設定したIPアドレス
でログインできる。
仮想マシンの作成や管理はブラウザ上でもできる。
こっちではちゃんとNICを認識できた。 やったぜ
今回はIntel製NICとVMwareの相性が良いという話でした。
IntelとWindowsはもうちょっと仲良くしてほしい。
仮想スイッチの設定
Sophos XG Firewallをインストールすると、複数の仮想NICが認識される。私は3つだった。
DS67U上でインストールしたVsphereには二つの物理NICが認識される。これらを紐づけてやる必要がある。
Vsphere側では、
でいける。
さっきvSphereで設定したvSphere設定用の仮想IPもどこかの仮想SWに所属している必要がある。
ここで大事なのがゾーニングで、インターネットに出る側と家の中の機器側でスイッチを分ける必要がある。
なのでポートグループ、仮想スイッチは2つ(DMZを置くなら3つ)あることが必要。
は要注意。
結局NICは "1" "2"などの番号しか振られていない ので、 「物理NICの1と仮想NICの1を一緒にして。。。」と、情報をメモしながら勧めていった。
当たり前だけど仮想NICはオンオフの概念があまりないので要注意。
Sophos XG Firewallのインストール
vSphere用のOSをダウンロードしなければいけない。
XG Firewall Home Editionにはダウンロードリンク先があるけど、ISOしかない。
vSphereには、.OVFと.VMDKファイルが必要だが、それはMySophosというサイトからダウンロードできる。
標準のダウンロードサイトには.isoファイルしかなかった。要注意
Firewall側では、
仮想スイッチは作成した段階でリンクアップとなるので、
XG Firewallの場合はどちらかがWAN側として設定される。
WANはアクセスがかなりきつく制限されるので、LAN側を自分のPCからアクセスする側にもっていく。
LANとWANをFirewallが思っていた逆に認識していたら、vSphere側の仮想NICをどっちの仮想ポートグループに充てるかを切り替えればいい。
結局メモの内容どおりに構成することはできなかった。まあ個人用なのでゴール優先で行った。
ここまで正しくセットアップできていれば、
https://設定したIPアドレス:4444
で管理画面が見られる。そうなれば大勝利だ!!!
ここまでで40時間以上かかった。RPG一本分クリアぐらい?大したことねえな
リリース
ここまでをLAN側で構成して、構成の移行を行った。
最終的にはこういう構成になった。
端末のすべての通信がUTMを経由する ことで、通信のチェック、制御、及び端末への攻撃を防御することができる。
Internetにつながらない
なのにインターネットに行かない。
もう構成の以降は終わっていたので、調べ物もできなくなってしまった。
仕方なくいくつかの端末だけインターネットに接続。
NICの接続確認や再インストールなどを試しているといつの間にかつながっていた。
くそったれ。。。
教訓
- HWの互換性チェックは入念に行なえ。さもなくば荒野をさまよう
- BIOSをナメるな。予想以上にシンプルで、不安定さもある。心してあたれ
- 公式のHPをさまようことを恐れるな。広大なヘルプやリファレンスの中に宝物はある。無くてもあきらめるな。思いつく方法を挙げて、確率の高い順に探せば、「こんなエラー起きてるの世界中で俺だけだろ」 という甘ったれた考えにはとらわれない
やってよかった
正直、自宅にこんな高度なセキュリティ機器は要らない んだけど本当にやってよかった。やったこと無いサーバー構築と、サーバーに関するHWの悩みにぶち当たれたのはでかい。
それに通信の制御ができる様になった。必ずしもセキュリティ性が上がったわけではない(!) のだけど、通信の解析と、家に来ている攻撃の分析や、通信量の解析ができるようになった。
戦いはまだまだこれから。
OSが立っただけで、まだ何もできていない。
これからこのFWと向き合って、家のFWと環境を構築したり、
企業環境のFWではできないようないじり方をいろいろしていく。
なんせガチセキュリティ会社の法人向けFW なので、癖が強かろうと性能は折り紙付きだ。
期待しつつ、じっくりいこう。
長文大変申し訳ありません
技術を書くからにはできるだけ保存版にしたいので、
あったことを、失敗含めて全部口語体で載せちゃっています。考えたことや調べたこと、思ったことも含めてエッセイ調です。
もっと手順書っぽくしたいのですが、いまいち才能が無いみたいです。
もっと精進します。