【New Relic】Geo情報を活用したOSログイン監視の実現

記事タイトルとURLをコピーする

はじめに

こんにちは。マネージドサービス部の福田です。
今回はLinuxサーバのログイン監視と、New Relicを使ったGeo情報(位置情報)の活用方法についてご紹介します。

「Geo情報」とは「位置情報」のことです。
たとえば、「どの国・地域・都市からアクセスがあったか」
といった地理的な場所を特定する情報になります。

Linuxサーバへのログイン履歴の確認方法:セキュアログを確認する

Linuxサーバでは、誰が・いつ・どこからログインしたかを「セキュアログ」で確認できます。
セキュアログには、認証の成否やログイン試行の記録などが残るため、不正アクセスの検知や調査に役立ちます。

  • Debian/Ubuntuの場合に関連するログファイル
    • /var/log/auth.log
  • RedHat/CentOSの場合に関連するログファイル
    • /var/log/secure
## ログイン成功ログ
Jan 15 06:58:17 xxxxx sshd[5679]: Accepted publickey for ubuntu from xxxxx  port xxxxx  ssh2: RSA xxxxx 
Jan 15 06:58:17 xxxxx  sshd[5679]: pam_unix(sshd:session): session opened for user ubuntu(uid=1000) by (uid=0)
Jan 15 06:58:17 xxxxx  systemd-logind[390]: New session 14 of user xxxxx .

## ログイン失敗ログ
Jan 15 08:10:28 xxx  sshd[10518]: Invalid user xxxxx  from xxxxx  port xxxxx 

ログの構造は「日時 サーバ名 プロセス名[プロセスID]: メッセージ(アクセス元情報など)」となっています。

ログイン監視のメリット

ログイン監視を行うことで、以下のようなセキュリティ上のメリットがあります。

  • 不正アクセスの検知と追跡
    • 連続したログイン失敗や、攻撃元IPアドレスの特定ができます。
  • 認証方式の安全性チェック
    • SSH鍵認証の利用状況や、脆弱な認証方式のユーザー特定ができます。
  • 異常なユーザー活動の発見
    • いつもと違う時間や場所からのアクセスを検知できます。

ログイン監視からGeo情報活用へ:何が変わるのか?

従来のセキュアログでは、ログイン元の「IPアドレス」までは分かりますが、そのIPがどこの国や地域なのかは分かりません
たとえば、不審なアクセスがあっても、それが日本国内か海外か、どの都市からかをすぐに判断するのは難しいです。

Geo情報を組み合わせることでできること

  • IPアドレスから「どの国・地域・都市からアクセスされたか」を特定できる
  • 普段アクセスのない国や地域からの不審なログインを検知できる
  • 特定の地域から集中して攻撃されている場合も、すぐに可視化できる

つまり、「IPアドレスしか分からなかった」監視が、「どこからアクセスされたか」まで把握できるようになり、セキュリティ対策の質が大きく向上します。

New RelicによるGeo情報を活用したOSログイン監視の実装

IPアドレスとGeo情報の連携

サーバのログには「ユーザー名」や「IPアドレス」などが記録されていますが、そのままでは分析しづらいです。
そこで、parsing ruleという仕組みを使い、ログから必要な情報を自動で抜き出し、整理(構造化)します。

parsing ruleとは

parsing ruleは、「ログのどの部分がユーザー名か、どこがIPアドレスか」を決めて、自動的に項目ごとに取り出すための設定です
以前parsing ruleに関するブログも執筆しておりますのでよろしければご参照いただければと思います。

## ログの例
Invalid user testuser from 203.0.113.1 port 12345

## 以下内容が項目ごとに抽出される
- testuser → ユーザー名
- 203.0.113.1 → IPアドレス
- 12345 → ポート番号

blog.serverworks.co.jp

Geo情報を活用したparsing rule

## Geo情報を活用したOSログイン監視で使用するparsing ruleの内容
Invalid user %{DATA:username} from %{IP:source_ip:geo({"lookup":["city","region","regionName","countryCode","countryName","postalCode","latitude","longitude"]})} port %{NUMBER:port}

## parsing rule詳細
・Invalid user %{DATA:username} - ログから「Invalid user」に続くユーザー名を抽出し、usernameという属性に格納します
・from %{IP:source_ip:geo(...)} - 「from」の後に続くIPアドレスを抽出し、source_ipという属性に格納します
・:geo({"lookup":[...]}) - 抽出したIPアドレスに対してGeo情報のルックアップを実行します
・port %{NUMBER:port} - 「port」の後に続く数字を抽出し、portという属性に格納します

Geo情報の自動取得とNew Relicの仕組み

New Relicは2023年3月のアップデート以降、ログに含まれるIPv4アドレスから自動で以下のようなGeo情報を付与できるようになりました。
parsing ruleでgeoオプションを指定するだけで、外部サービスや追加設定は不要です。

  • 都市名(city)
  • 地域名(regionName)
  • 国名(countryName)
  • 国コード(countryCode)
  • 郵便番号(postalCode)
  • 緯度(latitude)
  • 経度(longitude)

これにより、「どの国・地域・都市からアクセスされたか」をログ属性としてすぐに利用できます。

docs.newrelic.com

New Relicのparsing rule反映内容

Geo情報を活用したダッシュボード

構造化されたGeo情報を使えば、「特定の国や地域からの不正アクセス」を以下のようなダッシュボードで一目で把握できるようになります。

地図上での可視化

抽出したGeo情報は、New RelicのStatus Widget Packを使用して地図上に視覚化することも可能になります。(実際に実装はしていないですがおそらく可能です)
Map Widgetについては以下ブログも参考にしていただければと思います。

blog.serverworks.co.jp

構造化ルールの仕様と制約

New Relicでログを構造化する際には、いくつかの制約があります。

  • 1つの属性に適用可能なルールは1つのみ

    • 特定のログ属性(例: message)に対して、複数のparsing ruleを同時に適用できません。複数のルールを設定した場合、最初にマッチしたルールのみが実行されます。
  • ログ形式の一貫性が必要

    • Windowsイベントログなど、言語設定(日本語/英語)によってログ形式が変わる場合、単一のparsing ruleで両方の形式に対応するのは難しいです。 というよりも日本語ログに対してparsing ruleをうまく設定できるのかが個人的に怪しいなーという所感です。

これらの制約を回避するためには、Fluentdなどを使ってログの属性を新たに追加する方法が考えられます。
例えば、ログの生データ(message)を別属性(例: custommessage)として複製し、異なるparsing ruleを適用する方法があります。

Geo情報活用したOSログイン監視で出来ること

  • 地域別アクセス分布の可視化

    • アクセス元を表示し、不審なアクセスを即座に把握
  • 地域ベースのアラート設定

    • 特定の国や地域からのアクセスに対してアラートを設定
  • 攻撃パターンの分析

    • 地域ごとの攻撃傾向や集中的な攻撃を分析

まとめ

Linuxサーバのログイン監視にGeo情報を組み合わせることで、アクセス元の地域や国まで把握できるようになりました。

ちなみに同様の仕組みはWindowsサーバのイベントログでも実現可能ですが、Windowsの場合、ログが日本語で出力されているとNew Relicのparsing ruleをうまく適用できませんでした
イベントログが英語で出力されている場合は、本記事で紹介した方法と同様に設定できるはずです。

宣伝

弊社では、お客様環境のオブザーバビリティを加速するためのNew Relicアカウント開設を含めた伴走型のNew Relic導入支援サービスをご提供しております。 もしご興味をお持ちの方は、こちらのお問合せフォームよりお問合せ頂けましたら幸いでございます。

・福田 圭(記事一覧)

・マネージドサービス部 所属
・X(Twitter):@soundsoon25

2023 New Relic Partner Trailblazer。New Relic Trailblazer of the Year 2025受賞。New Relic User Group運営。