清水理史の「イニシャルB」

注目の「家のネットワーク丸ごとセキュリティ対策」、直輸入の「pfSense」搭載アプライアンスを試す ~Netgate「SG-2220」~

とにかく多機能、苦労はするが勉強にも……

 Netgateの「SG-2220」は、オープンソースのファイアウォールソフト「pfSense」を搭載した小型のセキュリティアプライアンスだ。家庭向けのセキュリティアプライアンスがいくつか登場してきた今、もう少し本格的な機能を備えた本製品を試してみた。

家電やIoTなど増えるネット機器を危険に変えないために購入は海外のウェブサイトから

 トレンドマイクロの「ウイルスバスター for Home Network」Bitdefenderの「Bitdefender BOX」の登場によって、ネットワークのセキュリティ対策に注目が集まるようになってきた。

 PCやスマートフォンだけでなく、テレビやレコーダー、ゲーム機、動画配信サービス用のSTB、家電、各種IoTデバイスなど、ネットワークの利用を前提とした機器が増える一方、それを悪用するセキュリティ被害も登場してきたことで、エンドポイントで対策できない機器を、通信の出入り口となるネットワークで管理しようという発想だ。

 実際、2017年1月に 独立行政法人情報処理推進機構(IPA)から発表された「情報セキュリティ10大脅威 2017」でも、IoT機器を悪用したDDoS攻撃を引き起こした「Mirai」の例を挙げるとともに、「IoT機器の不適切管理(個人10位)」や「IoT機器の脆弱性の顕在化(法人8位)が10大脅威に初めてランクインするなど、その危険性が指摘され始めている。

 もちろん、IoT機器のファームウェアを定期的に更新したり、管理者IDとパスワードを適切に管理することは基本中の基本だが、それに加えて、家庭内の機器が不正なウェブサイトにアクセスすることを防いだり、ネットワーク経由でやり取りされる不正な通信を検知するために、何らかの仕組みを用意しておくことも重要だろう。

 そこで、今回は、前述した家庭用のセキュリティアプライアンスよりも、もう少し高度な機能を搭載したセキュリティアプライアンスを用意した。「pfSense」を搭載したNetgateの「SG-2220」だ。

pfSenseを搭載したNetgateのセキュリティアプライアンス「SG-2220」

 pfSenseは、オープンソースのファイアウォールソフトだ。聞いたことがある、使ったことがある、という人も少なくないと思われるが、FreeBSDディストリビューションの1つで、ルーター、ファイアウォール、VPN、プロキシなど、さまざまな用途に利用することが可能となっている。

 通常はPCに自分でインストールして利用するが、海外ではあらかじめpfSenseがインストールされたアプライアンスが販売されており、発送費用さえ負担すれば日本からも購入することが可能だ。

 例えば、今回、筆者が購入した「SG-2220」は、販売価格が299ドル、送料が48.56ドルのトータル347.56ドルで入手できた。

 かつては、PCを用意してインストールするまでが、なかなか敷居が高かったが、アプライアンスなら購入して電源を入れるだけで、すぐにpfSenseの機能を利用可能となる。前述した国内販売されている個人向けアプライアンス2製品と比べて高価だが、より機能が豊富で自由度も高いのが特徴だ。

URLフィルタや侵入検知などを設定可能、機能選びは50種類ほどの「パッケージ」単位でセットアップのウェブUIは英語

 それでは、製品をチェックしていこう。本体は、4~5ポートのスイッチと同等のコンパクトサイズで、筐体は金属製でなかなかしっかりとした作りとなっている。

 インターフェースはフロントに集中しており、電源アダプターのコネクタ、WAN用とLAN用の2つの1000Mbps対応LANポート、USB 2.0×1、miniUSBを利用したコンソールポート、リセットスイッチ、ステータスランプが搭載される。

 搭載されるCPUは、デュアルコアのAtom C2338(デュアルコア、1.7GHz)で、DDR3L 2GBメモリと4GBのeMMCストレージが搭載されている。

正面
側面
背面

 前述したようにpfSenseは組み込み済みとなっているため、基本的には電源を入れるだけで利用可能となっているが、環境に合わせた初期設定は必要になる。標準のIPアドレスは「192.168.1.1」となっているため、LANポートに接続したPCからウェブブラウザーでこのアドレスに接続する。

 https接続で証明書のエラーが表示されるが、無視して接続後、adminアカウント(パスワードはpfsense)で接続すると、セットアップウィザードが実行される。残念ながら日本語には対応していないため英語でのセットアップとなるが、設定自体はホスト名やタイムゾーンなどで、さほど難しくない。今回は、フレッツ光ネクスト回線を利用してPPPoEで接続するため、WANインターフェースの設定でMTUを「1454」、MSSを「1414」に設定する必要があったのが注意点らしい注意点だ。

UIは英語のみだが、ウィザードで初期設定は簡単にできる。フレッツ回線で使う場合はMTUとMSSの設定を忘れずに

 これでとりあえずルーターとして動作するようになるが、このままでは最低限の機能しか利用できない。冒頭で触れた家庭用のセキュリティアプライアンスと同じような機能を実現するには、「パッケージ」と呼ばれる機能を後からインストールする必要がある。

 パッケージは、全部で50前後用意されているが、似たような機能を提供するものも含まれている上、リソースの問題もあるので、必要なものを選んでインストールする。

 今回は、冒頭で触れた家庭用のセキュリティアプライアンスでも採用されているURLフィルタリングとIDS/IPSの機能を実現するために、以下のパッケージを導入することにした。

  • squid(プロキシサーバー)
  • squidGuard(Squidを利用したURLフィルター)
  • snort(IDS/IPS)

 squidによってSG-2220をプロキシサーバーとして動作させ、それと連携するsquidGuardによってマルウェアなどを配布するサイトやアダルトサイトなどの特定のウェブサイトへのアクセスを禁止。一方、snortは侵入検知(IDS)や侵入防止(IPS)を実現する機能だ。ネットワークのトラフィックを監査し、その中に脆弱性を利用した攻撃に特徴的な通信パターンを見つけた場合にアラートを表示したり、通信を遮断することができる。

 これらの機能により、例えば家庭用ゲーム機やSTBが、マルウェアを配布する不正なウェブサイトにアクセスするのを防止したり、IoT機器への侵入を狙った外部からの攻撃を検知したり、万が一、マルウェアに感染したIoT機器が存在したとしても、その機器が外部のC&C(Command and Control)サーバーにアクセスすることを禁止できるようになる。

Package Managerの画面。パッケージを追加することでさまざまな機能を追加できる

squidとsquidGuardのインストールクライアント設定不要の「透過型プロキシ」を設定可能

 インストール自体は、どちらも「System」の「Package Manager」から「Available Packages」を選択し、一覧から追加するだけと簡単だ。

 インストール後、まずはsquidの設定をする。「Services」の「Squid Proxy Seerver」で「Enable Squid Proxy」にチェックマークを付け、さらに「Transparent HTTP Proxy」を有効化しておく。

 透過型プロキシに設定することで、クライアント側での面倒な設定を回避できる。通常、プロキシサーバーを構成した場合、ウェブブラウザーでプロキシサーバーのアドレスやポートを指定する必要があるが、「Transparent HTTP Proxy」を有効にすればHTTPの通信はすべてプロキシ経由となるため、クライアント側での設定が必要なくなる。

 手間を省く意味もあるが、IoT機器などプロキシの設定ができない機器での利用も想定して有効化しておくといいだろう。

squidの設定。Transparent HTTP Proxyを有効にしておくと運用が楽

 そのほかの設定は標準のままで基本的に問題ない。欲を言えば、「SSL Man In the Middle Filtering」を有効化して、HTTPだけでなくHTTPSで暗号化された通信も対象としたいところだが、この設定はそれなりに面倒なので今回は回避した(証明書の登録やクライアントへの配布が必要)。

 とりあえずPCからインターネットに接続できることを確認できたら、続いてsquidGuardの設定に移る。

 「Services」の「SquidGuard Proxy Filter」で設定画面を表示し、「General settings」で「Enable」にチェックマークを付け、「Apply」ボタンで起動する。

 続いてフィルターに使うブラックリストをダウンロードする。さまざまなリストが利用可能だが(こちらを参照)、今回は「Shalla's Blacklists」を利用する。無料利用可能なのは非商用個人利用のみなので注意が必要だが、著名なウェブサイトであれば日本のアダルトサイトなども登録されているため、十分実用になる。「Blacklist」タブでアップデート用のURLに「http://www.shallalist.de/Downloads/shallalist.tar.gz」を登録し、「Download」ボタンで定義ファイルをダウンロードする。

squidGuardを使ってURLフィルタリングを実装する
フィルターに使うブラックリストをダウンロード

 ブラックリストが登録されたら、これを使ってアクセスをコントロールする。個別の設定も可能だが、ここでは「Common ACL」に設定することで、全ユーザーに対してまとめて設定する。

 「Target Rules List」をクリックすると、ダウンロードされたブラックリストがカテゴリーごとに表示されるので、禁止したいカテゴリーを「deny」にしておけばいい。例えば、「blk_BL_prn」や「blk_BL_spyware」などを禁止しておくといいだろう。これで該当するウェブサイトにアクセスしようしてもアクセスが禁止されるようになる。

カテゴリーを選択してdenyを指定すればアクセスを禁止できる

 なお、例外的に許可したいウェブサイトがある場合は、ホワイトリストを利用する。「Target categories」で「Whitelist」などのカテゴリを新たに作成し、そこに許可したいウェブサイトのドメインやURLを記述しておく。

 その後、Common ACLで「Whitelist」カテゴリーを「Whitelist」に設定しておけば、記述されたウェブサイトへのアクセスを例外として許可できる。

 なお、設定を変更した場合は、必ず「General settings」の「apply」ボタンを押すか、サービスをリスタートしないと、設定が適用されないので注意が必要だ。

 ちなみに、ここまでの設定で本体の使用メモリは、初期設定直後の9%から、21%へと上昇した。機能によってはかなりメモリを消費するので、リソースを確認しながら設定するといいだろう。

「Whitelist」で許可したいウェブサイトを指定可能

snortをインストール検出ルールや自動遮断などを詳細に設定可能

 続いて、snortをインストールする。Package Managerでインストール後、「Services」で「Snort」を選択。「WAN Settings」で「Enable」にチェックマークを付け、「Interface」で「WAN」を選択しておく。

 続いて、snortのルールをダウンロードする。脆弱性を利用する手口など、最新の攻撃に対応するにはルールが重要なので、なるべく多くのルールを設定しておいた方がいいが、中には登録が必要だったり、有料のものもある。「Global Settings」で選択できるので、「Snort GPLv2 Community Rules」や、「Emering Threats(ET)Rules」の「ET Open」などを選択しておくといいだろう。

 最後に、ダウンロードしたルールを適用する。「Snort Interfaces」の「WAN Categories」で適用するルールにチェックマークを付ければ、そのルールが有効になる。たくさん有効にした方が、それだけ多くの攻撃を検知できるが、メモリを多く消費する。筆者宅ではすべてのルールを有効化した状態でメモリの使用率が40%となったので、様子を見ながら設定するといいだろう。

 なお、標準ではIDSモードで動作するため、ルールに合致した通信を発見しても、それをアラートとして表示するだけで、通信をブロックすることはない。通信を自動的にブロックしたい場合は、「Snort Interfaces」の「WAN Settings」でインターフェースを編集し、「Alert Settings」の「Block Offenders」にチェックマークを付ける必要がある。

 これでIPSとして動作するようになるが、IPSの場合、有効化したルールによっては、いろいろなウェブサイトへのアクセスが遮断されるので、ホワイトリストの設定など、運用開始後のメンテナンスが重要になる。

 最初はIDSとして動作させ、慣れてきてからIPSで使うことをお勧めする。

 ちなみに、Snortのアラートは、pfSenseのダッシュボードに表示される。筆者宅でも、外部からSQLの特定のポートへの通信の試行など、いくつかのアラートを確認できた。今まで見えていなかった怪しい通信が見えるようになるのは大きなメリットだ。

snortで脆弱性を悪用する通信などを遮断できる
定義ファイルを選択。フリーで利用できるものもある
squidやsquidGuard、snortなどをインストールするとメモリを多く消費する。30~40%ほどになるので注意
危険だと認識された「Source IP」からの通信やSQLの脆弱性を悪用しようとする通信など、意外に多くの不正な通信が記録されている

OpenVPNによるリモートアクセスも可能

 最後に、リモートアクセスも設定しておこう。

 最近では、自宅へのアクセスというより、海外などへ旅行に出かけたときに公衆無線LANやホテルのインターネット接続を暗号化する手段として利用されることが多くなってきたVPNだが、自宅に環境を用意すれば、フリーのVPNサービスなどで心配になる「接続先が信頼できるか?」「本当に暗号化されているか?」「盗聴されていないか?」といった点を疑う必要もなくなる。

 pfSenseでは、PPTP、L2TP/IPsec、OpenVPNの3種類のVPN接続を利用可能だが、お勧めはOpenVPNの利用だ。

 暗号化方式などの違いもあるが、何よりpfSenseでの設定が楽なのがOpenVPNで、ウィザードを使って設定するだけで、ファイアウォールでのVPNプロトコルの通過設定などが自動的に実行できる。

 OpenVPNの場合、クライアント側にソフトウェアが必要な上、接続用のプロファイルも転送しなければならないが、プロファイルに関してはPackage Managerで「openvpn-client-export」をインストールしておけば、こちらも簡単にダウンロードできるようになる。

 設定は、ウィザードで証明書の作成などを進めていくだけと簡単だが、唯一、注意が必要なのが「Redirect Gateway」の設定だ。ウィザード完了後、設定の詳細画面で「Tunnel Settings」の「Redirect Gateway」で「Force all client generated traffic through the tunnel」にチェックマークを付けておかないと、クライアントからのインターネット接続がVPN経由にならない。

 先に触れたように外出時の安全な接続環境として使いたいなら、必ずオンにしておこう。

ウィザードが用意されているOpenVPNの設定が楽。ただし、Redirect Gatewayの設定を忘れずに

使いこなせないほど機能は豊富

 以上、pfSenseを搭載したSG-2220を実際に使ってみたが、高機能な反面、使いこなすのに時間と手間が必要な印象だ。UIが英語のみというのもツライが、日本語の情報もインターネット上にあまり多くないため、設定例などを探すのに苦労する。

 また、基本的にファイアウォールなので、機能を追加しようとすると、それをきちんと許可する設定をしなければならないのも手間がかかる。深く考えずに機能を追加したり、設定を変更すると、通信できなくなることも度々だ。

 とはいえ、機能的は豊富で自由度も高い。多少苦労してでも、いろいろな機能を使ってみたいというのであれば、勉強にもなるのでお勧めだ。ネットワークやセキュリティ関連の設定に慣れておきたいという人は、チャレンジする価値があるだろう。

 なお、パフォーマンスは以下の通りだ。1Gbpsのフレッツ光ネクストにPPPoEで接続後のSpeedtest.netの結果だ。URLフィルタリングやIDSとして利用すると、下りの速度低下はやはり大きくなるが、それでも100Mbpsはコンスタントに記録するので、実用上は困らない印象だ。

Speedtest.netの結果。左がPPPoEなどの最低限の設定をしただけの状態。右はsquid、squidGuard、snortを導入した後の結果

清水 理史

製品レビューなど幅広く執筆しているが、実際に大手企業でネットワーク管理者をしていたこともあり、Windowsのネットワーク全般が得意ジャンル。最新刊「できる Windows 10 活用編」ほか多数の著書がある。