基礎
syslog は UDP と TCP のどちらを使うべき? TLS(6514)は必要?
機器の syslog 送信先を設定しようとすると、UDP と TCP が選べることに気づきます。どちらでも「動く」だけに、根拠を持って選びたいところです。本稿では両者の性質の違いと使い分けの指針、そして暗号化(syslog over TLS)が必要になる場面・ならない場面を整理します。
UDP 514 — 伝統と割り切り
syslog の最も伝統的な運び方が UDP のポート 514 です。コネクションを張らず、送信元はメッセージを一方的に送り出すだけ。軽量で、送信側の実装も単純なため、ほぼすべての対応機器がまず UDP をサポートしています。
代償は到達保証がないことです。経路の輻輳や受け手の取りこぼしでパケットが失われても、誰も気づきません。また、1 メッセージ 1 データグラムのため、長いメッセージは途中で切られることがあります。
TCP 514 — 到達性とその代償
TCP の 514 はコネクション型で、パケット単位の消失には再送で対処されるため、UDP より到達性が高くなります。長いメッセージも扱いやすく、監査目的でログの欠落を減らしたい場合に選ばれます。
ただし万能ではありません。受け手が落ちている間のログは送信元のバッファ次第で失われますし、受け手が詰まると送信側に影響が波及(バックプレッシャ)する可能性もあります。「TCP にすれば絶対に欠けない」わけではない、と弁えておくことが大切です。
使い分けの指針
| UDP 514 | TCP 514 | |
|---|---|---|
| 到達性 | 保証なし(輻輳時に欠落し得る) | 再送により高い(ただし万能ではない) |
| 機器の対応 | ほぼ全機器 | 機器による |
| 送信側の負荷 | ごく軽い | コネクション維持の分だけ増える |
| 向くログ | 状態通知・一般の運用ログ | 監査証跡など欠落を減らしたいログ |
実務の指針としては、まず UDP で全機器の受信を始め、監査・セキュリティ上重要な送信元だけ TCP 対応を確認して切り替えるのが現実的です。完璧な方式を選ぶことより、受信を始めて実データで欠落の有無を観測するほうが、はるかに前進します。
syslog over TLS(tcp/6514)は必要か
UDP も TCP も、514 のままでは平文です。経路上で盗み見・改竄され得ることは、方式を問わず変わりません。RFC 5425 の syslog over TLS(既定ポート tcp/6514)は、この経路を暗号化します。
必要になるのは、たとえば次のような場面です。
- ログが信頼度の異なるセグメントをまたいで流れる(拠点間、DMZ から内部へ、など)
- ログに認証情報・個人情報などの機微な内容が含まれ得る
- 監査要件として経路暗号化が求められている
逆に、管理された社内 LAN の同一セグメント内で完結するなら、まず平文で始めて差し支えありません。機器側の TLS 対応はまちまちなので、対応する送信元から段階的に 6514 へ寄せていく形になります。
受け手側に求められること
この使い分けを成立させるには、受け手の syslog サーバが UDP 514・TCP 514(IPv4/IPv6)を同時に受けられ、TLS 6514 も必要になったときに有効化できることが条件です。Windows ネイティブの OSS Yagura(やぐら)は、UDP/TCP 514 を既定で受け、syslog over TLS は opt-in で重ねられます。既定を軽く、強化を明示的に —— 本稿の指針をそのまま実装した形です。