AWS上にTLSで受信できるSyslogサーバーを構築する

アイキャッチ
目次

Soliton OneGateにて「ログ転送機能」が2025年1月のアップデートで実装され、OneGateのログをインターネット上のSyslogサーバーにTLSを使用した暗号化通信によるログ転送することが可能になりました。

このTLS通信によるSyslog転送機能はSIEMを運用している環境にてM365をはじめとしてクラウドサービスにて何らかのインシデントが発生した際に、クラウドサービス側のログとOneGateでの認証ログと突き合わせて事象の究明や解決を行っていただくことを目的としています。

ただ「SIEMは運用していないが、とりあえずOneGateからどんなログが飛んでくるのか確認してみたい」と思いつつも、インターネット上、つまりグローバルIPを持っているSyslogサーバーを所持していない方もいらっしゃると思います。

そこでグローバルIPを持っているSyslogサーバーを保持していない方のために、AWS上でLinuxサーバーをデプロイしてrsyslogを動作させて比較的安価にTLS通信によるSyslogを受信する環境を構築する方法を2025年1月のAWSおよびOneGateを使用して紹介します。
(※今後のAWS及びOneGateの機能改善・強化でGUIや動作仕様が変更になる可能性もございます)

なお、OneGateでのログ転送機能は既存・新規・評価のお客様に対して全プランでご利用いただけますが機能を有効にする場合には申請が必要となりますので、担当営業までご相談ください。

構成

AWS上に新規でVPCを作成し、ALBなどを返さずにAmazon Linux 2023インスタンスで直接TLS通信ができるSyslogサーバーを構築し、ログはNFSマウントしたEFSに格納させます。

通信を暗号化するためのSyslogサーバーにインポートさせるサーバー証明書、ならびにログ送信元にインポートするクライアント証明書はAmazon Linux 2023上でOpenSSLを使って生成することもできますが、今回はログ転送元のOneGateのCAを利用することにします。

なおSyslogサーバーは最初はサーバー証明書を使った通信の暗号化を行う構成を構築してログの着信を確認したあとに、最終仕上げとしてクライアント証明書認証を行ってログ送信元を厳密に限定させる構成にします。

※本構成は一時的に利用する検証環境を想定しており、必要最低限の内容になっています。本番運用に使用するSyslogサーバーを構築する場合には、AWS構築ベンダーやSyslogサーバー構築ベンダーにご相談の上、セキュリティやコスト、パフォーマンスが最適になるように構築してください。

AWSの設定

AWS上に色々と検証環境があり、それらと区別するために名前タグの命名規則をNetAttest-tlsSyslog-<リソース名>としています。

実際に構築する場合には、自社内のAWS利用規則に従って命名規則やVPCのIPアドレスレンジなどを設定してください。

VPC

まずはAWS上にSyslogサーバ用のクラウド空間であるVirtual Private Cloud(VPC)を作成します。このVPC上にネットワークや仮想マシン(インスタンス)、ストレージを構築してきます。

VPCの作成

  1. VPCダッシュボードにて「仮想プライベートクラウド」→「お使いのVPC」を開き、「VPCを作成」をクリックします。
  2. 下記の様に設定して「VPCを作成」をクリックします。

    項目
    作成するリソースVPCのみ
    名前タグNetAttest-tlsSyslog-vpc
    IPv4 CIDRブロックIPv4 CIDRの手動割当
    IPv4 CIDR192.168.200.0/24
    IPv6 CIDRブロックIPv6 CIDRブロックなし
  3. VPCが作成されたら「アクション」→「VPCの設定を編集」をクリックします。

  4. 「DNSホスト名を有効化」にチェックをいれて「保存」をクリックします。

インターネットゲートウェイの作成

VPCとインターネットが通信せきるようにゲートウェイを設定します。

  1. VPCダッシュボードにて「仮想プライベートクラウド」→「インターネットゲートウェイ」を開いて「インターネットゲートウェイの作成」をクリックします。
  2. 名前タグ欄に「NetAttest-tlsSyslog-igw」を入力して「インターネットゲートウェイの作成」をクリックします。
  3. インターネットゲートウェイが作成されたら「アクション」→「VPCにアタッチ」をクリックします。
  4. 使用可能なVPC欄にカーソルを当てると、アタッチできるVPCが表示されますので、作成したVPCを選択して、「インターネットゲートウェイのアタッチ」をクリックします。

サブネットの作成

VPCにSyslogサーバーを設置するためのサブネットを作成します。

  1. VPCダッシュボードの「仮想プライベートクラウド」→「サブネット」を開き、「サブネットを作成」をクリックします。
  2. VPC ID欄にカーソルを当ててサブネットを作成したいVPCを選択します。
  3. サブネットの設定で下記の様に設定して「サブネットを作成」をクリックします。
    項目
    サブネット名NetAttest-tlsSylog-server-sub
    アベイラビリティーゾーンアジアパシフィック(東京)/ ap-northeast-1a
    IPv4 VPC CIDRブロック192.168.200.0/24
    IPv4サブネット CIDRブロック192.168.200.0/28

ルートテーブルの作成

作成したサブネットとインターネット間をインターネットゲートウェイを経由して通信するルートテーブルを作成します。

  1. VPCダッシュボードにて「仮想プライベートクラウド」→「ルートテーブル」を開き「ルートテーブルを作成」をクリックします。
  2. 名前にNetAttest-tlsSyslog-rtを入れ、VPCを作成したVPCを選択して「ルートテーブルを作成」をクリックします。
  3. ルートタブの「ルートを編集」をクリックします。
  4. 「ルートを追加」をクリック
  5. 下記のようにルートを追加して「変更を保存」をクリックします。
    項目
    送信先0.0.0.0/0
    ターゲットNetAttest-tlsSyslog-igw
  6. 「サブネットの関連付け」タブを開いて「サブネットの関連付けを編集」をクリックします。
  7. 利用可能なサブネット欄で作成したサブネットにチェックをいれて「関連付けを保存」をクリックします。

Syslog受信、SSH接続用のセキュリティグループの作成

Syslogサーバーはインターネット上にさらすことになるので、SyslogやSSH接続の送信元IPアドレスなどを制限する必要があります。

今回は下記のようにセキュリティグループを設定して、不特定な第三者からのアクセスを防ぐように設定します。

  • インバウンドルール
    プロトコルポート範囲ソース備考
    TCP6514OneGateのグローバルIPアドレスTLS通信のSyslog受信用
    TCP22社内社内からSyslogサーバーにSSHでアクセス
  • アウトバンドルール
    プロトコルポート範囲送信先備考
    すべてすべて0.0.0.0/0Syslogサーバーからインターネットヘはすべて通信を許可する

※OneGateのグローバルIPアドレスについては、OneGate契約者向けFAQ No.16880「Soliton OneGateで使用しているURLとグローバルIPアドレスを教えて下さい」の「OneGateから外向き通信で使用する送信元IPアドレス」に記載されています。

  1. VPCダッシュボードの「セキュリティ」→「セキュリティグループ」を開き「セキュリティグループを作成」をクリックします。
  2. 下記のように設定して「セキュリティグループを作成」をクリックします。
    【基本的な詳細】   
    項目
    セキュリティグループ名NetAttest_tlsSyslog-nsg
    説明Allow_SyslogAndSSH
    VPCNetAttest-tlsSyslog-vpc

    【インバウンドルール】   
    タイププロトコルポート範囲ソース説明
    SSHTCP22マイIPアドレスfrom_HQ
    カスタムTCP6514OneGateのグローバルIPアドスfrom_SOG1
    カスタムTCP6514OneGateのグローバルIPアドレスfrom_SOG2
    ・・・・・・・・・・・・・・・

    【アウトバンドルール】
    タイププロトコルポート範囲送信先オプション
    すべてのトラフィックすべてすべて0.0.0.0/0

Amazon EFS用のセキュリティグループの作成

着信したログをAmazon EFSに格納する構成にしているので、仮想LinuxサーバーからAmazon EFSへのNFS通信を許可します。

  1. VPCダッシュボードにて「セキュリティ」→「セキュリティグループ」を開いて「セキュリティグループを作成」をクリックします。
  2. 下記のように設定して「セキュリティグループを作成」をクリックします。
    【基本的な設定】   
    項目
    セキュリティグループ名NetAttest-tlsSyslog-NFS-nsg
    説明Allow_NFS
    VPCNetAttest-tlsSyslog-vpc

    【インバウンドルール】   
    タイププロトコルポート範囲ソース説明
    NFSTCP2049NetAttest-tlsSyslog-nsg

    【アウトバンドルール】
    タイププロトコルポート範囲送信先説明
    すべてのトラフィックすべてすべて0.0.0.0/0

ログの格納先を作成する

受信したSyslogファイルを格納するAmazon EFSでファイルシステムを作成します。

  1. Elastic File Systemを開き「ファイルシステム」の「ファイルシステムの作成」をクリックします。
  2. 下記のように設定して「作成」をクリックします。
    項目
    名前NetAttest-tlsSyslog-efs
    Virtual Private Cloud(VPC)NetAttest-tlsSyslog-vpc
  3. 作成されたEFSを選択して「ネットワーク」タブを開き、「管理」をクリックします。
  4. マウントターゲットのセキュリティグループをNFSマウント用に作成したNetAttest-tlsSyslog-NFS-nsgにして「保存」をクリックします。

仮想Linuxサーバーを構築する

キーペアの作成

SyslogサーバーにSSH接続する際に使用するキーペアを作成します。

  1. EC2ダッシュボードの「ネットワーク&セキュリティ」→「キーペア」を開き「キーペアを作成」をクリックします。
  2. 名前、キーペアのタイプ、プライベートキーファイル形式を適宜設定して「キーペアを作成」をクリックします。

  3. キーファイルがダウンロードされますので、保存します。

    項目
    名前NetAttest-tlsSyslog-key
    キーペアのタイプRSA
    プライベートキーファイル形式.pem
    (ご利用になられるターミナルソフトウェアに合わせて選択してください)

Syslogサーバー用のLinuxインスタンスを作成する

  1. EC2ダッシュボードの「インスタンス」→「インスタンス」を開き、「インスタンスを起動」をクリックします。
  2. 下記のように設定します。
    1. 名前とタグ
      項目
      名前NetAttest-tlsSyslog-syslog-vm
    2. アプリケーションおよびOSイメージ(Amazonマシンイメージ)はクイックスタートタブにて下記のように設定します。
      項目
      Amazon マシンイメージ(AMI)Amazon Linux 2023 AMI
      アーキテクチャ64ビット( x86)
    3. インスタンスタイプ
      項目
      インスタンスタイプt2.micro
    4. キーペアは作成したキーペアを指定

      項目
      キーペア名NetAttest-tlsSyslog-key
    5. ネットワーク設定は「編集」をクリックして下記のように設定します。     
      項目
      VPCNetAttest-tlsSyslog-vpc
      サブネットNetAttest-tlsSyslog-server-sub
      パブリックIPの自動割り当て有効化
      ファイアウォール既存のセキュリティグループを選択する
      共通のセキュリティグループNetAttest-tlsSyslog-nsg

    6. ストレージはファイルシステム欄の「詳細を表示」クリックして「EFS」にチェックを付けて、「共有ファイルシステムを追加」をクリックして、下記のように設定します。     
      項目
      ファイルシステムNetAttest-tlsSyslog-efs
      マウントポイント/mnt/efs/fs1
      セキュリティグループを自動的に作成してアタッチチェックなし
      必要なユーザーデータスクリプトをアタッチして、共有ファイルシステムを自動マウントチェック有り

  3. 「インスタンスを起動」をクリックします。
  4. 「成功」と表示されたら「すべてのインスタンスを表示」をクリックします。

  5. インスタンスページで作成したインスタンス(NetAttest-tlsSyslog-syslog-vm)をクリックして、インスタンス状態が「実行中」になっており、ステータスチェックが「2/2のチェックに合格しました」なるまで待ちます。

Elasitc IPアドレス

作成したインスタンスに紐づいているグローバルIPアドレスは動的なため、インスタンスを停止したり、再起動するたびにIPアドレスが変わります。IPアドレスが変わるたびにOneGateでのSyslog転送先の設定をするのも手間になりますので、Elatic IPアドレスを作成してインスタンスに紐づけて固定のグローバルIPアドレスを利用します。

  1. EC2ダッシュボードの「ネットワーク & セキュリティ」→「Elastic IP」を開き「Elastic IPアドレスを割り振る」をクリックします。
  2. 「AmazonのIPv4アドレスプール」を選択して、必要に応じてタグを設定して「割り振る」をクリックします。
  3. 作成したElastic IPアドレスにチェックをいれて、「アクション」→「Elastic IPアドレスを関連付ける」をクリックします。
  4. インスタンスで作成したNetattest-tlsSyslog-syslog-vmを選択して「関連付ける」をクリックします。
  5. EC2ダッシュボードにてNetAttest-tlsSyslg-syslog-vmを開くと、「パブリックIPv4アドレス」が関連付けたElastic IPアドレスになっています。

TLS通信でログを受信できるSYSLOGサーバーの構築

VPC上に作成したAmazon Linux2023インスタンスをSyslogサーバーにします。

SSHでLinuxインスタンスに接続する

ここではTera Termを利用してSSHでLinuxインスタンスに接続する方法を説明します。

なおAmazon Linux2023に搭載されているSSHはrsa-sha署名での接続ができなくなりましたので、rsa-sha2-256に対応したTera Term 5をご利用ください。

  1. Tera Termを起動して、下記のように設定して「OK」をクリックします。 項目 値 ホスト Elastic IPアドレス サービス SSH TCPポート 22 SSHバージョン SSH2 IPバージョン Auto
    • 初めて接続する場合、接続先が正しいサーバーかどうかの検証に失敗しますが、「このホストknown hostsリストに追加する」にチェックを入れて「続行」をクリックします。

これ以後のLinuxの設定は、TeraTermで行います。

また必要に応じて"dnf -y update"でインストール済みパッケージのアップデート、timedatectlコマンドでタイムゾーンの変更などを実施してください。

RSYSLOGのインストール

Amazon Linux 2023よりRSYSLOGが含まれなくなりましたので、別途インストールする必要があります。
"sudo dnf  -y instal l rsyslog"を実行することでRSYSLOGがインストールされます。

[ec2-user@ip-192-168-200-9 ~]$ sudo dnf -y install rsyslog
<中略>
Installed:
  libestr-0.1.11-1.amzn2023.0.2.x86_64
  libfastjson-0.99.9-1.amzn2023.0.3.x86_64
  rsyslog-8.2204.0-3.amzn2023.0.4.x86_64
  rsyslog-logrotate-8.2204.0-3.amzn2023.0.4.x86_64


Complete!
[ec2-user@ip-192-168-200-9 ~]$

インストールが完了したら、systemctlコマンドでrsyslogを起動、並びにOSの再起動後に自動で起動するようにenableを実行します。

[ec2-user@ip-192-168-200-9 ~]$ sudo systemctl start rsyslog
[ec2-user@ip-192-168-200-9 ~]$ sudo systemctl enable rsyslog

RFC5424フォーマットでログを記録するようにする

RSYSLOGのデフォルトではログのタイムスタンプがRFC 3164  BSD Syslog形式になっているのでので、これを現行のRFC5424に合わせたフォーマットで記録するようにします。

設定は/etc/rsyslog.confファイルのMODULEセクションのUse default timestamp formatの項目を変更します。

 [ec2-user@ip-192-168-200-9 ~]$ sudo vi /etc/rsyslog.conf
<中略>
#### MODULES ####

# Use default timestamp format
# module(load="builtin:omfile" Template="RSYSLOG_TraditionalFileFormat") # この行コメントアウトする
module(load="builtin:omfile" Template="RSYSLOG_FileFormat") # 追記

<略>

ファシリティLocal0のログをNFSマウントしたEFSに書き込むようにする

OneGateから送られて来るログのファシリティはLocal0ですので、Local0のログをEFSマウントしたディスクに書き込むようにします。
まずはdfコマンドでEFSがLinuxインスタンス作成時に指定した/mnt/efs/fs1にマウントできているかを確認します。

 [ec2-user@ip-192-168-200-9 ~]$ df
Filesystem            1K-blocks    Used        Available Use% Mounted on
devtmpfs                   4096       0             4096   0% /dev
tmpfs                    486128       0           486128   0% /dev/shm
tmpfs                    194452     584           193868   1% /run
/dev/xvda1              8310764 1650476          6660288  20% /
tmpfs                    486132       0           486132   0% 
/tmp/dev/xvda128              10202    1310             8892  13% /boot/efi
127.0.0.1:/    9007199254739968       0 9007199254739968   0% /mnt/efs/fs1
tmpfs                     97224       0            97224   0% /run/user/1000

/mnt/efs/fs1がマウントできているので、下記ファイルを作成してLocal0のログがEFSに保存されるようにします。

 [ec2-user@ip-192-168-200-9 ~]$ sudo vi /etc/rsyslog.d/local0.conf

local0.* -/mnt/efs/fs1/local0.log

TLS通信でSyslogを受信する設定を行う

RSYSLOGに信頼するCAから発行したサーバー証明書を読み込ませてTLS通信できるようにします。

今回はOneGateのCAにてサーバー証明書を発行することにします。

サーバー証明書の発行

サーバー証明書はLinux上でCSR作成("openssl genpkey"でキーペア作成して、そのキーーペアを使って"openssl req"でCSRを作成)してOneGateのCAで署名して作成する方法と、OneGateのCAでキーペアを生成して署名して作成する方法がありますが、今回は後者を利用してサーバー証明書を発行します。

  1. OneGateの管理ページにて「証明書管理」→「証明書発行」を開きます。
  2. サーバー証明書 発行欄の「PCKS#12ファイル または 秘密鍵+証明書 PEM形式のサーバー証明書を発行」をクリックします。
  3. 名前(CN)、DNS名、IPアドレス欄にElastic IPアドレスを入力し、他のサブジェクトは適宜入力して、ダウンロードファイル形式を「PEM形式 (秘密鍵+サーバー証明書)」にして、パスフレーズを適宜入力して「発行」をクリックして、証明書を保存します。

  4. 保存した証明書ファイルをメモ帳で開いておきます。

CA証明書のダウンロード

OneGateを信頼するCAとするためにRSYSLOGに読み込ませるCA証明書をダウンロードします。

  1. OneGateの管理ページにて「証明書管理」→「CA情報」をクリックします。
  2. 画面下部のCA証明書ファイルのダウンロードの「PEM」形式をクリックして、CA証明書ファイルを保存します。
  3. ダウンロードした証明書ファイルをメモ帳で開いておきます。

証明書ファイルの配置

証明書ファイルをLinuxインスタンス上に下記のように保存すようにします。

  • CA証明書:/etc/rsyslog.d/tls/ca.cer
  • サーバー証明書:/etc/rsyslog.d/tls/server.cer
  • 秘密鍵:/etc/rsyslog.d/tls/server.key
  1. mkdirコマンドで/etc/rsyslog.d/tlsフォルダを作成します。
    [ec2-user@ip-192-168-200-9 ~]$ sudo mkdir /etc/rsyslog.d/tls
    [ec2-user@ip-192-168-200-9 ~]$ ls /etc/rsyslog.d/
    21-cloudinit.conf  local0.conf  tls
  2. /etc/rsyslog.d/tls/ca.cerファイルを作成して、メモ帳で開いておいたCA証明書の中身をコピー&ペーストして保存します。
    [ec2-user@ip-192-168-200-9 ~]$ sudo vi /etc/rsyslog.d/tls/ca.cer
    
    -----BEGIN CERTIFICATE-----
    MIIECTCCAvGgAwIBAgIQGjppmjv6G8+wwrEX+X9pCzANBgkqhkiG9w0BAQsFADAm
    <中略>
    omMwgUpAq+MhSVZ/d3ge3fHo1WTEIJThGJ5RAfQ=
    -----END CERTIFICATE-----
  3. /etc/rsyslog.d/tls/server.cerファイルを作成して、メモ帳で開いておいたサーバー証明書のうち-----BEGIN CERTIFICATE-----から-----END CERTIFICATE-----をコピー&ペーストします。[ec2-user@ip-192-168-200-9 ~]$ sudo vi /etc/rsyslog.d/tls/server.cer

     -----BEGIN CERTIFICATE-----
    MIIEdzCCA1+gAwIBAgIQZeAPoWmCBe0yKpPeUFg6hjANBgkqhkiG9w0BAQsFADAm
    <中略>
    OmDXk48bmbWqCj27stLfv9j62RMbYz2vz/LfMEFql+5YerR3cqXOUq7xrg==
    -----END CERTIFICATE-----
  4. 同じ要領で秘密鍵ファイルを作成してしまうとrsyslogが起動するたびに秘密鍵を読み込むためのパスフレーズが必要になってしまうので、一旦/etc/rsyslog.d/tls/keyファイルを作成して、メモ帳で開いていおいたサーバー証明書のうち、-----BEGIN ENCRYPTED PRIVATE KEY-----から-----END ENCRYPTED PRIVATE KEY-----をコピー&ペーストします。
    [ec2-user@ip-192-168-200-9 ~]$ sudo vi /etc/rsyslog.d/tls/key

    -----BEGIN ENCRYPTED PRIVATE KEY-----
    MIIFGjBMBgkqhkiG9w0BBQ0wPzAnBgkqhkiG9w0BBQwwGgQUoWuZ3rbdKJ6P4jxX
    <中略>
    uohfRuqRkfAN8/LBHag=
    -----END ENCRYPTED PRIVATE KEY-----
  5. opensslコマンドを使って/etc/rsyslog.d/tls/keyファイルからパスフレーズなしの秘密鍵ファイル/etc/rsyslog.d/tls/server.keyファイルを作成します。途中でパスフレーズが求められるので、OneGateでサーバー証明書を発行する際に入力したパスフレーズを入力します。
    [ec2-user@ip-192-168-200-9 ~]$ cd /etc/rsyslog.d/tls/
    [ec2-user@ip-192-168-200-9 tls]$ sudo openssl rsa -in key -out server.key
    Enter pass phrase for key:
    writing RSA key
    [ec2-user@ip-192-168-200-9 tls]$ 
  6. chmodコマンドを利用して秘密鍵ファイルをrootのみ読み込み可にします。
    [ec2-user@ip-192-168-200-9 tls]$ ls -al
    total 16
    drwxr-xr-x. 2 root root   67 Jan 15 05:48 .
    drwxr-xr-x. 3 root root   61 Jan 15 05:32 ..
    -rw-r--r--. 1 root root 1461 Jan 15 05:35 ca.cer
    -rw-r--r--. 1 root root 1850 Jan 15 05:46 key
    -rw-r--r--. 1 root root 1610 Jan 15 05:38 server.cer
    -rw-------. 1 root root 1704 Jan 15 05:48 server.key
    [ec2-user@ip-192-168-200-9 tls]$ sudo chmod 400 server.key
    [ec2-user@ip-192-168-200-9 tls]$ ls -al
    total 16
    drwxr-xr-x. 2 root root   67 Jan 15 05:48 .
    drwxr-xr-x. 3 root root   61 Jan 15 05:32 ..
    -rw-r--r--. 1 root root 1461 Jan 15 05:35 ca.cer
    -rw-r--r--. 1 root root 1850 Jan 15 05:46 key
    -rw-r--r--. 1 root root 1610 Jan 15 05:38 server.cer
    -r--------. 1 root root 1704 Jan 15 05:48 server.key 

rsyslog-opensslのインストールと設定

RSYSLOGでTLS通信するためのrsyslog-opensslをインストールします。

[ec2-user@ip-192-168-200-9 ~]$ sudo dnf -y install rsyslog-openssl

<中略> 
Installed:
  rsyslog-openssl-8.2204.0-3.amzn2023.0.4.x86_64

Complete!
[ec2-user@ip-192-168-200-9 ~]$

このモジュールを使ってRSYSLOGでTLS通信するための設定ファイル/etc/rsyslog.d/80-Syslogtls.confを作成します。

 [ec2-user@ip-192-168-200-9 ~]$ sudo vi /etc/rsyslog.d/80-Syslogtls.conf

module(
 load="imtcp"
 StreamDriver.Name="ossl"
 StreamDriver.Mode="1"
 StreamDriver.Authmode="anon"
)

input(type="imtcp" port="6514")

global(
 DefaultNetstreamDriver="ossl"
 DefaultNetStreamDriverCAFile="/etc/rsyslog.d/tls/ca.cer"
 DefaultNetstreamDriverCertFile="/etc/rsyslog.d/tls/server.cer"
 DefaultNetStreamDriverKeyFile="/etc/rsyslog.d/tls/server.key"
)

rsyslogを再起動して設定に間違いが無いかを確認します。

[ec2-user@ip-192-168-200-9 ~]$ sudo systemctl restart rsyslog
[ec2-user@ip-192-168-200-9 ~]$ sudo systemctl status rsyslog
● rsyslog.service - System Logging Service
     Loaded: loaded (/usr/lib/systemd/system/rsyslog.service; enabled; preset: enabled)
     Active: active (running) since Wed 2025-01-15 06:35:17 UTC; 1s ago
       Docs: man:rsyslogd(8)
https://www.rsyslog.com/doc/
   Main PID: 147680 (rsyslogd)
      Tasks: 8 (limit: 1111)
     Memory: 2.1M
        CPU: 9ms
     CGroup: /system.slice/rsyslog.service
             mq147680 /usr/sbin/rsyslogd -n


Jan 15 06:35:17 ip-192-168-200-9.ap-northeast-1.compute.internal systemd[1]: Starting rsyslog.service - System Logging Service...
Jan 15 06:35:17 ip-192-168-200-9.ap-northeast-1.compute.internal systemd[1]: Started rsyslog.service - System Logging Service.
Jan 15 06:35:17 ip-192-168-200-9.ap-northeast-1.compute.internal rsyslogd[147680]: [origin software="rsyslogd" swVersion="8.2204.0-3.amzn2023.0.4" x-pid="147680">
Jan 15 06:35:17 ip-192-168-200-9.ap-northeast-1.compute.internal rsyslogd[147680]: imjournal: journal files changed, reloading...  [v8.2204.0-3.amzn2023.0.4 try

この設定により、SyslogサーバーはOneGateを信頼するCAとして、OneGateから発行したサーバー証明書を使ったTLS通信を行うことができます。

OneGateでTLS通信でのログ転送

Soliton OneGateの設定

  1. OneGateの管理Webにて「システム設定」→「ログ転送設定」をクリックします。(※「ログ転送設定」メニューはサービス利用申請書にてお申し込みいただいたテナントのみ表示されます)
  2. 下記のように設定して保存をクリックします。  
    項目
    有効/無効チェック有り
    転送先ホストLinuxインスタンスのElastic IPアドレス
    転送先ポート6514
    転送先サーバーのCA証明書OneGateの管理WebよりダウンロードしたCA証明書をアップロードしてください
    転送するログ下記にチェックを入れます。

    ・管理者ログイン
    ・利用者ログイン
    ・SSOアクセスログ
    ・証明書発行ログ
    ・同期実行ログ

ログの確認

OneGateで管理ページにログインや、SSO実行などが行われますとログが転送されます。転送されたログは/mnt/efs/fs1/local0.logに格納されますので、tailコマンドなどログの中身を確認することができます。

[ec2-user@ip-192-168-200-9 ~]$ sudo tail /mnt/efs/fs1/local0.log
2025-01-15T07:25:36+00:00 OneGate manager {"log_type":"login_manager","log_level":"INFO","tenantcode":"xxxx","message":"Successfully logged in.","params":{"code":"IM-605-I-001000","ip_address":"xxx.xxx.xxx.xxxx","user_agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36","username":"xxxxx"},"timestamp":"2025-01-15T07:25:36.523+00:00"}

相互認証を行うTLS通信でのログ転送

上記までの操作では通信の暗号化を行ったログ転送を行っていますが、SIEMなどでは決められた機器からのみログを受信させるために、クライアント証明書による認証を実施してログを受信する機能を実装しているものもあります。

OneGateでもログ送信時(セッション確立時)にクライアント証明書を使ってSyslogサーバーで認証を行う設定が可能です。

ここでは上記のSyslogサーバーにてクライアント証明書認証を実施する設定、並びにOneGateにてクライアント証明書認証を実施しているSyslogサーバーにログを転送する方法を紹介いたします。

Syslogサーバーでの認証に利用するクライアント証明書は、OneGateのCAから発行します。

クライアント証明書の発行

OneGateではOneGateに登録された利用者に対して発行しますので、登録済みの利用者で証明書を発行するか、新たにSyslogサーバーの認証用のユーザーを作成してそのユーザーに対して証明書を発行します。今回は後者の手順を紹介します。

利用者の登録

  1. OneGateの管理Webページにて「利用者管理」→「利用者一覧」を開き、「登録」をクリックします。
  2. ログイン名、パスワードを入力して保存をクリックします。
  3. 「同期スケジュール設定」→「同期スケジュール設定」をクリックします。
  4. 差分同期スケジュールの「即時同期」をクリックします。
  5. 「はい」をクリックします。
  6. 「証明書管理」→「証明書発行」をクリックします。

  7. クライアント証明書(利用者)発行の「PKCS#12ファイルのクライアント証明書を発行」をクリックします。

  8. 名前(CN)欄を作成したユーザーにし、その他の項目は適宜入力して「発行」をクリックして、証明書ファイルをダウンロードしておきます。

Syslogサーバーでクライアント証明書認証を行う設定

rsyslogでTLS通信するための設定ファイル/etc/rsyslog.d/80-Syslogtls.confをクライアント認証を必須とする設定に変更します。

既存の設定をバックアップしておきます。

 [ec2-user@ip-192-168-200-9 ~]$ sudo cp /etc/rsyslog.d/80-Syslogtls.conf /etc/rsyslog.d/80-Syslogtls.conf.org

/etc/rsyslog.d/80-Syslogtls.confを編集して証明書認証を行うようにします。変更箇所はmoduleで下記に変更します。

  • StreamDriver-Authmodeをanonからx509/name
  • PermittedPeerを追記して、クライアント証明書のCN値を入れる
 [ec2-user@ip-192-168-200-9 ~]$ sudo vi /etc/rsyslog.d/80-Syslogtls.conf

module(
 load="imtcp"
 StreamDriver.Name="ossl"
 StreamDriver.Mode="1"
 StreamDriver.Authmode="x509/name" # anonからx509/nameに変更
 PermittedPeer=["aws-syslog"] # 追記 値はクライアント証明書のCN
)

input(type="imtcp" port="6514")

global(
 DefaultNetstreamDriver="ossl"
 DefaultNetStreamDriverCAFile="/etc/rsyslog.d/tls/ca.cer"
 DefaultNetstreamDriverCertFile="/etc/rsyslog.d/tls/server.cer"
 DefaultNetStreamDriverKeyFile="/etc/rsyslog.d/tls/server.key"
)

rsyslogを再起動します。

[ec2-user@ip-192-168-200-9 ~]$ sudo systemctl restart rsyslog
[ec2-user@ip-192-168-200-9 ~]$ sudo systemctl status rsyslog
● rsyslog.service - System Logging Service
     Loaded: loaded (/usr/lib/systemd/system/rsyslog.service; enabled; preset: enabled)
     Active: active (running) since Thu 2025-01-16 04:11:53 UTC; 1s ago
       Docs: man:rsyslogd(8)
https://www.rsyslog.com/doc/
   Main PID: 266171 (rsyslogd)
      Tasks: 8 (limit: 1111)
     Memory: 2.1M
        CPU: 10ms
     CGroup: /system.slice/rsyslog.service
             mq266171 /usr/sbin/rsyslogd -n


Jan 16 04:11:53 ip-192-168-200-9.ap-northeast-1.compute.internal systemd[1]: Starting rsyslog.service - System Logging Service...
Jan 16 04:11:53 ip-192-168-200-9.ap-northeast-1.compute.internal systemd[1]: Started rsyslog.service - System Logging Service.
Jan 16 04:11:53 ip-192-168-200-9.ap-northeast-1.compute.internal rsyslogd[266171]: [origin software="rsyslogd" swVersion="8.2204.0-3.amzn2023.0.4" x-pid="266171" x-info="https://www.rsyslog.com"] start
Jan 16 04:11:53 ip-192-168-200-9.ap-northeast-1.compute.internal rsyslogd[266171]: imjournal: journal files changed, reloading...  [v8.2204.0-3.amzn2023.0.4 try https://www.rsyslog.com/e/0 ]

OneGateのログ転送設定を変更してSyslogサーバーでの証明書認証を行うようにする

  1. OneGate管理Webページで「システム設定」→「ログ転送設定」を開きます。
  2. サーバー接続時のクライアント認証欄の「有効/無効」にチェックをいれて、クライアント証明書欄で発行済のクライアント証明書を選択し、証明書のパスフレーズ欄にクライアント証明書発行時に設定したパスフレーズをいれて「保存」をクリックします。

この状態でOneGateにログインするなどのイベントが発生すれば、Syslogサーバーでクライアント証明書認証を行ったうえでログた転送されます。

記事を書いた人

ソリトンシステムズ・テクニカルチーム