在宅勤務はセキュリティーも考慮しないとダメだと思いますね。
特に怖いなと感じてるのは、家庭内のネットワーク内に汚染された端末があったらゾッとします。
サポートの切れたOS、怪しいメールやサイトを開いてないか家族全員の行動を確認するのは不可能なので、家庭内のネットワークにIPSを入れることにしました。
IPFire を入れた端末を、プロバイダからレンタルされたルータ/モデムと自分で用意したルータとの間に入れて、ISPのルータからは接続せずに、用意したルータ経由でネットワークを利用することにしました。
インターネット <--> プロバイダルータ <--> IPFire <--> 用意したルータ <--> PC / スマホ
これにより、IPFire が Firewall と IPS でネットワークの監視ができます。
しかし、問題が発生。なぜかIPFrei の IPSが動かない。その時の対処方法を記載します。
Enable Intrusion Prevention System が表示されない
WEB の管理画面のメニュー Firewall -> Intrusion Prevention と進むと以下の画面が表示される。
本来は、
このような画面が表示される。
Ruleset Settings を一度 Save して、Rule の設定をDownload してこないといけないとの記事を見て、Save を押すがError が返ってくる。
仕方なく、SSH で /var/log/messages を確認してみると、Rule を取得するホストに接続できてない見たい。
しかし、そのホストはIPFireを経由したPCからは普通に見れる。
どうやら問題は、IPFire の DNS の設定が悪かった。
DNS の設定を直す
WEB の管理画面の Network -> Domain Name System を開くと、Status が Broken となっていた。
Use ISP-assigned DNS server のチェックを外したら、Status が、Working に変わった。
再び、
WEB の管理画面のメニュー Firewall -> Intrusion Prevention に進み、Ruleset を選択して、Save を押下したら、
他のサイトでよく出てくる説明の画面に切り替わった。
IPS の Daemon が STOP のまま
他のサイトなどを見たなら、Ruleset を Daily -> Weekly にしてSave したり、Enable Intrusion Prevetion System のOn / Off を繰り替えてしても RUNNING に変わらない。
仕方なく、再び console にログイン。色々と試すが結果を先に言うと
/var/ipfire/ids-functions.pl
に問題があった。
ソースをgithubで見てみると最新版では問題が解決されていた。
変更履歴
今のバージョンは、IPFire 2.25 Core Update 144 で、これより上の物はもう解決されていると思う。
手動で修復するならば、
/var/ipfire/ids-functions.pl の L680あたりの
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
my $line = "\"\["; # Loop through the array of networks. foreach my $network (@networks) { # Add the network to the line. $line = "$line" . "$network"; # Check if the current network was the last in the array. if ($network eq $networks[-1]) { # Close the line. $line = "$line" . "\]\""; } else { # Add "," for the next network. $line = "$line" . "\,"; } } |
の部分を、消して
1 2 3 |
my $line = "\"[" . join(',', @networks) . "]\""; |
に変更すれば良い。
そして、無事にIPFireのIPSは動きました。