

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上に色々と検証環境があり、それらと区別するために名前タグの命名規則をNetAttest-tlsSyslog-<リソース名>としています。
実際に構築する場合には、自社内のAWS利用規則に従って命名規則やVPCのIPアドレスレンジなどを設定してください。
まずはAWS上にSyslogサーバ用のクラウド空間であるVirtual Private Cloud(VPC)を作成します。このVPC上にネットワークや仮想マシン(インスタンス)、ストレージを構築してきます。
項目 | 値 |
作成するリソース | VPCのみ |
名前タグ | NetAttest-tlsSyslog-vpc |
IPv4 CIDRブロック | IPv4 CIDRの手動割当 |
IPv4 CIDR | 192.168.200.0/24 |
IPv6 CIDRブロック | IPv6 CIDRブロックなし |
VPCとインターネットが通信できるようにゲートウェイを設定します。
VPCにSyslogサーバーを設置するためのサブネットを作成します。
項目 | 値 |
サブネット名 | NetAttest-tlsSylog-server-sub |
アベイラビリティーゾーン | アジアパシフィック(東京)/ ap-northeast-1a |
IPv4 VPC CIDRブロック | 192.168.200.0/24 |
IPv4サブネット CIDRブロック | 192.168.200.0/28 |
作成したサブネットとインターネット間をインターネットゲートウェイを経由して通信するルートテーブルを作成します。
項目 | 値 |
送信先 | 0.0.0.0/0 |
ターゲット | NetAttest-tlsSyslog-igw |
Syslogサーバーはインターネット上にさらすことになるので、SyslogやSSH接続の送信元IPアドレスなどを制限する必要があります。
今回は下記のようにセキュリティグループを設定して、不特定な第三者からのアクセスを防ぐように設定します。
プロトコル | ポート範囲 | ソース | 備考 |
TCP | 6514 | OneGateのグローバルIPアドレス | TLS通信のSyslog受信用 |
TCP | 22 | 社内 | 社内からSyslogサーバーにSSHでアクセス |
プロトコル | ポート範囲 | 送信先 | 備考 |
すべて | すべて | 0.0.0.0/0 | Syslogサーバーからインターネットヘはすべて通信を許可する |
※OneGateのグローバルIPアドレスについては、OneGate契約者向けFAQ No.16880「Soliton OneGateで使用しているURLとグローバルIPアドレスを教えて下さい」の「OneGateから外向き通信で使用する送信元IPアドレス」に記載されています。
項目 | 値 |
セキュリティグループ名 | NetAttest_tlsSyslog-nsg |
説明 | Allow_SyslogAndSSH |
VPC | NetAttest-tlsSyslog-vpc |
タイプ | プロトコル | ポート範囲 | ソース | 説明 |
SSH | TCP | 22 | マイIPアドレス | from_HQ |
カスタム | TCP | 6514 | OneGateのグローバルIPアドス | from_SOG1 |
カスタム | TCP | 6514 | OneGateのグローバルIPアドレス | from_SOG2 |
・・・ | ・・・ | ・・・ | ・・・ | ・・・ |
タイプ | プロトコル | ポート範囲 | 送信先 | オプション |
すべてのトラフィック | すべて | すべて | 0.0.0.0/0 |
着信したログをAmazon EFSに格納する構成にしているので、仮想LinuxサーバーからAmazon EFSへのNFS通信を許可します。
項目 | 値 |
セキュリティグループ名 | NetAttest-tlsSyslog-NFS-nsg |
説明 | Allow_NFS |
VPC | NetAttest-tlsSyslog-vpc |
タイプ | プロトコル | ポート範囲 | ソース | 説明 |
NFS | TCP | 2049 | NetAttest-tlsSyslog-nsg |
タイプ | プロトコル | ポート範囲 | 送信先 | 説明 |
すべてのトラフィック | すべて | すべて | 0.0.0.0/0 |
受信したSyslogファイルを格納するAmazon EFSでファイルシステムを作成します。
項目 | 値 |
名前 | NetAttest-tlsSyslog-efs |
Virtual Private Cloud(VPC) | NetAttest-tlsSyslog-vpc |
SyslogサーバーにSSH接続する際に使用するキーペアを作成します。
名前、キーペアのタイプ、プライベートキーファイル形式を適宜設定して「キーペアを作成」をクリックします。
項目 | 値 |
名前 | NetAttest-tlsSyslog-key |
キーペアのタイプ | RSA |
プライベートキーファイル形式 | .pem (ご利用になられるターミナルソフトウェアに合わせて選択してください) |
項目 | 値 |
名前 | NetAttest-tlsSyslog-syslog-vm |
項目 | 値 |
Amazon マシンイメージ(AMI) | Amazon Linux 2023 AMI |
アーキテクチャ | 64ビット( x86) |
項目 | 値 |
インスタンスタイプ | t2.micro |
項目 | 値 |
キーペア名 | NetAttest-tlsSyslog-key |
項目 | 値 |
VPC | NetAttest-tlsSyslog-vpc |
サブネット | NetAttest-tlsSyslog-server-sub |
パブリックIPの自動割り当て | 有効化 |
ファイアウォール | 既存のセキュリティグループを選択する |
共通のセキュリティグループ | NetAttest-tlsSyslog-nsg |
項目 | 値 |
ファイルシステム | NetAttest-tlsSyslog-efs |
マウントポイント | /mnt/efs/fs1 |
セキュリティグループを自動的に作成してアタッチ | チェックなし |
必要なユーザーデータスクリプトをアタッチして、共有ファイルシステムを自動マウント | チェック有り |
作成したインスタンスに紐づいているグローバルIPアドレスは動的なため、インスタンスを停止したり、再起動するたびにIPアドレスが変わります。IPアドレスが変わるたびにOneGateでのSyslog転送先の設定をするのも手間になりますので、Elatic IPアドレスを作成してインスタンスに紐づけて固定のグローバルIPアドレスを利用します。
VPC上に作成したAmazon Linux2023インスタンスをSyslogサーバーにします。
ここではTera Termを利用してSSHでLinuxインスタンスに接続する方法を説明します。
なおAmazon Linux2023に搭載されているSSHはrsa-sha署名での接続ができなくなりましたので、rsa-sha2-256に対応したTera Term 5をご利用ください。
項目 | 値 |
ホスト | Elascit IPアドレス |
サービス | SSH |
ポート | 22 |
SSHバージョン | SSH2 |
IPバージョン | AUTO |
下記のように設定して「OK」をクリックします。
項目 | 値 |
ユーザー名 | ec2-user |
認証方式 | RSA/DSA/ECDSA/ED25519鍵を使う |
秘密鍵 | ダウンロードしたキーペアファイル |
これ以後のLinuxの設定は、TeraTermで行います。
また必要に応じて"dnf -y update"でインストール済みパッケージのアップデート、timedatectlコマンドでタイムゾーンの変更などを実施してください。
Amazon Linux 2023よりRSYSLOGが含まれなくなりましたので、別途インストールする必要があります。
"sudo dnf -y install 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
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") # 追記
<略>
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
RSYSLOGに信頼するCAから発行したサーバー証明書を読み込ませてTLS通信できるようにします。
今回はOneGateのCAにてサーバー証明書を発行することにします。
サーバー証明書はLinux上でCSR作成("openssl genpkey"でキーペア作成して、そのキーーペアを使って"openssl req"でCSRを作成)してOneGateのCAで署名して作成する方法と、OneGateのCAでキーペアを生成して署名して作成する方法がありますが、今回は後者を利用してサーバー証明書を発行します。
名前(CN)、DNS名、IPアドレス欄にElastic IPアドレスを入力し、他のサブジェクトは適宜入力して、ダウンロードファイル形式を「PEM形式 (秘密鍵+サーバー証明書)」にして、パスフレーズを適宜入力して「発行」をクリックして、証明書を保存します。
OneGateを信頼するCAとするためにRSYSLOGに読み込ませるCA証明書をダウンロードします。
証明書ファイルをLinuxインスタンス上に下記のように保存すようにします。
[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
[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-----
[ec2-user@ip-192-168-200-9 ~]$ sudo vi /etc/rsyslog.d/tls/server.cer
-----BEGIN CERTIFICATE-----
MIIEdzCCA1+gAwIBAgIQZeAPoWmCBe0yKpPeUFg6hjANBgkqhkiG9w0BAQsFADAm
<中略>
OmDXk48bmbWqCj27stLfv9j62RMbYz2vz/LfMEFql+5YerR3cqXOUq7xrg==
-----END CERTIFICATE-----
[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-----
[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]$
[ec2-user@ip-192-168-200-9 tls]$ ls -altotal 16drwxr-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 -altotal 16drwxr-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で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通信を行うことができます。
項目 | 値 |
有効/無効 | チェック有り |
転送先ホスト | 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"}
上記までの操作では通信の暗号化を行ったログ転送を行っていますが、SIEMなどでは決められた機器からのみログを受信させるために、クライアント証明書による認証を実施してログを受信する機能を実装しているものもあります。
OneGateでもログ送信時(セッション確立時)にクライアント証明書を使ってSyslogサーバーで認証を行う設定が可能です。
ここでは上記のSyslogサーバーにてクライアント証明書認証を実施する設定、並びにOneGateにてクライアント証明書認証を実施しているSyslogサーバーにログを転送する方法を紹介いたします。
Syslogサーバーでの認証に利用するクライアント証明書は、OneGateのCAから発行します。
OneGateではOneGateに登録された利用者に対して発行しますので、登録済みの利用者で証明書を発行するか、新たに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で下記に変更します。
[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サーバーでクライアント証明書認証を行ったうえでログた転送されます。