1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AkamaiのLinode Object Storageにサーバの監査ログを保管して、もしもの時に備える

Last updated at Posted at 2024-11-11

はじめに

サーバーで何か問題が発生した際、調査の一つとして設定変更や操作履歴を確認する必要があります。また、定期的なセキュリティ監査の一環として、「いつ」「誰が」「何をしたか」を記録する環境を整えることで、さまざまなリスクに対応できるようになります。

この記事では、AkamaiのLinode Object Storageを利用して監査ログを安全かつ効率的に管理する方法を解説します。

監査ログの重要性

サーバーの監査ログを記録することは、情報セキュリティや運用の観点から非常に重要な役割を果たします。以下に、監査ログ記録の必要性とそのメリットについて解説します。

セキュリティ強化と運用効率化

監査ログはシステム上の操作履歴やイベントを記録し、不正アクセスや異常行動を検出するのに役立ちます。攻撃や不正操作が発生した場合、迅速な対応と被害の最小化が可能です。

法令遵守とコンプライアンス対応

多くの業界でアクセス管理や操作履歴の記録が義務化されています。監査ログは法的証拠としても機能し、内部・外部監査への対応をスムーズにします。

効果的なログ管理のポイント

ログは増加する一方なので、効率的なログ管理も求められます。不要なログを定期的に削除するポリシーを設けたり、ログ管理ツールを導入して分析を効率化することも有効です。


それでは Linode Object Storage にサーバーの監査ログを保管して、いつでも検索・閲覧できる環境を構築していきましょう。

システム構成の概要

以下のシステム構成で監査ログの記録・管理を行います
qiita-blog-img-audit-15.jpg

  • サーバー群
    • 任意のLinuxサーバー
      • auditd
      • rsyslog
  • Log中継・可視化サーバー
    • Ubuntu 24.04
      • Fluent Bit
      • OpenObserve
    • Linode Object Storage(OpenObserveで管理するログの保存先)

環境構築の流れ

  • Log中継・可視化サーバーの構築
    • Linode Object Storageの準備
    • Ubuntuのインスタンス作成
    • Fluent Bitのインストールと設定
    • OpenObserveのインストールと設定
  • 各サーバーの監査ログ送信設定
    • auditdとaudispのインストールと設定
    • rsyslogのインストールと設定
  • 動作確認
    • OpenObserveへのログインとログ閲覧・検索

設定手順

1. Log中継・可視化サーバーの構築

1.1 Linode Object Storageの準備

以下の記事を参考に、Object Storageを設定してください

記事内にあるCloud Access Managerの設定は不要です

今回準備が必要な項目は以下です
後ほど利用するので各項目をメモしておくとスムーズです

  • Object StorageのエンドポイントURL:https://<region>.linodeobjects.com
  • Bucket名:mybucketなど任意の名前
  • Region名:jp-osa-1
  • Object Storage の Access Key & Secret Key (Read/Write権限)
  • 監査ログを保管するディレクトリとそのPath:/logsなど任意のディレクトリ名

Linode Object StorageのエンドポイントURLは以下のような形式になっています。
https://<label(Bucket)>.<region>.linodeobjects.com
メモに残す際、「label(bucket)」部分は不要ですので削除してください。


1.2 Ubuntuインスタンスの作成

今回はUbuntu 24.04のインスタンスを作成します

新規インスタンスの作成
Akamai Cloud Computingのダッシュボードで「Create Linode」をクリックし、以下の設定を行います

  • Region: Asia (JP, Osaka (jp-osa))
  • OS(Image):Ubuntu 24.04 LTS
  • Linode Plan:ニーズに合わせたプランを選択します
    (例:SharedプランやDedicatedプランなど)
  • rootパスワード:rootパスワードを設定します

Ubuntu 24.04の作成実行
すべての設定を確認したら、画面一番下の「Create Linode」ボタンを押して、インスタンスを作成します。このプロセスには数分かかることがあります。LinodeがUbuntu 24.04を選択したリージョンにデプロイし、準備が整うまで待ちます。

完了後は速やかに以下の記事を参考にsshの設定をセキュアな状態へ変更してください


Firewallの設定
こちらの記事を参考にし、作成したUbuntuインスタンスにFirewallを適用してください

Inbound Ruleを追加し特定のIPのみインターネットからのアクセスを許可します
以下のポートは、ご自身の利用されるグローバルIPアドレスのみ許可します

  • TCP/22
  • TCP/5080

以下のポートは監査ログを送信するサーバーの送信元IPアドレスのみ許可します

  • TCP/5140

1.3 Fluent Bitのインストールと設定

ここからは、ログ、メトリック、トレースを収集・加工するオープンソース エージェントである Fluent Bit と、ログのオブザーバービリティ(Logs, Metrics, Traces) 、を一元管理・可視化するプラットフォームの OpenObserve をインストール・設定していきます。

Fluent BitとOpenObserve用のユーザーを作成しsudo権限を付与

sudo adduser hoge
sudo gpasswd -a hoge sudo

Fluent Bitをインストール
apt-getでインストールするため、Server GPG key を追加します

sudo curl https://packages.fluentbit.io/fluentbit.key | gpg --dearmor -o /usr/share/keyrings/fluentbit-keyring.gpg

Source listに APT server entryを追加します

sudo vi /etc/apt/sources.list

一番下の行に以下を追記

deb [signed-by=/usr/share/keyrings/fluentbit-keyring.gpg] https://packages.fluentbit.io/ubuntu/${CODENAME} \\${CODENAME} main

${CODENAME}は、Ubuntu 24.04の場合「noble」に置き換えて追記

リポジトリデータベースを更新し最新バージョンをインストールを実行します

sudo apt-get update
sudo apt-get install fluent-bit

v3.1.10 のインストールが完了(2024年11月5日時点)
参考:https://docs.fluentbit.io/manual/installation/linux/ubuntu

1.4 Fluent Bitを設定

Fluent Bitの設定ファイル/etc/fluent-bit/fluent-bit.confを開き、INPUTとOUTPUTを設定します

sudo vi /etc/fluent-bit/fluent-bit.conf 

デフォルト設定の以下の行を削除し、今回必要な設定を追加します

#削除するデフォルト設定
 [INPUT]
    name cpu
    tag  cpu.local

    # Read interval (sec) Default: 1
    interval_sec 1

 [OUTPUT]
     name  stdout
     match *
 
 #追加する設定
 [INPUT]                                                  #Fluent Bitへの入力設定を定義する
     Name     syslog                                      #入力形式の指定
     Parser   syslog-rfc3164                              #rfc3164形式のSyslogをパースする設定
     Path     /tmp/in_syslog                              #TCP用Unix ソケット ファイルの絶対パスを設定
     Listen   0.0.0.0                                     #待受IPアドレスの指定、0.0.0.0はany指定
     Port     5140                                        #待受ポート番号の指定
     Mode     tcp                                         #Syslogのプロトコルタイプを指定
     Tag      audit_log                                   #この入力設定にタグ名を指定
 
 [OUTPUT]                                                 #Fluent Bitからの出力設定を定義する
     Name            http                                 #出力形式の指定
     Host            127.0.0.1                            #出力先IPの指定(OpenObserveのIPアドレスを指定)
     Port            5080                                 #出力先ポートの指定(OpenObserveのポートを指定)
     URI             /api/default/audit_logs/_json        #送信先APIエンドポイントURLの指定
     Format          json                                 #送信するデータフォーマットの指定
     tls             Off                                  #httpsで通信するかの指定
     HTTP_User       hoge@hoge.hoge                       #OpenObserveのログインユーザーIDの指定
     HTTP_Passwd     hogehogehoge                         #OpenObserveのログインパスワードの指定
     Match           audit_log                            #入力設定との関連付け用にタグ名を指定

設定ファイルを保存し閉じる
参考:https://docs.fluentbit.io/manual/pipeline/outputs/openobserve


systemdでFluent Bitサービスを起動しステータスを確認

sudo systemctl start fluent-bit
sudo systemctl status fluent-bit
 ● fluent-bit.service - Fluent Bit
     Loaded: loaded (/usr/lib/systemd/system/fluent-bit.service; enabled; preset: enabled)
     Active: active (running) since Wed 2024-XX-XX XX:XX:XX UTC; 17h ago
       Docs: https://docs.fluentbit.io/manual/
   Main PID: 30303 (fluent-bit)
      Tasks: 5 (limit: 2276)
     Memory: 4.0M (peak: 4.7M)
        CPU: 7.924s
     CGroup: /system.slice/fluent-bit.service

systemed でFluent Bit サービスの自動起動を設定します

sudo systemctl enable fluent-bit

1.5 OpenObserveのインストールと設定

OpenObserveのインストール
以下から最新のOpenObserveをダウンロードし、/usr/local/binに解凍したファイルを置きます
https://github.com/openobserve/openobserve/releases

wget https://github.com/openobserve/openobserve/releases/download/v0.13.1-rc2/openobserve-v0.13.1-rc2-linux-amd64.tar.gz

ダウンロードした圧縮ファイルを /usr/local/bin/ へ解凍します
OpenObserveのバイナリファイルは以下に配置されます

  • /usr/local/bin/openobserve
sudo tar zxvf ./openobserve-v0.13.1-rc2-linux-amd64.tar.gz -C /usr/local/bin

実行権限を付与し、v0.13.1-rc2のインストール完了(2024年11月5日時点)

sudo chmod +x /usr/local/bin/openobserve

OpenObserveのsystemd用のユニットファイルを作成

sudo vi /etc/systemd/system/openobserve.service

以下の内容を記載し、保存して閉じます

[Unit]
Description=The OpenObserve server
After=syslog.target network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target

[Service]
Type=simple
LimitNOFILE=65535
EnvironmentFile=/etc/openobserve.env
ExecStart=/usr/local/bin/openobserve
ExecStop=/bin/kill -s QUIT $MAINPID
Restart=on-failure

[Install]
WantedBy=multi-user.target

systemed をリロードして OpenObserve サービスの有効化と自動起動を設定します

systemctl daemon-reload
systemctl enable openobserve

参考:https://openobserve.ai/docs/operator-guide/systemd/#create-systemd-service-file


OpenObserveの設定ファイルを作成

sudo vi /etc/openobserve.env

以下の内容を記載し、保存して閉じます

ZO_ROOT_USER_EMAIL=hoge@hoge.hoge                              #OpenObserveのログインユーザーIDを設定(任意のメールアドレスを指定
ZO_ROOT_USER_PASSWORD=hogehogehoge                             #OpenObserveのログインパスワードを設定(任意のパスワード文字列を指定
#以下はLinode Object Storageへログを保管するための設定
ZO_LOCAL_MODE_STORAGE=s3                                       #ログの保存先を指定(S3互換のため
ZO_S3_SERVER_URL=https://<region>.linodeobjects.com            #Linode Object StorageのエンドポイントURLを指定
ZO_S3_REGION_NAME=jp-osa-1                                     #Object StorageのRegionを指定(日本の場合は2024/11/07時点「jp-osa-1」のみ
ZO_S3_ACCESS_KEY=00XX00XX00XX00XX00XX                          #Linode Object StorageのACCESS KEYを指定
ZO_S3_SECRET_KEY=QQ99QQ99QQ99QQ99QQ99QQ99QQ99QQ99QQ99QQ99      #Linode Object StorageのSECRET KEYを指定      
ZO_S3_BUCKET_NAME=mybucket                                     #Linode Object Storageに作成したBucket名を指定
ZO_S3_BUCKET_PREFIX=hoge/                                      #上記Bucket内に作成したディレクトリ名を指定(この設定は必須ではありません

Linode Object StorageのエンドポイントURLは以下のような形式になっています。
https://<label(Bucket)>.<region>.linodeobjects.com
ZO_S3_SERVER_URLに指定する際、「label(bucket)」部分は不要ですので削除してください。


OpenObserveを起動しステータスを確認する

sudo systemctl start openobserve
sudo systemctl status openobserve
 ● openobserve.service - The OpenObserve server
     Loaded: loaded (/etc/systemd/system/openobserve.service; enabled; preset: enabled)
     Active: active (running) since Wed 2024-XX-XX XX:XX:XX UTC; 17h ago
   Main PID: 30330 (openobserve)
      Tasks: 23 (limit: 2276)
     Memory: 428.2M (peak: 447.5M)
        CPU: 1min 51.439s
     CGroup: /system.slice/openobserve.service

2. 各サーバーの監査ログ送信設定

2.1 auditdとaudispのインストールと設定

監査ログを記録しておきたい重要なサーバーにsshでログインして、syslog転送のための設定を行います

auditdとaudispをインストール
auditdとaudispを以下のコマンドでインストールします ※以下は、ubuntuを想定したコマンド

apt update
apt install auditd
apt-get update
apt-get install audispd-plugins

auditdの設定ファイル/etc/audit/auditd.confを開き、log_formatとdispatcherを設定します

sudo vi /etc/audit/auditd.conf

以下を変更または追記し、保存して閉じます

log_format = ENRICHED  # またはRAW
dispatcher = /sbin/audispd

audispdを通じてsyslog転送するには、/etc/audit/plugins.d/syslog.conf または /etc/audisp/plugins.d/syslog.conf ファイルを編集します

sudo vi /etc/audit/plugins.d/syslog.conf

以下のように編集することでauditログのsyslog転送準備が完了です

active = yes
direction = out
path = /sbin/audisp-syslog
type = always
args = LOG_INFO LOG_LOCAL5
format = string

rsyslogのインストールと設定
リポジトリデータベースを更新し、rsyslogをインストールを実行します

sudo apt-get update
sudo apt-get install rsyslog

rsyslogの設定ファイル /etc/rsyslog.d/50-default.conf を開き、auditログをFluent Bitへ転送するための設定をします

 sudo vi /etc/rsyslog.d/50-default.conf

以下を一番下の行に追記し、保存して閉じます

local5.*    @@<Fluent BitサーバーのIPアドレス>:5140             #@@はTCP転送、@はUDP転送です

もし、auditログをローカルディスクに保存したくない場合は以下の設定も同時に行うことで、ローカルへのログ出力を停止できます。

 #*.*;auth,authpriv.none         -/var/log/syslog                        #デフォルトのこちらの行をコメントアウト
 *.*;local5.none;auth,authpriv.none              -/var/log/syslog        #「local5.none;」を追記したこちらの行を追加

auditdおよびrsyslogサービスを再起動

sudo systemctl restart auditd
sudo systemctl restart rsyslog

3. 動作確認

3.1 OpenObserveで監査ログの閲覧と検索

OpenObserveへアクセスしログイン
http://<UbuntuサーバーのIP>:5080/ へブラウザーでアクセスします
qiita-blog-img-audit-01.jpg

/etc/openobserve.env で指定したログインIDとパスワードを入力しログインします
qiita-blog-img-audit-02.jpg


OpenObserveで監査ログの受信状況を確認
ホームの以下の赤枠のリンクをクリックし、ストリームメニューへ移動します
qiita-blog-img-audit-08.jpg

虫眼鏡マークをクリックすると、
qiita-blog-img-audit-03.jpg

ログ閲覧画面が表示されます
qiita-blog-img-audit-04.jpg

OpenObserveで監査ログを閲覧・検索
確認したいタイムレンジを選択し、クエリー実行
過去〇〇形式の指定
qiita-blog-img-audit-09.jpg

期間指定形式
qiita-blog-img-audit-11.jpg

期間指定しクエリー実行をした結果
qiita-blog-img-audit-12.jpg


検索したい文字列を入力し、クエリー実行
左上の「Query Editor」に検索したい文字列を入力し、「クエリーを実行」をクリックすることでログの検索が可能です

過去15分間のログに対する「type=SERVICE」の検索結果
qiita-blog-img-audit-05.jpg

過去2日間のログに対する「type=SERVICE」の検索結果
qiita-blog-img-audit-06.jpg

Linode Object Storageに格納した大量のログへ検索を行っても、数秒で結果を取得できました

今回のLog中継・可視化サーバーのLinode Planは「Shared 2GB」で構築しました

まとめ

サーバーの監査ログを記録することは、セキュリティ対策、法令遵守、そしてシステム運用の効率化といった多くの面で組織にメリットをもたらします。特に、セキュリティインシデントの増加が懸念される現代では、監査ログの有効活用がますます重要となっています。
SaaSのSIEMサービスやログ可視化サービスは敷居が高く、なかなか利用できないケースもあると思いますので、OSS(オープンソースソフトウェア)を上手く活用し、もしもの時に備えていきましょう。

Akamai はCDN、セキュリティ、クラウドサービスを通じ、オンラインライフの力となり守っています。本稿でご紹介したような課題やご相談があれば、お気軽にお問い合わせください

Akamai 営業担当者へのお問い合わせ

関連記事

アカマイ・テクノロジーズ合同会社のQiitaではAkamai Cloud Computing Services関連など開発者向けの記事を記載しております

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?