「syslog」とはルータが記録してくれる「通信記録」です。
正確には他の意味や他の部分でも使われる言葉ですが、今回は上記の様に表現いたします。

本来はルータ内部の機能により「記録や表示」をしてくれるのですが 僕の持っているルータでは「件数制限」があり、最大で400件の記録しかしてくれません。

これで十分とお思いでしょうが...そんなわけには行きません... インターネットを通して来る「招かれざる客」は秒単位でいらっしゃいます。
さらに自分自身がアクセスしたことも記録してくれるので「400件」では足りません。
ちなみにYahoo!のトップページを表示しただけで4っつ記録されます(下記参照)。

06/11/08, 9:01:42 202.93.91.195 接続先: TCP HTTP
06/11/08, 9:01:42 124.83.141.28 接続先: TCP HTTP
06/11/08, 9:01:42 203.216.235.247 接続先: TCP HTTP
06/11/08, 9:01:42 202.93.91.141 接続先: TCP HTTP

招かれざる客もガンガン「ドア」ノックしてきて一秒間に「4〜5」回、なおこれはまだ少ない方だと言われました...( ̄△ ̄;)
このことを考慮すると一秒間で「10件」は記録され、 十秒後には「100件」、400件まではわずか一分足らず...
こうなると「何かしているちょっと前の記録」しかありません、つまり、まったく機能していないのと同じことになってしまいます。
そこで自宅でサーバとして起動しているパソコンに通信した内容を記録させようじゃないかと!
それが「syslog」というものを使ってできるのです。

さて、ここからosXでのsyslog取得の詳細を記していきます...まず下記のファイルの存在を確認してください。

・/System/Library/LaunchDaemons/ の中にあるファイル「com.apple.syslogd.plist」
/private/etc/ の中にあるファイル「syslog.conf」

存在が確認できたら、上記二つの内容を書き換えます(追記)します...
この手のファイルを編集するときに使うアプリケーションはいろいろとありますが
僕の場合は「pico」という「Terminal.app(ターミナル)」から呼び出すアプリケーションを使いました。

『/Applications/Utilities/Terminal.app』 Terminal.appを起動したらこんな感じになるので

Last login: Thu Nov 9 10:55:33 on console
Welcome to Darwin!
madbavoo:~ madbavoo$
「$」の後に「sudo pico ファイル名」を記入して、picoの起動と、指定ファイルを開きます...
下記は「/System/Library/LaunchDaemons/」という場所にある「com.apple.syslogd.plist」というファイルを開く場合です。
$ sudo pico /System/Library/LaunchDaemons/com.apple.syslogd.plist
すると、下記の注意事項が表示されます、なお、初めてターミナルでシステム関連のファイルを開く時に下記の様に表示されます。
今後はpicoでシステム関連のファイルを開いても「Password:」のみしか出てきません。
We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

#1) Respect the privacy of others.
#2) Think before you type.
#3) With great power comes great responsibility.

Password:

これ、「システムに関わることなんで注意してよ」ってことだと思うが設定するには避けられないのでそのまま進みます...
そして、上記の様に「Password:」を聞かれるのでログインのパスワードを入力。
なお、パスワードは表示されませんので「あれっ記入できないぞ」とは思わない様、 無事にパスワードも認証されるとpicoが立ち上がります...

無事立ち上がると下図の様になります...
ターミナルでpico001

ではこのファイル→ com.apple.syslogd.plist の内容を変更していきましょう...
図は「変更前」の状態です、「<string>/usr/sbin/syslogd</string> 」の下に「<string>-u</string> 」を追記します。

<array>
<string>/usr/sbin/syslogd</string>
<string>-u</string>
</array>

これで、このファイルの編集は終わりです、「<string>-u</string> 」の一行を追記しただけです。
ではこれを保存してください、picoで編集したファイルを保存し終了するにはキーボードの「control」キーと「x」を同時に押します。
すると、下図の様に画面が変ります...
syslog002
ここで、内容が間違っていないか確認し「Y」キーを押します。

さらに画面が変り「この名前のまま上書きして良いのか?」って聞いてくるので「return」を押して保存し終了させてください。syslog003

ここまでで「com.apple.syslogd.plist 」の編集は終了、次は「syslog.conf」の編集です。


「syslog.conf」 の所在も解ったところで編集作業に移ります。
またまた Terminal.appからpicoを起動させて作業します、ここで前回とはちょっと違った形でファイルを開きます。

前回は「$ sudo pico」の後にフォルダ名から階層に渡って全てを記入しました(コピペの方もいそうですが...)が
今回は「$ sudo pico」の部分にファイルをドラッグする方法で開きます...
06
すると...勝手にファイルまでのパスを書き込んでくれます...
009
この後、「return」を押し、Passwordを記入して再度「return」で開きます...
実はここからが大変で、ルータから送られてくる syslog の「ファシリティ」が解らないと記録されないんです...
この「ファシリティ」とは簡単に言うとログの種類を表します、詳しい事はご自分で検索してください。

では、先に進みます...
前回の手順でsyslog.confを開くと下図の様になります...

何もしていない状態(初期状態)だと上図の様になっていて「local0.* 」や「ftp.* 」などの羅列が「ファシリティ」です。

このままだとルータが書き出すsyslogを記録できないのでファシリティを追記します。
僕の所有しているルータのファシリティは「local1」だったので「local0.*」の下に追記します。

lpr.info     /var/log/lpr.log
mail.*      /var/log/mail.log
ftp.*       /var/log/ftp.log
netinfo.err  /var/log/netinfo.log
install.*     /var/log/install.log
install.*     @127.0.0.1:32376
local0.*     /var/log/ipfw.log
local1.*     /var/log/router/syslog.log

次に「local1」の 右側をみると syslog.logというファイルに記録する様に記述しています。
このsyslog.logも当然最初からは存在しません、なのでテキストエディットなどで「空のファイル」を作り
名称を「syslog.log」にしてフォルダ「log」の 中に保存します。
僕は解りやすい様にlogフォルダの中に「router」というフォルダを作り、そこに保存しました。
このファイル保存の際、システム関連の保存場所に保存しようとするので管理者のパスワードを聞かれます
ログインパスワードを記入し、保存してください。

ここまでの作業で、ファイル「syslog.log」の作成・「com.apple.syslogd.plist」への追記・syslog.confへの追記が完了している事を確認してください。
ファシリティが間違っていなければ、ルータからlogが送られてきて、syslog.logに記録され始めているはずです。

ここで、system.log(syslog.logじゃないです)にも同じものが記録されている場合は
再度syslog.confを開き一番上の部分「*.notice ~ mail.crit」の後ろに「;local1.none」を追記します。

*.err;kern.*;auth.notice;authpriv,remoteauth,install.none;mail.crit                /dev/console *.notice;authpriv,remoteauth,ftp,install.none;kern.debug;mail.crit;local1.none     /var/log/system.log

ここまでで意図した動きがされていなければ「ターミナル」でsyslogを再起動してください。

$ sudo launchctl stop com.apple.syslogd
$ sudo launchctl start com.apple.syslogd

まだ、記録されない場合は「syslog.logのパーミッション」があっていないか「ファシリティ」の間違いです。
簡単にルータからのログのファシリティを調べる方法は下記をターミナルで実行してみてください。
この際、ブラウザを開き適当にどこかのサイトにアクセスしてください。

sudo tcpdump -X port 514

ルータ側からログを送信してきていないと下記の様に表示され、先に進みません。
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on en0, link-type EN10MB (Ethernet), capture size 96 bytes

ルータの設定を見直し、syslogを送信する様にしてください。

もしルータからきちんとログを送信していて、yahoo!に接続すると...

$ sudo tcpdump -X port 514
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on en0, link-type EN10MB (Ethernet), capture size 96 bytes

14:52:10.363685 IP 192.168.1.1.netarx > 192.168.1.11.syslog: UDP, length: 86
0x0000:  4500  0072  1ed2  4000  4011  864c  c0a8  0a01    E..r..@.@..L....
0x0010:  c0a8  0a0b  0410  0202  005e  cc9d  3c31  3431    .........^..<141
0x0020:  3e4e  4154  3a20  5544  5020  636f  6e6e  6563    >NAT:.UDP.connec
0x0030:  7469  6f6e  2061  6363  6570  7465  6420  6672    tion.accepted.fr
0x0040:  6f6d  2031  3932  2e31  3638  2e31  302e  3132    om.192.168.1.11
0x0050:  3a34                                                 :4
と、表示され、< と >で囲まれた中の数字を「8」で割ります。(141÷8=17.625)
小数点以下はとりあえず置いといて「17」という数字がファシリティになります。
しかし、前述のとおり「local1」のところに「local17」として記入しても動きません。
これは「17」=「local1」という考えがあるからで、以下にざっとファシリティの表を記しておきます。
なお、この「17」が「local1」という詳しい説明はできません...
5   messages generated internally by syslogd
6   line printer subsystem
7   network news subsystem
8   UUCP subsystem
9   clock daemon (note 2)
10   security/authorization messages (note 1)
11   FTP daemon
12   NTP subsystem
13   log audit (note 1)
14   log alert (note 1)
15   clock daemon (note 2)
16   local use 0 (local0)
17   local use 1 (local1)
18   local use 2 (local2)
19   local use 3 (local3)
20   local use 4 (local4)
21   local use 5 (local5)
22   local use 6 (local6)
23   local use 7 (local7)

以上、記述が間違ってなければsyslogの取得はできているはずです。


念のため要点だけピックアップします。
・「com.apple.syslogd.plist」を編集する。
・「syslog.conf」を編集する。
・「syslog.log」というファイルを作る。
・必要ならば、ルータのsyslogの「ファシリティ」を調べて正しいファシリティに書き換える。
・念のためsyslogを再起動する。(心配ならばパソコンを再起動するのも良いでしょう)

これで記録されない場合はもう一度見直ししてみてください。


上記問題なく、正常に動作し始め、ログされ始めました、しかしまだ問題が残っています ...
それは「ログは指示しない限り記録し続けます」。
つまり、不正アクセスを含め、自分でインターネットに接続しても記録されるため
ログ自体が膨大になり、2〜3日前の任意の時間帯のログを探すには「とてつもない」労力が必要になります(目が疲れるよ...)。
そこで、このログを24時間で区切り「一日 」という単位で管理できる様にしてみたいと思います...

なお、この続きはまた次回にまわさせて頂きますが、早く内容を知りたい方は下記リンクをご覧ください...
Apple Discussion Boards
トピック: ルータのログの記録先を変更したい...
トピック: 3:15 hup 後 system.logなどが記録されない...