はじめに
※説明に使用するOPNsenseのバージョンは20.7.0です。
※この記事は下記のOPNsenseのWikiページを参考にしています。
https://docs.opnsense.org/manual/how-tos/proxyicapantivirusinternal.html
プロキシ設定
- 管理画面 [サービス] > [Webプロキシ] > [管理] から「全般プロキシ設定」タブにて「プロキシを有効」にチェックを入れ、「適用」をクリックします。
- 「フォワードプロキシ」タブにて下記のように設定し、「適用」をクリックします。
- プロキシインターフェース:LAN
- プロキシポート:3128
- 管理画面 [サービス] > [Webプロキシ] > [管理] から「全般プロキシ設定」タブの右にある「▼」をクリックしてドロップダウンメニューを表示し、「ローカルキャッシュ設定」をクリックします。
- 「ローカルキャッシュを有効」にチェックを入れ、「適用」をクリックします。
- 管理画面 [サービス] > [Webプロキシ] > [管理] から「フォワードプロキシ」タブの右にある「▼」をクリックしてドロップダウンメニューを表示し、「FTPプロキシ設定」をクリックします。
- 「フォワードプロキシ」タブにて下記のように設定し、「適用」をクリックします。
- FTPプロキシインターフェース:LAN
- FTPプロキシポート:2121
- 管理画面 [ファイアウォール] > [ルール] からプロキシなしでHTTP Webサイトを閲覧できないようにするルールを書いていきます。画面右下の「+」ボタンをクリックします。
- 下記の項目を入力して「保存」をクリックしてください。
------
動作:拒否
インタフェース:LAN
プロトコル:TCP/UDP
送信元:LANネット
送信先ポート範囲:HTTP (from:もto:も)
カテゴリ:Block Proxy Bypass
説明:Block HTTP Bypass
------ - 手順7,8をくりかえし、プロキシなしでHTTPS Webサイトを閲覧できないようにするルールを書きます。(送信先ポート範囲をHTTPSとする)
- 手順7~9で作成した2つのルールを既存のルールより上に移動して、「変更を適用」をクリックします。
透過プロキシ設定
- 管理画面 [サービス] > [Webプロキシ] > [管理] から「フォワードプロキシ」タブにて「透過HTTPプロキシを有効」にチェックを入れ、「適用」をクリックします。
- 「透過HTTPプロキシを有効」の左にある (i) アイコンをクリックし、「Add a new firewall rule」をクリックします。
- 下記の項目を入力して「保存」をクリックしてください。
------
インタフェース:LAN
TCP/IPバージョン:IPv4 プロトコル:TCP
送信元:LANネット
送信元ポート範囲:任意 (from:もto:も)
送信先:任意
送信先ポート範囲:HTTP (from:もto:も)
リダイレクトターゲットIP:127.0.0.1
リダイレクトターゲットポート:3128
NATリフレクション:有効
フィルタルールの関連付け:関連フィルタルールを追加
------ - 「変更を適用」をクリックします。
- 管理画面 [システム] > [セキュリティ] > [認証局] から「(+) 追加」をクリックします。
- 下記の項目を入力して「保存」をクリックしてください。
------
説明名:OPNsense-SSL
方法:内部認証局を作成
鍵長(ビット):2048
ダイジェストアルゴリズム:SHA256
有効期間(日):825
国コード:NL (Netherlands)
都道府県:Zuid Holland
市町村:Middelharnis
組織:OPNsense
電子メールアドレス:spam@opnsense.org
コモンネーム:opnsense-ssl-ca
------ - 管理画面 [サービス] > [Webプロキシ] > [管理] から「フォワードプロキシ」タブにて「SSLインスペクションを有効」にチェックを入れ、また「使用するCA」に手順5,6で作成したCAを選択して「適用」をクリックします。
- 「SSLインスペクションを有効」の左にある (i) アイコンをクリックし、「Add a new firewall rule」をクリックします。
- 下記の項目を入力して「保存」をクリックしてください。
------
インタフェース:LAN
TCP/IPバージョン:IPv4 プロトコル:TCP
送信元:LANネット
送信元ポート範囲:任意 (from:もto:も)
送信先:任意
送信先ポート範囲:HTTPS (from:もto:も)
リダイレクトターゲットIP:127.0.0.1
リダイレクトターゲットポート:3129
NATリフレクション:有効
フィルタルールの関連付け:関連フィルタルールを追加
------ - 「変更を適用」をクリックします。
ClamAVとC-ICAPプラグインのインストール/設定
- 管理画面 [システム] > [ファームウェア] > [プラグイン] から「更新を確認」をクリックします。
- 「プラグイン」タブにて「os-clamav」の「+」をクリックしてClamAVをインストールします。
- 管理画面 [サービス] > [ClamAV] > [構成] から「署名をダウンロード」をクリックします。
- 「clamdサービスを有効」と「freshclamサービスを有効」にチェックを入れ、「保存」をクリックします。
- 「プラグイン」タブにて「os-c-icap」の「+」をクリックしてC-ICAPをインストールします。
- 管理画面 [サービス] > [C-ICAP] > [構成] から「全般」タブにて「c-icapサービスを有効」にチェックを入れ、「保存」をクリックします。
- 「アンチウイルス」タブにて「ClamAVを有効」にチェックを入れ、「保存」をクリックします。
ICAP設定
- 管理画面 [サービス] > [Webプロキシ] > [管理] から「フォワードプロキシ」タブの右にある「▼」をクリックしてドロップダウンメニューを表示し、「ICAP設定」をクリックします。
- 「ICAPを有効」にチェックを入れ、「適用」をクリックします。
動作確認
- 管理画面 [システム] > [セキュリティ] > [認証局] からCA証明書をエクスポートします。
- クライアントのブラウザ側でプロキシの設定とCA証明書のインポートを行います。
- EICARのサイトにアクセスしてEICARをダウンロードしようとすると、ブロック画面が表示されます。
今後の予定
公式ガイドに載っている侵入防御(IPS)・Webフィルタ・アンチウイルスの情報を、実際に手を動かしながら日本語の手順に直しつつ発信するということをのんびり続けてきてしばらくたってますが、OPNsenseもUTMっぽくできるということを小さな範囲かもしれませんがどこかに伝わってくれればいいかなと思います。
アンチスパムは個人的にやる気ないですが、アプリケーション制御はやっておきたいということで、次からはSenseiプラグインをつっこんでいろいろ遊んでみたいです。
Senseiについて調べてみると、ほかにもマルウェアのブロックやWebフィルタもできるっぽい…?あとは今回やったような作業との比較などもしてみたいですね。
ほとんど時間がとれなくてその間にバージョンがどんどん上がる一方ですが、OPNsenseについてはしばらくこんな感じの更新ペースになりそうなことだけはご了承ください。(このご時世になってから急に忙しくなって、土日も夏休みもほとんどお仕事でマジで時間が取れない)