【解説③】EasyBlocks Syslog Ver.2 通信機能とセキュリティの変更点

はじめに

前回、解説第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ログインしてみました。表示されたのは、番号を入力して操作を選ぶメニューです。

※ebsupportでSSHログインしたときのメニュー(一部)

おわりに

今回は、EasyBlocks Syslog Ver.2系の通信まわりの変更を、「許可したものだけを開く」方式を中心に紹介しました。

実際に試してみると、出荷時はsyslogの受け口のうちTLSだけが開いていて、UDPで送る機器のログは、受け口を開けるまで届かないことが分かりました。また、受け口の変更には再起動が必要でした。TLSでは、送信元が検証機の証明書を確かめたうえで、ログを送れることも確認できました。保守用アカウントでSSHログインすると、あらかじめ用意された項目を選ぶメニューが表示されました。

最後までお読みいただき、ありがとうございました。

次回の第4回は、Ver.2への移行で押さえておきたいポイントを取り上げます。

▼EasyBlocks Syslog Ver.2ソフトウェアリリースに関する過去記事はこちら

※本記事で紹介した画面・仕様は開発中のものです。リリースまでに変更になる場合があります。

タイトルとURLをコピーしました