はじめに
前回、解説第2回の記事では、管理画面に誰が入れるかを絞る変更を紹介しました。
第3回の今回は、通信まわりの変更を取り上げます。管理画面の入口に続いて、今回はログを受け取る入口の話です。
Ver.2系では、通信の受け口を「許可したものだけを開く」方式にしています。出荷時に開いている受け口は限られていて、syslogの受信も、使う方式を利用者が選んで開けます。
今回は、この方式で何が変わるのかを整理したうえで、検証機に実際にログを送って確かめてみました。
※本記事で紹介する画面・仕様は開発中のものです。リリースまでに変更になる場合があります。
通信周りの変更点
通信まわりの主な変更を、「何を防ぐか」と「使う側に何が起きるか」で整理しました。
| 変更 | 何を防ぐか | 使う側に起きること |
|---|---|---|
| Web UIは出荷時HTTPSのみ | 管理画面の通信の盗聴・改ざん | 出荷時の証明書は自己署名のため、初回アクセス時にブラウザの警告が出る。HTTPは設定で有効にできる |
| 許可したものだけを開く方式 | 使わない受け口が、攻撃の入口になること | 使うサービスを「システム」→「フィルタ開放」で開放する。受け付けるインターフェースも指定できる |
| syslog受信を4種類に分けて設定 | 使わない受信方式まで開いてしまうこと | UDP、TCP(BSD形式)、TCP(IETF形式)、TLSを、それぞれ開閉する |
| syslog over TLSでの受信 | ログの送受信経路での盗聴・改ざん | 使う場合は、送信元側でTLSの設定が必要 |
| SNMP v3対応 | 監視通信の盗聴・なりすまし | v1/v2cに加えて、認証と暗号化を備えたv3を選べる |
| 保守用アカウントのメニュー専用化 | 任意のコマンド実行による誤操作や悪用 | ebsupportでSSHログインすると、あらかじめ用意された項目を選ぶメニューだけが使える |
| 証明書管理の見直し | 証明書の期限切れで、管理画面に入れなくなること | 証明書と秘密鍵を項目別に入力する。中間証明書に対応し、期限を監視して通知する(更新は手動) |
| Zabbix連携の見直し | 短い鍵での暗号化通信 | PSKは32桁以上512桁以下(偶数桁の16進数)。Zabbixサーバーを複数指定できる |
Web UIは、出荷時はHTTPSだけで受け付けます。出荷時の証明書は自己署名のため、初めてアクセスしたときにブラウザが警告を表示します。これは想定どおりの動作で、証明書管理の画面から、自前の証明書に差し替えることもできます。

出荷時に開いている受け口と、syslogの受け方
出荷時の「フィルタ開放」画面を見ると、開いているのは、Web UI(HTTPS)、SSH、NTP(配布向け)、SYSLOG(TCP/OverTLS)の4つだけです。それ以外は閉じています。

ここで注目したいのは、syslogの受信のうち、出荷時に開いているのはTLSだけという点です。UDPやTCPでの受信は、利用者が開けるまで閉じています。
一般的な環境では、ログの送信元はUDPで送っていることが多いかと思われます。この状態のまま導入すると、送信元の設定が正しくても、ログは届きません。TLSは送信元の対応と証明書の準備が必要なため、送信元の多くがUDPの環境では、まずUDPの受け口を開けることになります。Ver.2系では、導入時に「どの方式で受けるか」を決める作業が加わります。
なお、SNMP Trapの受信を有効にしたまま、その受け口を開けていなかったところ、画面の上部に次の案内が表示されました。syslogの受け口について同じ案内が出るかは、今回は確認をしていません。

どの受け口を開けるかは、送信元の機器が、どの方式で送れるかで決まります。4つの方式の違いを整理しました。
| 受信方式 | 送り方 | 開ける場面 |
|---|---|---|
| UDP | 送りっぱなしで、届いたかを確かめない | 送信元がUDPで送っている場合 |
| TCP(BSD形式) | 接続してから送る。従来からある書式(RFC 3164) | 送信元がTCPで、この書式で送っている場合 |
| TCP(IETF形式) | 接続してから送る。新しい書式(RFC 5424) | 送信元がTCPで、この書式で送っている場合 |
| TLS | 経路を暗号化して送る。送信元にTLSと証明書の設定が必要 | 送信元が対応していて、経路の盗聴・改ざんを防ぎたい場合 |
送信元がUDPでしか送れない場合でも、開け方は選べます。「フィルタ開放」の画面では、サービスごとに「全インターフェース開放」「インターフェース単位」「全インターフェース閉鎖」を選べます。ログを受け取るネットワークのインターフェースだけで開ければ、開けておく範囲を狭められます。
やってみた①:UDPの受け口を開ける前と後で送ってみる
まずは、出荷時と同じくSYSLOG(UDP)を閉じた状態で、ルーター(ヤマハ RTX830)からUDPでログを送ってみました。
RTX830で show log を見ると、ログインなどのログが出ています。

ところが、検証機のログ表示をRTX830のアドレスで絞り込んでも、1件も表示されませんでした。送る側は正常に動いていても、受け口が閉じていれば、ログは届きません。

次に、「フィルタ開放」でSYSLOG(UDP)を「全インターフェース開放」にしました。この変更を反映するには、再起動が必要です。

再起動のあと、RTX830にログインし直すと、RTX830の show log に出た17:01台のログが、同じ時刻で検証機にも届きました。


受け口を開けた操作は、操作ログに「syslog受信(UDP)のアクセス制限を変更(制限→許可)」と記録され、続けてシステムの再起動も記録されていました。

受け口の変更に再起動が必要ということは、運用を始めてから受け方を変えると、再起動の間はログを受信できないということです。運用中に変える場合は、受信が止まってもよい時間帯に行う必要があります。どの方式で受けるかは、導入時に決めておくのがよいと思います。
やってみた②:syslog over TLSで受信する
続いて、手元のDebianサーバーのrsyslogから、TLSでログを送ってみました。TLSの受け口は、出荷時から開いています。基本設定の説明によると、TCPの6514番で受信します。

証明書管理の画面では、HTTPS(Web UI)、FTPS、Syslog Over TLSのそれぞれに使う証明書を選べます。検証機では、どれも自己署名証明書になっていて、その発行元であるプライベートCAをダウンロードできます。自前の証明書を登録することもできます。

検証機が6514番で示す証明書を確認すると、別名(SAN)には、ネットワーク設定で設定したホスト名やドメイン名、IPアドレスが含まれていました。
rsyslog側では、TLS用のパッケージ(rsyslog-gnutls)を入れ、ダウンロードしたプライベートCAを置いたうえで、検証機の証明書の名前を確かめて送る設定にしました。設定の要点は次のとおりです。
global(
DefaultNetstreamDriver="gtls"
DefaultNetstreamDriverCAFile="/etc/rsyslog.d/ebsyslog-ca.pem"
)
*.* action(
type="omfwd" target="<検証機のIPアドレス>" port="6514" protocol="tcp"
StreamDriver="gtls" StreamDriverMode="1"
StreamDriverAuthMode="x509/name"
StreamDriverPermittedPeers="ebsyslogv2.example.com"
)
設定中の「*.*」は、すべてのログを送る指定です。実際の運用では、送るログを必要なものに絞ることもできます。
logger コマンドで送ったテスト用のログは、検証機に届きました。送信元が検証機の証明書を確かめたうえで、TLSでログを送っています。なお、今回の設定は、送信元が検証機を確かめる片方向の確認です。

やってみた③:保守用アカウントでSSHログインする
最後に、保守用アカウント(ebsupport)でSSHログインしてみました。表示されたのは、番号を入力して操作を選ぶメニューです。

おわりに
今回は、EasyBlocks Syslog Ver.2系の通信まわりの変更を、「許可したものだけを開く」方式を中心に紹介しました。
実際に試してみると、出荷時はsyslogの受け口のうちTLSだけが開いていて、UDPで送る機器のログは、受け口を開けるまで届かないことが分かりました。また、受け口の変更には再起動が必要でした。TLSでは、送信元が検証機の証明書を確かめたうえで、ログを送れることも確認できました。保守用アカウントでSSHログインすると、あらかじめ用意された項目を選ぶメニューが表示されました。
最後までお読みいただき、ありがとうございました。
次回の第4回は、Ver.2への移行で押さえておきたいポイントを取り上げます。
▼EasyBlocks Syslog Ver.2ソフトウェアリリースに関する過去記事はこちら
※本記事で紹介した画面・仕様は開発中のものです。リリースまでに変更になる場合があります。


