[On-premise][Security] Untangle Firewallのアプリケーションを使って遊ぶ

無償でも結構色々出来る

先の記事ではUntangle Firewallの導入を簡単に説明したのですが、その中でアプリケーションと呼ばれるものの扱い方について書いてみようかなと思います。今回取り上げるのはIntrusion Preventionです。

不正アクセスを検知し、それを通知するだけであればIntrusion Detection System 、つまりIDSとなり、通信のブロックまで行うのであればIntrusion Prevention System、つまりIPSとなります。Intrusion Prevensionアプリケーションは、最初からある程度のSignatureが準備されていて、比較的Signatureの内容もこなれてきてるので、扱いやすいんじゃないかなーと、実際触ってみて感じました。
あ、ちなみに私はセキュリティはド素人ですのであしからず。

基本的な作り

Intrustion Prevension(以降、IPSと表記)は以下の要素で構成されています。

  • Variables:IPS Signatureにおける変数定義を行う所です。
  • Signature:IPSで使用される不正アクセスパターンの定義が行われる所です。
  • Rule:Signatureやその他ルールを使用してマッチしたパケットに対してどういう処理をするかについて定義が行われる所です。

今回、私自身もIPSを中身まで見るのは初めてのことなので、Variablesを除く2つの要素について書いてみることにしました。

Signatureについて

Signatureルールの定義

Signatureで定義されているルールやカテゴリは結構多いです。そして、それまで使ってたSophos UTM9とぱっと比較して「これいいな」と思ったのはそのルールがあらかじめLogに留めるものなのかBlockするものなのか、なにもしないのかがある程度定義されていることでした。これは後述するRule設定についてそのありがたみが分かる構成になってました。

さて、これらのSignatureはどういう仕組みになってるんだ?というのがあるのですが、ある程度中身を見ることが出来ます。Signatureの行内に虫眼鏡アイコンがあるわけですが、これにマウスカーソルを合わせるとこんな風に表示されます。

Signatureの中身を覗いてみる

Signatureの内容が浮かび上がってきます。というわけで眺めてみますと、こんな風に書かれてます。

#alert http $HOME_NET any -> $EXTERNAL_NET any (
 msg:"ET TROJAN Yoyo-DDoS Bot HTTP Flood Attack Outbound";
 flow:established, to_server;content:"|0d 0a|Accept-Encoding|3A| g|7b|ip|2C|deflate|0d 0a|";
 http=header;
 content:"|0d 0a|Connection|3A| Keep |2D|Alvf|0d 0a|";
 http_header;
 threshold:type limit, count 5, seconds 60, track by_src;
 reference:url,asert.arbornetworks.com/2010/08/yoyoddos-a-new-family-of-ddos-bots/;
 classtype:denial-of-service;sid:2011403;rev:3;
 metadata:created_at 2010_09_28, updated_at 2010_09_28;
)

恐らくは3行目から7行目が条件になると思われます。このとき、特定のHTTP-Contentヘッダが60秒内に5回以上発生したら「YoyoDDoS」と呼ばれるボットによるアクセスだと判断するんだと思います。2010/09/28にSignatureとして誕生し、Signature IDとして2211403が割り当てられていると言う所まで分かります。

なお、虫眼鏡アイコンをクリックすると、ルールについて書かれたウェブサイトを参照することが出来ます。以下のようなSignatureの更新履歴について記載されたサイトがあり、ここで一通りSignatureの内容について確認することが出来るんじゃないかと思います。

https://doc.emergingthreats.net/

ここでは、Signatureとしてこういうのがあるんだな、と言うレベルで認識が出来れば良いのかなと思います。この中身の作りが理解できたならば、もちろん定められた書式に従い、カスタムSignatureを作るのもありだと思います(筆者にはそんな力量がありませんぬ・・・・)

Ruleについて

実際にはこれを組み上げることになるのかなと思います。
プリセットで結構いろいろなルール定義が行われており、以下の画面で灰色表示されているのがプリセット登録されたルールです。これらは削除することは出来ませんが、無効化することは可能です。

灰色表示がプリセットルール、白色表示がユーザ定義ルール

画面左側にあるチェックボックスがEnable列になり、チェックがONであれば有効、OFFであれば無効になります。ユーザ定義ルールを作成した場合、Edit列のペン型アイコンをクリックすることで設定が可能になります。

新規追加の場合はタブ下左上部分のAddをクリックすることで追加できます。

カテゴリーを指定した場合

条件の書き方ですが、「Add Condition」をクリックすることで条件を追加していきます。検査項目を定め、上記の場合、「Category」を選択したのですが、このようにカテゴリー一覧が全部表示され、この中でマッチさせたいもののチェックボックスをONにすることで条件作成をしていく形になります。

Categoryの次の行はRecommended Actionを追加した。

その他のルール条件として、Recommended Actionを付与しました。Recommended Actionというのは、各Signatureに対して別途定義しているAction定義を指します。例えば先ほど示したDDoSボットのSignatureは「Disable」となっていました。つまりは無効に等しいです。

Recommendで定められるレベルは「Disable」「Log」「Block」の三段階で分かれています。古いルールや有効性の少ないルール、あるいは偽陽性の高いルールはDisableになるのかな?と思います。逆に有効性の高いルールはBlockに定められているのかなと思います。

そして、条件定義の下にある欄で、実際にどういう風に裁くのか、Signature記載のものに従うのか、Logに記録するのか、Blockするのかなど選択することが出来ます。これらを設定し、「Done」を謳歌した後、順番を修正の上でSaveさせたら設定が反映されます。

なんか検知させてみた(Log Action)

試しに何か検知をさせてみようと思い、検知させてみました。
プリセットルールを片っ端からEnableにした状態でサーバを1台クライアント風に改造して放置した所、まずICMP-PINGを大量に拾いました。監視サーバからのPING送信及び返信に反応したようなのですが、これだとつまらないので、Protocol=tcpで絞ったらこうなりました。

2210051ルールが引っかかった

SURICATA STREAM Packet with broken ack というルールが引っかかったようです。Ackで返されるStreamパケットが破損しているというものなんですが、Recommend ActionはDisableとなってました。ルールとしてはMedium Priorityというルールが検知したようです。

上記のようにどのルールが引っかかったか?などの情報はReport機能で確認することが出来ます。各機能に対してそれぞれランキングや円グラフ、検出量の推移、そして上図のようなイベントテーブル形式のものまで実に色々あります。

そしてこれらのレポートは簡単に画面右上の右から2番目のボタンをクリックすることで、ダッシュボードに貼り付けることが出来ます。こういう情報がUntangleの日次レポートからも出力され、メール通知されますのでこうした所も結構便利です。

他に使えそうな機能としては

あらかじめ設定がこなれていて使いやすそうなのは

  • Antivirus Blocker Lite
  • Ad Blocker
  • Web Monitor

これらかなぁ?と言う気がします。特にWeb Monitorに関しては結構敏感に反応はしてくれるので、それなりに使えるのではないかなぁと。ただ、あくまでDetectionまでなので、これをブロックしたければ有償のアプリケーションが必要になりますね。Antivirus Blocker Liteも恐らく設定の幅が狭くなってるだけなんだと思いますが、それ故にシンプルで使いやすいのかなという感じです。

使いづらいものとしては、Application Control Liteが上げられますが、Signatureは原則自分で書く必要があるので、先の記事で紹介したBad SignatureのJSONデータを参考に、Signatureそれ自体は自身で情報を探しながらカスタマイズしていった方がどうやら良さそうです。
それができれば、かなり強力なのではないかなーと思います。
ただ、私だとこれを全力でカスタマイズするよりは、Sophos XG Firewallを選ぶかなーと言う気がしないでもないですw

Signatureを除くと結構勉強になるよ。

Signatureってここ最近までそれ自体は全く興味が無くて、殆ど見たことがありません。でも今回、ぶっちゃけどうやって検出するんだろうね?というのを別途勉強しているOWASP系WAFのロジックを眺めてみると意外と面白く、これも覗いてみると「へぇー、閾値ってそんな感じなんだ」というのが分かったりして見識が広がりますね。

興味ない所も少しつついてみることで、自身にとって良い糧が得られるんだなぁと言うことを実感することが出来ました。いやぁ、ありがたや。