title_parttitle_parttitle_part
静岡県浜松市であれこれソフトを開発している A.K.I Software のブログです。日々の開発日記やサーバー・セキュリティ関連の話題なども掲載。
<< 2018/04 >>123456789101112131415161718192021222324252627282930
Powered by BLOM Windows 用の Syslog サーバーでも作ろうかと思ったら。
小さくも大きくも閉じたりもしません
11/09/18 00:49 / その他のソフト

以前、PMail Server のユーザー様から「Windows サーバー用の IPv6 対応 Syslog サーバー欲しい。あったら買う」とか言われまして、8月中旬くらいに作ろうかと思っていたのですが、本業が立て込んで中々手を付けられなかったのですがようやく着手しました。

と言っても、数時間で出来ちゃった訳です。
さすがに 0 からで数時間では無理なので PMail Server のコアソースを流用しました。
UDP Socket のサーバー側を書くのは久しぶり(UDP クライアント側は DNS Client で触る)なので、SOCK_DGRAM の所を SOCK_STREAM にしたままにして「なんで動かないん?」とか、FD_READ で処理する所を「FD_ACCEPT 飛んでこないやん!(UDP なので当然)」とか、少しボケをかましましたが。

photo


一応動いているっぽいです。上のログは送信元のIPアドレスとポートを出力し忘れています(^-^;

で、サーバー本体側を作った後に、RFC をきちんと読もうと色々とググっていたのですが・・・

元々は RFC3164 (BSD syslog) だったらしいのですが、2009年に RFC5424 に代わっていて RFC3164 は廃止されたようです。
じゃぁ、RFC5424 を見てみますと、なんだかメンドクサイことが書いてあります。

原文はこちら。

All implementations of this specification MUST support a TLS-based transport as described in [RFC5425].

げー、MUST かよ。
超意訳すると「全ての実装は RFC5425 に書かれているように、TLSベースの転送を実装【しなければならない(MUST)】。」

えっと?ログを記録するのに TLS 通信をしろ、と。

UDP ベースで TLS はムリムリ(後述)なので TCP 通信になりますね?更に読むと

All implementations of this specification SHOULD also support a UDP-based transport as described in [RFC5426].
超意訳すると「全ての実装は RFC5426 に書かれているように、UDPベースの転送を実装【した方がいいんでない?(SHOULD)】。」

なるほど。UDP に追加して、TCP も使うと。んで、TCP の場合は SSL 通信しないとならない、と。

「ログを取る目的だけの為に」

大事なのでもう一度言いますと「ちゃんとやる場合、認証局にお金出して証明書発行して貰って、証書をインストールしないと、自前のログを取ることもできませんよー。必須だからねー」ってことですね?
オレオレ認証局ならお金はかかりませんが・・・

なんだか一気にやる気が失せました(^-^;

別に UDP & TCP で SSL/TLS 通信するのは別にいいんですが、対費効果を考えると相当微妙に思えます。
SHOULD ならまだわかるんですが、MUST にする意図が・・・

ついでに言うと、なんか syslog は特許関係で問題がちょっとあるらしくて、下手に作って公開すると「RFC の実装が足りないよ!」とか「特許関係クリアしていますか?」とか突っ込みを食らいそうなんで、やめておくことにしました。

久しぶりにフリーで公開する予定だったのですが(ロガーでお金取るなら実装は完全にしないと、とても有償にする勇気はありません。GIFの特許の時のように後で問題になっても困りますし)残念無念です。

どんなアイコン作ろうかななんて楽しみにしていたのですが。

後述:
到達が保障されていない UDP で TLS は無理があるだろうと思ったら、RFC4347 で DTLS なる UDP で TLS を実現する方法があるらしい・・・が、これがまた面倒。
UDP ででかいパケットを送る為に分割方法とかまで定義されて、届かないことがあるから再送タイマーとかも用意してあるようで。
つーか、ここまでコストかけるなら TCP でいいじゃないかと思う。
確かに UDP は TCP よりかコスト低いけどさ。
ストリーミングなんかは UDP の方が良いのもわかるんだけどさ。

[更新日付:2011/09/18 00:49:49]
トラックバックを見る(0)
Log Link [http://akisoftware.com/cgi-bin/blom.exe?akisoft+sl+7002724c93041ee4def75d794d84dc2763a82c25]
TB Link [http://akisoftware.com/cgi-bin/blom.exe?akisoft+tb+7002724c93041ee4def75d794d84dc2763a82c25]

記事へのコメント

名前 : H.Matsuda (2011/09/20 17:17:27)

確かに、割と最近のルーターとかでも、RFC3164ベースで送ってくる物が多いような気がするので、適当実装で良ければOKなんですが。せっかく作ったことですし。

RFC3164 自体が今では結構曖昧でして(BSD syslog とあるように、BSD に特化した仕様?で、Apache とかは独自拡張していたりして、サーバーよりもログ解析するツールの方が大事だったりします)きっちり作ると言っても、受信して記録するだけだったりします。(本当の意味できっちり作る場合は、syslog の中継まで作った方がいいんですが)

無責任実装でフリー公開するかもしれません(笑)

名前 : noppo (2011/09/20 15:41:36)

こんにちは。

RFC3164ベースの実装をきっちり行って実用上十分使えるのであれば、それで良いような気もしますが、どうなんでしょうか?

よくわかりませんけどね。

名前
コメントキー
 
コメントする時はキーを正確に入力して下さい
コメント
アドレスを含んだコメントはできません
© 2008-10 A.K.I Software all rights reserved.