「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「$」の後に「sudo pico ファイル名」を記入して、picoの起動と、指定ファイルを開きます...
Welcome to Darwin!
madbavoo:~ madbavoo$
$ sudo pico /System/Library/LaunchDaemons/com.apple.syslogd.plistすると、下記の注意事項が表示されます、なお、初めてターミナルでシステム関連のファイルを開く時に下記の様に表示されます。
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が立ち上がります...
無事立ち上がると下図の様になります...
ではこのファイル→ 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」を同時に押します。
すると、下図の様に画面が変ります...
ここで、内容が間違っていないか確認し「Y」キーを押します。
さらに画面が変り「この名前のまま上書きして良いのか?」って聞いてくるので「return」を押して保存し終了させてください。
ここまでで「com.apple.syslogd.plist 」の編集は終了、次は「syslog.conf」の編集です。
「syslog.conf」 の所在も解ったところで編集作業に移ります。
またまた
Terminal.appからpicoを起動させて作業します、ここで前回とはちょっと違った形でファイルを開きます。
前回は「$ sudo pico」の後にフォルダ名から階層に渡って全てを記入しました(コピペの方もいそうですが...)が
今回は「$ sudo pico」の部分にファイルをドラッグする方法で開きます...
すると...勝手にファイルまでのパスを書き込んでくれます...
この後、「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と、表示され、< と >で囲まれた中の数字を「8」で割ります。(141÷8=17.625)
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
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を再起動する。(心配ならばパソコンを再起動するのも良いでしょう)
これで記録されない場合はもう一度見直ししてみてください。