【入門編】 ノードレベルのログ収集とSIEMへの転送(Fluentd/Vector) – インフラ・ネットワーク & クラウドセキュリティ防御ガイド

こんにちは!インフラやセキュリティの世界へようこそ。
初めてサーバーを触ったり、セキュリティの担当になったりすると、「ログ」や「SIEM(シエム)」といった聞き慣れない言葉の壁にぶつかって、ちょっとドキドキしちゃいますよね。

でも、安心してください!今回は、私たちが管理するサーバー(Linuxなど)から、泥棒の足跡を見逃さずにキャッチして、安全な場所に集めるための仕組み――「ノードレベルのログ収集とSIEMへの転送」について、身近な防犯に例えながら、一歩ずつ優しく紐解いていきたいと思います。

まるで自分の家を守る防犯カメラのシステムを作るような感覚で、一緒に楽しく学んでいきましょう!

—

1. なぜサーバーの「ログ」と「転送」が大切なの?(防犯カメラの例え)

皆さんが一戸建てやマンションに住んでいるとき、玄関の鍵をしっかり閉めるのは当たり前ですよね。これがサーバーの「要塞化(ハーデニング)」です。

しかし、どれだけ頑丈な鍵をつけても、プロの空き巣が窓を破って侵入してくるリスクをゼロにすることはできません。もし侵入されたとき、一番困るのは「いつ、どこから入って、家の中の何を荒らされたのか分からないこと」です。

ここで登場するのが、家のあちこちに仕掛けられた「防犯カメラ」や「センサーライト」です。サーバーの世界では、これらが「ログ(操作記録)」に当たります。

  • 誰がいつログインしたのか?
  • どのファイルが書き換えられたのか?
  • おかしなコマンドが実行されていないか?

これらを記録するのがログなのですが、実はこれだけではまだ不十分です。もし泥棒が家に忍び込んで、リビングの防犯カメラの本体ごと盗んでいってしまったら……?記録はすべて消えてしまいますよね。

だからこそ、カメラが捉えた映像を、その場に置いておくのではなく、「鍵のかかった安全な警察の倉庫(=SIEM)」にリアルタイムでビュンと送り続ける仕組みが必要になります。これが、今回学ぶ「ログ収集(FluentdやVector)とSIEMへの転送」の正体です。

—

2. 現場の主役:ログを運ぶお巡りさん(Fluentd / Vector)

サーバーの中には、たくさんのアプリケーションやOSの機能が動いていて、それぞれが勝手に「こんなことがありました!」とメモ用紙(ログファイル)に書き込んでいます。

この散らばったメモ用紙を回収して、SIEMという遠くの分析センターまで届けてくれるのが、Fluentd(フルーエントディー)やVector(ベクター)といった「ログ収集エージェント」です。いわば、街中をパトロールして情報を集めて回る、優秀なお巡りさんたちだと思ってください。

最近の現場では、Rust言語で作られていて「とにかく動作が爆速で、メモリの消費も少ない」ことで大人気の Vector を使う機会が増えています。今回は、この Vector を使って、サーバーのログを安全に集める設定を一緒に見ていきましょう。

—

3. 実践!Vectorでログを集めて転送してみよう

それでは、実際にサーバー(ノード)の上で、Vectorをどのように動かすのか、設定ファイルの書き方を見ていきます。

難しそうに見えるかもしれませんが、「どこからログを取って(Source)、どう加工して(Transform)、どこに送るか(Sink)」という3つのステップが決まっているだけなので、パズルを組み立てるように進めれば大丈夫ですよ!

設定ファイルのサンプル(/etc/vector/vector.toml)

以下の設定は、「サーバーで起きた重要なシステムログ(auth.logなど)をキャッチして、安全に暗号化しながらSIEMへ送り届ける」ためのものです。

# ==========================================
# 1. どこからログを集めるか? (Source)
# ==========================================
[sources.in_system_logs]
type = "file"
# Linuxの認証ログ(誰がログインしようとしたか等)の場所を指定します
include = ["/var/log/auth.log"]
read_from = "beginning"

# ==========================================
# 2. ログに目印をつける (Transform)
# ==========================================
[transforms.add_host_metadata]
type = "remap"
inputs = ["in_system_logs"]
# どのサーバーから送られてきたログか分かるように、ホスト名という名札をつけます
source = '''
.host_name = "web-server-01"
.environment = "production"
'''

# ==========================================
# 3. どこへ送るか? (Sink / SIEMへの転送)
# ==========================================
[sinks.send_to_siem]
type = "http"
inputs = ["add_host_metadata"]
# 送信先のSIEMやログ分析基盤のエンドポイントURLを指定します
uri = "https://siem.example.com/api/v1/logs"
encoding.codec = "json"

# 通信を安全(暗号化)にするための設定(HTTPSの認証など)
[sinks.send_to_siem.auth]
strategy = "bearer"
token = "your-super-secret-api-token-here"

設定のポイント

  • sources: 「どこを見るべきか」を指定しています。今回はログイン履歴が残る /var/log/auth.log を見張らせています。
  • transforms: 届いたログに「このログは本番環境の web-server-01 から来たよ」という付箋(メタデータ)を貼っています。何台もサーバーがある現場では、これが後からめちゃくちゃ役に立ちます。
  • sinks: 集めた綺麗に整理されたログを、社内のSIEMサーバーへ https 通信でパッと飛ばしています。

このように、ログ収集ツールを正しく配置することで、サーバーが攻撃を受けた瞬間を見逃さず、手元に証拠を残さない状態を防ぐことができるのです。

—

4. SIEMで何を検知するの?(相関分析の魔法)

ログを無事にSIEM(SplunkやElasticsearch、Microsoft Sentinelなど)に集めたら、次は「分析」のフェーズです。

ただログが溜まっているだけでは、人間が目で全部チェックするのは不可能です。そこで、SIEMに次のような「検知ルール(アラート)」を設定しておきます。

1. ブルートフォース(総当たり)攻撃の検知

  • *ルール例:* 「同じIPアドレスから、5分間に10回以上パスワードを間違えてログインに失敗した場合、管理者にSlackでアラートを飛ばす」

2. 不審な管理者昇格の検知

  • *ルール例:* 「普段は一般権限で動いているユーザーが、突然 sudo コマンドを使って特権管理者になった瞬間をキャッチする」

こうしたルールを仕込んでおくことで、深夜にサイバー攻撃を受けても、AIやシステムが自動で異変に気づき、私たちエンジニアのスマホに「大変です!不正アクセスかもしれません!」と教えてくれるようになります。

—

最後に:一歩ずつ、確実にセキュリティを強めよう

今回は、ノードレベルのログ収集とSIEMへの転送について、防衛の仕組みを交えて解説しましたがいかがでしたでしょうか?

最初は「Fluentd?Vector?なんだか難しそう……」と感じたかもしれませんが、要するに「サーバーの防犯カメラの映像を、安全な警察署(SIEM)にリアルタイムで転送する仕組み」を作っているだけです。

セキュリティ対策に「完璧」はありません。しかし、こうしたログの監視基盤をしっかりと作っておくことで、「万が一侵入されても、すぐに気づいて最小限の被害に食い止められる状態」を作ることができます。

焦る必要はありません。まずは手元の開発環境やテストサーバーで、小さなログを収集するところから、一歩ずつ試してみてくださいね。あなたのインフラストラクチャが、より安全で頑丈なものになるよう応援しています!

コメント

タイトルとURLをコピーしました