FreeBSDベースのファイアウォールOS「OPNsense」(基本設定編)

目次
FreeBSDベースのファイアウォールOS「OPNsense」(基本設定編)
FreeBSDベースのファイアウォールOS「OPNsense」は、インストールするだけで基本的なルータ/ファイアウォールの機能が有効になる。今回はこれらルータ/ファイアウォール機能の設定について紹介する。
ファイアウォール関連の設定
前回記事ではOPNsenseの概要やインストール方法について紹介した。OPNsenseはインストールしただけの初期状態で基本的なファイアウォール設定やNATなどの機能が有効となるが、設定されているファイアウォールルールは必要最低限のものだけだ。そのため、必要に応じて設定を追加して行く必要がある。
ファイアウォールの設定は、OPNsenseの管理UIにある「ファイアウォール」メニューから行える。メニュー内の「ルール」以下には「Floating」および「LAN」、「WAN」という項目があり、ここからそれぞれの設定内容の確認や追加/削除を行える(図1)。

「LAN」および「WAN」はそれぞれLAN側インターフェイス、WAN側インターフェイスに関連するトラフィックを管理する画面で、「Floating」はその両方に影響するトラフィックを管理する画面となる。さらに、FloatingではLAN/WANで設定できるよりもさらに細かい設定が行える。
デフォルト設定ではLAN側インターフェイスについて443番および80番ポートへのアクセスを許可するよう設定されているが、これはOPNsenseの管理UIへのアクセスを許可する設定だ。また、それに加えてデフォルトですべてのアクセスを許可するよう設定されている。
また、WAN側インターフェイスについてはデフォルトですべてのトラフィックをブロックするような設定となっている(図2)。

Floatingルールについてはデフォルトでは何もルールは設定されていない(図3)。

さて、それでは例として「LAN側からの80番ポート宛の通信をブロックしたい」という場合の設定を行ってみよう。今回はポート番号だけの単純なルールなので、LANルールにこれを追加する。
ルールを追加するには、「ファイアウォール:ルール:LAN」画面で「+」ボタンをクリックする。設定するルールの編集画面が表示されるので、ここで必要な設定を行う(図4、5)。


なお、ここで画面右上の「全てのヘルプ」をクリックして有効にすると、各設定項目の詳しい説明が表示されるようになる。
今回は80番ポート宛のTCP通信をブロックするので、「動作」として「拒否」を選択し、「プロトコル」で「TCP」を、「送信先ポート範囲」で「from:」および「to:」の両方で「HTTP」を指定する。
なお、ブロックしたパケットをログに記録したり、より細かい条件を指定したりすることも可能だ。さらに「詳細オプション」の「表示/隠す」をクリックするとより細かい指定が行える(図6、7)。


最後に画面下の「保存」ボタンをクリックすると設定が保存される。ただし、その時点で実際には設定は反映されず、表示される「変更を適用」をクリックして初めてそれらが適用される(図8)。

また、設定されたルールは上から順に評価される。そのため、今回追加したルールは初期状態では最後に評価される状態となる。この状態だとそれよりも先に指定されている、デフォルトですべての通信を許可する「Default allow LAN to any rule」ルールが優先されてしまう。そこで、ルールの順番を入れ替えて、先に今回追加したルールを評価されるように変更する必要がある。
これは、まず今回追加したルールのチェックボタンをクリックして選択し、移動先とするルールの「←」アイコンをクリックすれば良い。これで並び替えが行われる(図9)

最後に「変更と適用」をクリックすればルールが有効になり、LAN内からの80番ポート宛のTCP通信がブロックされるようになる。
ユーザアカウントの設定やSSHログイン設定
複数の管理者でOPNsenseの設定などを管理したい場合、管理者毎にアカウントを作成しておくと良い。アカウントの作成は、「システム」-「アクセス」-「ユーザ」画面で行える(図10)。

この画面で「+」をクリックすると作成するユーザの情報を入力する画面が表示されるので、ここでユーザ名やパスワードなどを設定する(図11)。

また、作成するユーザが管理者ユーザの場合は「グループメンバシップ」設定で「admins」グループのメンバに入れておこう(図12)。

そのほか、証明書の作成や、SSH公開鍵認証を利用する場合のSSH公開鍵設定なども可能だ。最後に「保存」をクリックするとアカウントが作成される。
また、SSHでのリモートログインやリモートログイン時にsudoを利用できるようにするには、「システム」-「設定」-「管理」画面で設定を行う必要がある。この画面で「SSHを有効」にチェックを入れ、設定を保存すれば良い(図13)。

なお、安全のため「rootユーザログインを許可」は無効にし、代わりに「Sudoの使用」で「パスワードを確認する」を選択し、sudoコマンドで管理者権限を取得できるようにしておくことをおすすめする(図14)。

ログやアクティビティの記録
OPNsenseの管理UIでは、さまざまなログおよび各種稼働状況を確認する機能も用意されている。前回紹介したダッシュボード(図15)ではOPNsenseをインストールしたマシンのリソース使用状況などを確認できるが、より詳しい情報を個別に閲覧することも可能だ。

まず、「レポート」-「ヘルス」画面では、毎秒当たりのパケット通過状況やシステムリソースの使用状況、トラフィックをグラフで確認できる(図16)。

ここでは画面上部のタブで表示する項目を切り替えることができ、たとえば「Packets」タブでは各インターフェイスが送受信した毎秒当たりのパケット数を表示できる。タブの横の「▼」をクリックするとドロップダウンメニューが表示され、そこから対象とするインターフェイスを切り替えることができる。
また、「System」タブではメモリやCPUなどの使用状況を確認できる(図17)。

「Traffic」タブでは、指定したインターフェイスのトラフィックを毎秒当たりのバイト数で確認できる(図18)。

また、「レポート」-「トラフィックグラフ」でもトラフィックをグラフで確認できる(図19)。

さらに、「NetFlow」機能を利用してトラフィックデータをデータベースに保存することで、より詳細なトラフィック分析も可能となる。この機能を利用するには、まず「レポート」-「NetFlow」画面で対象とするインターフェイスを指定した上で、「ローカルをキャプチャ」にチェックを入れて「適用」をクリックする(図20)。

これでデータが収集されるようになり、「レポート」-「分析」画面でより詳しいレポートを閲覧できるようになる(図21)。

また、ファイアウォール関連のログは「ファイアウォール」-「ログファイル」-「Live View」などで閲覧できる(図22)。

OPNsenseの稼働状況を確認する
OPNsense自体のログや稼働状況は、「システム」-「ログファイル」や「システム」-「Activity」で確認できる(図22、23)。


そのほかの設定
マシンの電源オフや再起動は「電源」-「再起動」や「電源」-「電源オフ」から行える(図25)。

また、各種サービスの設定は「サービス」以下の項目で行える。たとえばLAN側ではデフォルトで有効になっているDHCPサーバーの設定は「サービス」-「DHCPv4」-「[LAN]」から行う(図26)。
![図26 「サービス」-「DHCPv4」-「[LAN]」でDHCPの設定が可能](https://knowledge.sakura.ad.jp/wp-content/uploads/2018/06/opnsense_fw26-440x435.png)
UIで簡単に設定を行え、高度な設定も利用できる
このように、OPNsenseではGUIで簡単に設定ができるのがポイントだ。さらに、GUIだけで高度な設定も行えるため、シビアなパフォーマンスが求められない小規模オフィスなどであれば十分に実用的だ。また、今回は紹介していないが、VPNを利用するための設定も用意されている。
なお、OPNsenseを利用する際に注意したいのが、OPNsenseはPCを利用するため、ネットワークインターフェイス(NIC)の性能がスループットに直結する点だ。そのため、できれば信頼性やパフォーマンスで評価の高いメーカー製のNICを搭載したPCを利用することをおすすめする。