[IPFire] IPFireで、IPS 構築時のメモ

在宅勤務はセキュリティーも考慮しないとダメだと思いますね。

特に怖いなと感じてるのは、家庭内のネットワーク内に汚染された端末があったらゾッとします。

サポートの切れたOS、怪しいメールやサイトを開いてないか家族全員の行動を確認するのは不可能なので、家庭内のネットワークにIPSを入れることにしました。

IPFire を入れた端末を、プロバイダからレンタルされたルータ/モデムと自分で用意したルータとの間に入れて、ISPのルータからは接続せずに、用意したルータ経由でネットワークを利用することにしました。

インターネット <--> プロバイダルータ <--> IPFire <--> 用意したルータ <--> PC / スマホ

これにより、IPFire が Firewall と IPS でネットワークの監視ができます。

しかし、問題が発生。なぜかIPFrei の IPSが動かない。その時の対処方法を記載します。

Enable Intrusion Prevention System が表示されない

WEB の管理画面のメニュー Firewall -> Intrusion Prevention と進むと以下の画面が表示される。

IPFire IPS Enable Intrusion Prevention System が表示されない

本来は、

Enable Intrusion Prevention System が表示される

このような画面が表示される。

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 に変わった。

Status:WorkingとなりDNSが動いてる

再び、
WEB の管理画面のメニュー Firewall -> Intrusion Prevention に進み、Ruleset を選択して、Save を押下したら、

IPFire IPS Enable Intrusion Prevention System が表示された

他のサイトでよく出てくる説明の画面に切り替わった。

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あたりの

の部分を、消して

に変更すれば良い。

そして、無事にIPFireのIPSは動きました。




[grails] 2.3.4 から、3.3.5 のアップグレード

grails のアップグレード時のメモ
色々機能を入れていたので、アップグレードをする場合は適宜必要な箇所だけピックアップしてみて下さい。

1. 最初に 3.3.5 で新しいプロジェクトを作成する

以降、新しいプロジェクトを、 newversion_project
古いプロジェクトを、 oldproject という名前で呼ぶ

2. 古い2.x 仕様の物を3.x 仕様にする

2.1. grails-app/conf/BuildConfig.groovy を変更

BuildConfig.groovy は、build.gradle と application.yml に分割される

旧:BuildConfig.groovy


新:application.yml

旧:BuildConfig.groovy


新:build.gradle

旧:BuildConfig.groovy


新:build.gradle

旧:BuildConfig.groovy


新:build.gradle

旧:BuildConfig.groovy


新:build.gradle

旧:BuildConfig.groovy


新:build.gradle

2.2. ソースの移動

grails-app 配下をコピー

srcのコピー

test のコピー

integration のテストのコピー

2.3. ソース内のパッケージ等

それぞれ、旧を新に変更する




2.4. liquibase.util.csv.CSVReader

liquidbase を使っていたので、build.gradle をインポート

#build.gradle

2.5. Validateable のアノテーション変更

@grails.validation.Validateable は、
annotaion じゃなく、trait に変わったので変更

@grails.validation.Validateable と記載があるところは削除して以下を入れる

2.6. grailsApplication は自動injectされる

controller にある、
def grailsApplication
は不要。自動的にinjectされるので記載を削除

2.7. test のソース変更

アノテーションではなく、traitをつかようになったので変更

以下のような試験は

以下に変更する

TestMixin を使ってる箇所場合は、build.gradle にライブラリを追加

新:build.gradle

2.8. grails-app/conf/Config.groovy を、grails-app/conf/application.groovy へ。

application.groovy は、create-app では作成されるないので自分で作成

旧: Config.groovy


新: application.groovy

2.8.1. spring-security 関連の設定

Config.groovy にある、
grails.plugin.springsecurity. から始まる物を、application.groovy に移動

2.8.2. elasticSearch 関連の設定

elasticSearch plugin を使っていたので設定を移動

Config.groovy にある、
elasticSearch {} を全てコピー

2.8.3. grails-app/conf/DataSource.groovy を、grails-app/conf/application.yml へ

ディフォルトで作成されている、

以下の部分から、DataSource.groovy の groovy 形式を ymlに変換しながらコピー

ただし以下の記載は

以下に変更

2.8.4. grails-app/conf/QuartzConfig.groovy

quartz plugin を使っていたので設定を移動

application.yml に入れる

旧: grails-app/conf/QuartzConfig.groovy


新: grails-app/conf/application.yml

2.8.5. grails-app/conf/BootStrap.groovy の変更

/grails-app/init/${package_name}/BootStrap.groovy に移動

${package_name} は、
application.yml の

に合わせる

2.9. 不要なソースを削除

  • grails-app/conf/BuildConfig.groovy
  • grails-app/conf/Config.groovy
  • grails-app/conf/QuartzConfig.groovy
  • grails-app/conf/DataSource.groovy
  • grails-app/conf/BootStrap.groovy
  • grails-app/conf/UrlMappings.groovy

必要なら、./grails-app/controllers/${package_name}/UrlMappings.groovy に移動

${package_name} は、
application.yml の

2.10. web.xml

src/templates/war/web.xml でローカル環境でのセッションの時間を変更していたので、これを変更

旧: web.xml


新: grails-app/conf/application.yml

2.11. static なファイルの移動

2.12. templates の移動

scaffold のテンプレートを変更してる場合は、
新しプロジェクトの方で、scaffold の templates を生成して手動で変更した方が良い。
ソースをそのまま移動しても簡単には動かなかった。

して、templates を前のプロジェクトの物と比較しながら、手動で変更

2.13. springsecurity plugin の更新

https://grails-plugins.github.io/grails-spring-security-core/3.2.x/index.html#tutorials
この、 tutorials みて真似をするか、

grails s2-quickstart を実行して、現在のdomainと統合していく。

ポイントとしては、
パスワードの作成が、以前は、Userドメインの内部で、
encodePassword()
を呼び出していたが、新しいのは
UserPasswordEncoderListener
を作成して、そこ経由でパスワードのencodeをしている。

以前のuserドメイン

新しいバージョンでは、UserPasswordEncoderListener を作成してそこでパスワードのencode処理をしている