syslog
ネットワーク機器やサーバが出力するログを送るためのプロトコルである。各機器の記録をログサーバ(syslogサーバ)へ集めて管理できる。従来から使われる転送方式ではUDPの514番ポートを使う。
イマシルちゃんの解説
ルータもスイッチもサーバも、それぞれ「いつ、何が起きたか」の日記(ログ)をつけているんだ。
でも、機器ごとにバラバラに日記を見に行くのは大変だよね。
syslogは、各機器のログをネットワーク経由で送るためのプロトコル(通信の規則)だよ。
各機器から届くログを1台のサーバに集められるんだ。
トラブルが起きたとき、全部の日記を並べて読めるから、原因を探しやすくなるんだよ!
この解説はわかりやすかったですか?
より深い解説
定義
syslogは、機器やアプリケーションで発生したイベントの記録を集めるための仕組みである。RFC 5424はメッセージ形式と処理の枠組みを定め、実際に運ぶためのトランスポート方式は分けて定義されている。各機器はsyslogサーバへ送信し、受信側がファイルやデータベースへ保存する。
| 転送方式 | 主な仕様とポート | 特徴 |
|---|---|---|
| UDP | RFC 5426、宛先514番 | 接続の確立が不要。ただし配送、順序、重複排除を保証しない |
| TLS | RFC 5425、通常6514番 | 通信を暗号化し、接続相手の認証も利用できる |
UDP自体の基本仕様はRFC 768である。TCPによる転送を扱う実装もあるため、「syslogは必ずUDPである」とは判断しない。また、TLSを使っても受信後の保存処理やディスクの容量不足まで自動的に解決するわけではない。
メッセージに含まれる主な情報
| 情報 | 内容 |
|---|---|
| ファシリティ | ログの発生元の種類(カーネル、認証、メール、ローカル用など) |
| シビアリティ(重要度) | 0(Emergency:緊急)~ 7(Debug:デバッグ)の8段階 |
| タイムスタンプ | ログが発生した時刻 |
| ホスト名 | ログを出した機器 |
| メッセージ | 内容 |
ログを集める目的
| 目的 | 内容 |
|---|---|
| 障害の原因分析 | 複数の機器のログを時系列に並べて、何が起きたかを調べる |
| セキュリティの監視 | 不正なアクセスの兆候を見つける。証拠として保全する |
| 改ざんの防止 | 機器が乗っ取られても、送信済みのログは別のサーバに残る |
| 容量の確保 | 機器の中の小さな記憶領域では、古いログが消えてしまう |
時刻の同期が重要な理由
複数の機器のログを突き合わせて調べるには、各機器の時計がそろっている必要がある。時計がずれていると、出来事の前後関係を正しく判断できない。そのため、ネットワーク機器やサーバの時刻を、NTPで同期させておく。
調査に使うログの例
| 知りたいこと | 見るログ |
|---|---|
| どの端末が不正な通信をしたか(IPアドレスから端末の特定) | ファイアウォールの通信ログで送信元IPアドレスを確認し、DHCPのリースログで、その時刻にそのアドレスを使っていた端末(MACアドレス)を調べる |
| 誰がいつどのサイトにアクセスしたか | プロキシサーバのアクセスログ |
| 誰がいつログインしたか | 認証サーバの認証ログ |
| 機器の異常(インタフェースのダウン、NATテーブルの枯渇など) | 機器のシステムログ |
ファイアウォールの設定
UDP方式でDMZの機器から内部のsyslogサーバへ送る場合は、ファイアウォールで送信元を対象機器、宛先をログ収集先、宛先ポートをUDP/514にした通信を許可する。別の転送方式を採用する場合は、そのプロトコルとポートへ合わせる。
送信元の許可、時刻同期、保存期間、受信量に見合う容量を合わせて設計する。ログを中央へ集めることは分析をしやすくするが、中央の収集・保存機能の監視も必要になる。