このページは福井県立大学の田中求之が2006年1月まで運用していた Mac のサーバ運用に関する会議室 「Web Scripter's Meeting」の記録です。情報が古くなっている可能性がありますのでご注意ください。

MacOSXで侵入検知

発言者:石津@RJC
( Date Friday, February 13, 2004 17:00:31 )


仕事の関係でOSXServer10.3用に侵入検知系のツールをインストールしたので
覚え書きがてら、こちらに書いておきます。
自分のHPでやれとゆー話もありますが、今は運用していないので。:-)

試したのは以下の3つです。

・samhain(http://la-samhna.de/samhain/)
・osiris(http://osiris.shmoo.com/)
・Radmind(http://rsug.itd.umich.edu/software/radmind/macosx.html)

samhainはsolarisで使っているのですが、他のは初チャレンジでした。
vm_converterさんのHPなどを参考に選定させていただきました。

石津@RJC さんからのコメント
( Friday, February 13, 2004 17:22:00 )

samhainはOSXでうまくコンパイルできると紹介されていたのですが、結果から
言うと、1.6.6まではその通りですが、1.7系以降はsh_mail.cでエラーになり
コンパイルできません。

1.6.6のsh_mail.cなどと入れ替えたりしてみましたが、最新の1.8.3では結局
成功することはありませんでした。私はプログラマではないので修正はできな
い(一応ソースは見て努力はしましたけど、無駄でした:-()ので、1.6.6を
インストールしてみました。

ソースを展開後、./configureをすればいいのですが、OSX用には以下のオプ
ションを適用すると面倒が少なくていいと思います。

./comfigure --prefix=/usr --with-trusted=0,1,501

ここで、--with-trusted=0,1,501としているのは、samhainは信頼するユーザ
での動作・操作を要求するので、rootとdaemon、管理者ユーザを信頼するよう
加えてあげるためです。管理者ユーザのUIDが異なる場合には必要なUIDに変更
してください。
これをしないと、インストール時やインストール後に再configureが必要にな
ると思います。

その後はマニュアル通りです。

make
sudo make install

インストールが完了したら設定ファイルを編集します。

sudo vi /etc/samhainrc

設定内容はGoogleで「サワーン」を引くと有名なページが出てくるので参考に
してください。

設定を保存したら最初に初期化します。

sudo /usr/local/sbin/samhain -t init

その後デーモンモードで起動します。

sudo /usr/local/sbin/samhain -t check -D

samhainはインストールしてもOSX用の自動起動scriptはインストールしてくれ
ませんので、自分で起動scriptを作ってやる必要があります。

動作はG4/800でもそれほど重い感じはしないので、1時間おきにチェックの
設定をしています。samhainが異常を知らせるメールを指定のアドレスに設定
ファイルに記述して送らせることができますが、多量のファイルが検出された
場合、大量のメールが届くので注意が必要です。1メールに記述する異常の
件数が少ないため、ここはまとめ送りにしてほしいところです。
1.7系以降は解消されているのかもしれませんが、1.6xではこれが困ります。

samhainはClient/Serverモードでも動作しますので、1台のマシンで多数の
端末の管理が可能です。
OSXで最新版がうまくコンパイルできない点でちょっと不安があったので利用
しないことにしたため、こちらの設定は試していませんが。

1台の端末に入れてチェックするだけなら、比較的お手軽でいいかなと思います。

石津@RJC さんからのコメント
( Friday, February 13, 2004 18:05:00 )

次にosirisを試してみました。osirisは残念ながら日本語の情報が非常に少なく
唯一といっていいHPも現在読めなくなっているため、英語が読めないとちょっと
辛いかもしれません。(私は辛かったです:-))

osirisはDarwinに標準で対応しているため、samhainよりも実際の面倒は少ないで
す。Mac特有のリソースファイルなどにも対応しているということなので、OSX
にはsamhainよりも適切かもしれません。また、samhainとは異なり、基本がClient/
Serverタイプなので1台で利用する場合にもosiris、osirisd、osirismdの3つ
が必要になります(make allコマンドで全部準備されます)が、複数台の管理
を前提に作られているようで、この仕様は使ってみると本当に便利でした。


こちらは最新版が3.0.4になりますが、全く問題なくコンパイルできます。
HPのドキュメントとコンパイル時に表示される情報では、コンパイル時の情
報を参照する方がおすすめです。
ちなみにsystem typeはOSX10.3.2ではpowerpc-apple-darwin7.2.0でした。

osiris-3.0.4-current.tar.gzをダウンロードして展開します。

tar -zxvf osiris-3.0.4-current.tar.gz

展開したディレクトリに移動しコンパイル準備します。

cd osiris-3.0.4-current
./configure

ここで、makeについて注意が表示されます。
実際に利用するのは以下の2つでいいでしょう。

make all (1台のマシンに全部インストールする場合or管理マシンの場合)
make package (管理対象クライアントにインストールするパッケージ作成)

まずは、管理用マシンでmakeしてインストールしてみます。

make all
sudo make install

これでインストールを始めると、途中「make[3]: Nothing to be done for 
`install-exec-am'」のようなエラーみたいなlogが大量に出ますが、気にする必要
はありません。

それが終わると最初の設定を要求されます。
これらの設定は多くが対話型で進むので、非常にわかりやすいと思います。

No Osiris user or group exists, determined uid/gid is: 502
Continue with installation? (y/n)  

osirisのユーザをシステムに新規作成します。続けてよければyとします。

Install management console? (y/n)  

マネジメントコンソールをインストールします。こちらもyとします。

Installation directory for binaries: [/usr/sbin/]  

/usr/sbin/にosirisがインストールされます。リターンキーでOKです。
これでosirisがインストールされます。続けて、

Start management console now? (y/n)

マネジメントコンソールをスタートするか聞かれます。yにします。
SSL接続用のRSA Keyが作成されます。

Start scan agent now? (y/n) 

スキャンエージェントをスタートするか聞かれます。yにしておきます。

これで管理用マシンのインストールが完了です。

石津@RJC さんからのコメント
( Friday, February 13, 2004 18:19:06 )

次に管理対象のosirisクライアント用のパッケージを作成します。
先ほどのディレクトリosiris-3.0.4-currentで、以下のようにします。

make clean
sudo make package

これが完了するとosiris-3.0.4-current/src/installに以下のファイルが作成さ
れます。

osiris-3.0.4-current.Darwin.tar.gz

これを管理したいマシンにコピーして、以下のようにインストールを行います。

tar -zxvf osiris-3.0.4-current.Darwin.tar.gz
cd osiris-3.0.4-current
sudo ./install.sh

これでインストールが始まります。終了間際に

Start scan agent now? (y/n) 

スキャンエージェントをスタートするか聞かれますのでyにしておきます。

これでクライアント側の準備も完了です。


石津@RJC さんからのコメント
( Friday, February 13, 2004 18:36:30 )

ここから設定に入ります。管理マシンでosiris関係デーモンが起動しているか
確認します。

$ ps aux | grep osiris
osiris 14611   0.0  0.2    29116    876  p1  S     6:01PM   0:00.01 /usr/sbin/osirismd
osiris 14612   0.0  0.2    29116   1116  p1  S     6:01PM   0:00.05 /usr/sbin/osirismd
root   14614   0.0  0.1    27812    784  p1  S     6:03PM   0:00.01 /usr/sbin/osirisd
osiris 14615   0.0  0.2    27816   1280  p1  S     6:03PM   0:00.04 /usr/sbin/osirisd
user   15481   0.0  0.3    28912   1824  p1  S+    6:19PM   0:00.06 osiris
user   15488   0.0  0.1    18172    344 std  S+    6:22PM   0:00.01 grep osiris


管理用マシンでosirisコマンドを起動します。

$ osiris

すると以下のような起動画面が出ます。(osorisはコマンドラインで操作します)

Osiris command line management utility - version 3.0.4-current
unable to load root cert for management host:
(/Users/issy/.osiris/osiris_root.pem)
fetching root certificate from management host (localhost).

The authenticity of host 'localhost' can't be established.

  [ server certificate ]

      subject = /C=US/CN=Osiris Managment Daemon/OU=Osiris IDS
      issuer  = /C=US/CN=Osiris Managment Daemon/OU=Osiris IDS

            key size: 2048 bit
      MD5 fingerprint: AE:67:D1:27:F3:55:96:08:98:38:CA:04:86:A8:06:40

Verify the fingerprint specified above.
Are you sure you want to continue connecting (yes/no)?

接続しますか?と聞かれるので、yを入力します。

authenticating to (localhost)

User:  

接続するとユーザ名を入力しろと言われるので「admin」と入力します。

User: admin
Password:

パスワードを聞かれますが、設定していないので、ここでは単純にリターンキー
を押します。すると以下の画面になります。

connected to management daemon, code version (3.0.4-current).
hello.

osiris-3.0.4-current:  

ここでプロンプトに?と入力するとhelpが表示されます。

[ Managment Commands ]
    mhost              host             new-user         edit-filters 
    edit-mhost         edit-host        edit-user        print-filters
    print-mhost-config list-hosts       list-users                    
    test-notify        new-host         delete-user                   

[ Host commands ]
    status              list-configs      start-scan    list-db        
    watch-host          import-config     stop-scan     base-db        
    disable-host        push-config                     set-base-db    
    host-details        edit-config       list-logs     print-db       
    print-host-config   print-config      print-log     print-db-errors
    rm-host             rm-config                       print-db-header
                        drop-config                     rm-db          
                        verify-config                                  
                        new-config                                     

[ Misc commands ]
    help           version             quit              ssl

  For help with a specific command, try: help <command>

まずは管理用マシン自体の設定をします。
edit-mhostと入力してリターンキーを押すと後は対話的に進みます。

osiris-3.0.4-current: edit-mhost

[ edit management host (localhost) ]

  > syslog facility [DAEMON]:  ←リターンキー
  > syslog level [NOTICE]:  ←リターンキー
  > log intensity [LOW]:  ←リターンキー
  > control port [2266]:  ←標準でよければリターンキー
  > http host name (uses system name by default) []: myhost  ←管理マシンのホスト名
  > http control port [2267]:  ←標準でよければリターンキー
  > notification email []: user@mydomain.com  ←通知を受けたいメールアドレス
  > notification smtp host [127.0.0.1]: 192.168.0.10 ←メールサーバのIPアドレス
  > notification smtp port [25]:  ←リターンキー

  > authorized hosts:

   127.0.0.1

  Modify authorization list (y/n)? [n]   ←管理ホストからだけ操作できればいいならリターンキー

[ management config (localhost) ]

syslog_facility = DAEMON
syslog_level = NOTICE
log_intensity = LOW
control_port = 2266
http_port = 2267
http_host = myhost
notify_email = user@mydomain.com
notify_smtp_host = 192.168.0.10
notify_smtp_port = 25
hosts_directory = 
allow = 127.0.0.1


Is this correct (y/n)? y ←よければリターンキー
management host config sucessfully saved.

これで管理用マシンの設定は完了です。

石津@RJC さんからのコメント
( Friday, February 13, 2004 18:59:37 )

#読みにくくなちゃってすいません。でも続けます。:-)
#タイトルも侵入検知とかしちゃったけど、ファイル整合性チェックツールなんですよね。
#改竄検知ができる=侵入検知ができるってことで、勘弁してください。:-P


管理用のマシン設定ができたところで、チェック対象のクライアントの設定に入ります。
ます、管理対象クライアントをnew-hostコマンドで登録します。
管理用マシンそのものももちろん対象にできます。
ここからも対話的に設定できます。

osiris-3.0.4-current: new-host

[ new host ]

  > name this host []:  myclient01 ←クライアントのホスト名
  > hostname/IP address []: 192.168.0.101 ←クライアントのIPアドレス(管理用マシン自身を対象にするなら127.0.0.1でOK)
  > description []: PBG4 ←クライアントの説明(任意記述)
  > enable scan logging for this host? (yes/no) [no]: y ←logをとる場合にy
  > archive scan databases for this host?  (yes/no) [no]:  ←スキャン毎の結果を保存したい場合にy
  > enable admin email notification for this host? (yes/no) [yes]:  ←メールでの通知が必要ならy
  > send scan notification, even when no changes detected  (yes/no) [no]:  ←変化なしでも通知が必要ならy
  > notification email (default uses mhost address) []:  ←通知アドレスが管理用マシンの登録と同じでOKならリターンキー
  > configure scan scheduling information? (yes/no) [no]: yes  ←スキャンスケジュールを調整するならy(標準は1日毎)

    [ scheduling information for shaoxing ]

    Scheduling information consists of a start time and a frequency value.
    The frequency is a specified number of minutes between each scan, starting
    from the start time.  The default is the current time.  Specify the start
    time in the following format: mm/dd/yyyy HH:MM

    enter the start date and time 
    using 'MM/DD/YYYY hh:mm' format: [Fri Feb 13 18:40:12 2004]  ←タイムスタンプフォーマット変更
    enter scan frequency in minutes: [daily (1440)] 180 ←1分単位で指定できます

  > activate this host? (yes/no) [no]: yes ←スキャンを有効にするならy

host                  => myclient01
hostname/IP address   => 192.168.0.101
description           => PBG4
host type             => generic
log enabled           => yes
archive scans         => no
notifications enabled => yes
notifications always  => no
notify email          => (managment config)
scans starting on     => Fri Feb 13 18:40:12 2004
scan frequency        => every 180 minutes
enabled               => yes

Is this correct (y/n)? y ←設定内容がOKならy
the new host (shaoxing) was sucessfully created.
initialize this host? (yes/no): y   ←すぐに始めるならy(対象クライアントにosirisdが起動している必要あり)

Initializing a host will push over a config, start
a scan, and set the created database to be the
trusted database.

Are you sure you want to initialize this host (yes/no): y ←すぐに始めるならy(対象クライアントにosirisdが起動している必要あり)

OS Name: Darwin ←対象クライアントから自動判別
OS Version: 7.2.0

use the default config for this OS? (yes/no): y ←該当OS用の標準設定でよければy
The config: default.darwin has been pushed.
perform an initial scan and database for this host? (yes/no): y ←すぐに始めるならy
scanning process was started on host: myclient01
osiris-3.0.4-current:  

これでクライアントの設定が完了です。
設定と同時に初期のデータベース登録と、最初のスキャンを始めているので上記の
設定であれば、3時間毎に該当クライアントをスキャンして異常があれば、
user@mydomain.comにメールで通知されることになります。

対象ホストが複数ある場合には上記の手順を必要なだけ繰り返すことで、管理対象
を増やすことができます。


石津@RJC さんからのコメント
( Friday, February 13, 2004 19:05:57 )

えーと、ここまででご理解いただけると思いますが、osirisは使い勝手をかなり意識
して作成されており、非常に優れたプログラムだと感じました。
samhainと違い、1通のメールには必要な情報が全て含まれてきますし、各OS向けの
設定が非常にわかりやすくテンプレート化されているので理解も早いです。
標準状態での使いやすさに配慮されていると感じます。

ということでうちではosirisを使い始めました。:-)

Radmindも試したのですが、ちょっと疲れたのでまたの機会に。


たまちゃん さんからのコメント
( Friday, February 13, 2004 19:49:50 )

石津さん,ご苦労様でした。堪能しました(しきれてないかも)。

NDIS 関連でその他で私が試したのは HenWen です。おそらくインストールは
一番簡単ではないかと思います。

設定方法は・・・と書くべきところですが,非常によくできたマニュアルがあ
るので付け足すべきことはありません。

Mac OS X 用に道具はいろいろと揃ってきているのに使われていないというのが
問題でしょうか。情報量が圧倒的に少ないことが原因だと思いますが,その意味
でも石津さんのポストは非常な助けとなると思います。

深謝あるのみ。

石津@RJC さんからのコメント
( Friday, February 13, 2004 22:51:11 )

たまちゃんさん、どもです。:-)

>Mac OS X 用に道具はいろいろと揃ってきているのに使われていないというのが
>問題でしょうか。

そうですね。せっかくUNIX系の有用なツールがあるので使わないのは損ですね。
これらのおかげでOSXを会社で積極的に展開できてます。:-)
仕事柄、セキュリティ系のツールをいろいろ使っているので、ボチボチ紹介して
いければと思っています。

石津@RJC さんからのコメント
( Friday, February 13, 2004 22:55:51 )

管理用マシン設定で大きな抜けがありました。
adminでのログインの部分ですが、

>接続するとユーザ名を入力しろと言われるので「admin」と入力します。
>
>User: admin
>Password:
>
>パスワードを聞かれますが、設定していないので、ここでは単純にリターンキー
>を押します。すると以下の画面になります。
>
>connected to management daemon, code version (3.0.4-current).
>hello.
>
>osiris-3.0.4-current: 

このプロンプトの後でまず最初にやるべきことはパスワード設定です。

osiris-3.0.4-current:passwd admin

と入力することでパスワード設定ができます。

osiris-3.0.4-current:passwd admin
password:

となるので、パスワードを入力してください。
再度確認で入力を求められるので、同じパスワードを入力して設定完了です。

設定したパスワードは次回接続から有効です。


石津@RJC さんからのコメント
( Friday, February 13, 2004 23:35:21 )

osirisが送信してくるメールを紹介しておきます。
設定した項目がどこに反映されているかもわかりやすいと思うので確認してみてください。
これはOSXServerにユーザを一人追加した際に送られてきたものです。
ここに書かれたURLをクリックするとosirisの管理用マシンにブラウザでアクセスします。
そして同じアラート内容が表示されますが、そのページの一番下に「accept」というボタン
があります。このボタンを押すとこの変更を確認したということで、データベースが更新さ
れます。確認するまでosirisのスキャンが走る度に同じアラートを送り続けるようです(未確認)。
また、このURLにアクセスするブラウザのIPアドレスはedit-mhostでauthorized hostsに
登録する必要があるようです。*も使えるとありますが、うちでは機能しませんでした。:-(


  From:     osirismd@myhost
  Subject:   scan log - [1 changes][host: myclient01]
  Date:   2004年2月11日 23:34:27:JST
  To:     user@mydomain.com

If these changes are approved, visit the URL below to set the latest scan database to be the trusted database. Or, login to the management console and set the trusted database to (2).  If these notifications persist, you may need to modify the scan config for this host or set some comparison filters.

    <https://myhost:2267?action=v&host=myclient01&base_db=2&log=5>

     compare time: Wed Feb 11 23:34:24 2004
             host: myclient01
      scan config: default.darwin
         log file: 5
          base db: 1
       compare db: 2

[myclient01][new][user:testuser]


Change Statistics:
----------------------------------

        checksums: 0
       SUID files: 0
 root-owned files: 0
 file permissions: 0
              new: 1
          missing: 0

total differences: 1



たまちゃん さんからのコメント
( Saturday, February 14, 2004 18:26:21 )

HenWen の最新版(2.0.4)を動かしてみました。インストールは至極
簡単で本体の HenWen と相棒の LetterStick を適当なフォルダに放り
こんでダブルクリックするだけです。

普通にクライアントマシンで動かすにはデフォルトの設定で十分な
ように考えられており,ウェブサーバなどを動かしている場合は若干
の修正が必要です。

侵入行為があったときにどのように振る舞うかも当然設定できます。
メールで通知することももちろんできます(LetterStick の出番)し,
auto-protect をかけることもできます(十分注意が必要です)。

とにかくよくできたマニュアルなのでボタン1つ押すことが何を意味
するのかが明快です。

Snort を動かすんだったら Mac OS X の出番だぜい,という印象を強
くもたせてくれる出来のいいアプリケーションです。

#使っている人が少ないというのが本当にもったいないと思います。

→  HenWen

vm_converter さんからのコメント
( Thursday, February 19, 2004 18:46:43 )

>石津@RJC さん 
# 風邪引いて倒れてたもので出てくるのが遅れました。_o_

いや、あんなメモ書きが少しでも役に立ったなら嬉しいですね。
私は情報集めただけで、自分では何も手を動かしてませんので...。
いやしかし、samhainとosirisと一度に読めるとは嬉しい限りです。
特にosirisの充実ぶりがとても有難いです。

> 唯一といっていいHPも現在読めなくなっているため 

のページは恐らく、ヽRノ日記 さんのことをおっしゃっているのだと思いますが、
確かに残念でしたね。
# 一応、探しまくれば見れはしますが。(^^;;

ホストベースのIDS、というか整合性チェックツールって、世間でFirewallだぁ
NIDSだぁ監視だ検知だ検疫だぁと騒がれる程には注目されてない気がするのですが
サーバを立ち上げる身からすると、実はかなりの安心材料になりますよね。
ですので、この石津さんのドキュメントはとても貴重かと。
# 箱ものじゃないからかしらん...>注目されてない

vm_converter さんからのコメント
( Thursday, February 19, 2004 18:47:21 )

>たまちゃん さん 
最近 日本 Snort ユーザ会 <http://snort.gr.jp/> のMLなど読んでいて、NIDSは
非常に注目されているのだなぁと感じています。
# ML開始時の参加者の伸びがすごかったようなので。

それでもやはり、最初のインストールが上手く行かないという躓きもあると思うんですね。
そんな中、Mac OS Xの動くMacさえあれば、ダウンロードしてきて起動すれば
とりあえず動いてしまうHenWenって入門としてはぴったりだろうになぁと
よく思うんです。
実際、私も初めてHenWenを触った時は簡単過ぎて拍子抜けしましたし。
LetterStickもとても便利そうというか平易そうですしね。
# 済みません。使ってません。ごめんなさい。

ただまぁ、「Macさえあれば」ってのを大抵はクリアできないんですけど...。
# 余り大っぴらに「Mac! Mac!!!」と叫ぶのも好きじゃありませんし。

石津@RJC さんからのコメント
( Friday, February 20, 2004 23:37:05 )

>いや、あんなメモ書きが少しでも役に立ったなら嬉しいですね。

vm_converterさん、お久しぶりです。
本当に参考になりました。ありがとうございます。
osirisについては設定をもうちょっと突っ込んで、運用まで書いていこうと
思っています。現時点では単に動かしているだけって感じなので、もうちょっと
攻めのスキャン設定を詰めるつもりです。
当面はOSX向けになりますが。

>ホストベースのIDS、というか整合性チェックツールって、世間でFirewallだぁ
>NIDSだぁ監視だ検知だ検疫だぁと騒がれる程には注目されてない気がするのですが
>サーバを立ち上げる身からすると、実はかなりの安心材料になりますよね。

そうですね。snortやmanhuntなんかはよく言われることですが、攻撃があった
ことは検知してくれても成功したかどうかはわからないですね。もちろん複合
的に情報を得ることで判断するきっかけになるので、重要ではあるのですが。

整合性チェックツールは地味なのでウケないというのと、OSのファイル構成を
深く理解して設定しないと意味が薄れてしまうという点で、モノを売っておけ
体質なSI企業には扱いにくいモノなんだろうなと思っています。
まさに「箱」でない=売り方が見えないという感じでしょうか。(言過ぎかも)

OSXもサーバ用途で利用されることが多くなっていると思うので、そろそろこう
いうツールネタ情報は必要かなと思います。
仕事でせっかくやってるので、できるだけネタ提供できるようにがんばろうかなー
と思ってます。:-)