[RSIT_FAQ] OpenSSHクライアントバグに起因した RSIT Windows Server によるイベントログ(警告:ID=4097)出力について

  • KM03606870
  • 10-Mar-2020
  • 10-Mar-2020

Summary

OpenSSHクライアントからの切断終了時に、RSIT Windows Server が イベントログ [Application] に、警告ログ(ID=4097)を出力する場合があります。これは OpenSSH 5.3p1/5.4p1 の既知の問題に起因しています。

Answer

1. 問題内容:

・RSIT Windows Server が イベントログ [Application] に、下記メッセージを伴う 警告ログ(ID=4097)を出力する場合があります。

 『 [094] RSSHD x.x (x.x.xxx): .\sshd.cpp:LoginProc(xxxx) The client has been disconnected, we sent the following disconnect reason: SSH_DISCONNECT_PROTOCOL_ERROR, description: unexpected end of packet 』

2. 原因:

・OpenSSH 5.5p1 にて対策した OpenSSH 5.3p1/5.4p1 の既知の問題による。
 規格上 切断パケットメッセージとして記述すべき「string; language tag」をパケットフォーマット上欠落した状態で RSIT Windows Server へ返送している。

《対策内容 参照先》
 "OpenSSH Release Notes"
   --<該当箇所>-----
   OpenSSH 5.5/5.5p1 (2010-04-16)
     This is a bugfix release.
       Changes since OpenSSH 5.4
       =========================
       * Include a language tag when sending a protocol 2 disconnection message.
   -----------------

《プロトコル規格上の記述》
 RFC 4253:"The Secure Shell (SSH) Transport Layer Protocol"
  --<該当箇所>-----
   11.1.  Disconnection Message
       byte      SSH_MSG_DISCONNECT
       uint32    reason code
       string    description in ISO-10646 UTF-8 encoding [RFC3629]
       string    language tag [RFC3066]     【<<<< 欠落 】
   -----------------

3. 動作上の影響:

・本来の処理自体は終了した後に発生していますので、実動作上は影響はありません。
 唯一 該当クライアントからの接続終了時の切断の都度、サーバ側に警告メッセージが出力されるのが問題となります。

・具体的には、クライアント/サーバ間の処理が完了し、クライアントから送られた切断メッセージパケットが上述規格違反となっています。
 そこで、検知 RSIT Windows Server側としては、
  1) その旨を警告メッセージとして出力
  2) クライアントに対しプロトコルに準拠して切断パケット(*)を送信
    (*)切断理由が "SSH_DISCONNECT_PROTOCOL_ERROR"
       (= "unexpected end of packet"受信によるプロトコルエラー検知)(RFC 4253より)

4. 対応策:
a) 根本対策:
 ⇒・クライアント側を OpenSSH 5.5p1 以降に Ver.upする。

b) RSIT Windows Server側設定による警告メッセージ抑止策について:
 ⇒・厳密には、切断時に もし他のプロトコルエラーが発生した場合、本施策によりその検知まで抑止されますが、切断時に検知する本件以外のプロトコルエラーを確認したことはなく、仮に存在し、発生時に見逃したとしても運用上の実害はないと考え、設定による本抑止策を提示致します。

【当該警告メッセージ抑止策】
・RSIT Windows Server [Event Logging]設定変更による対応:
<対応手順>
 1) [Event Logging]設定画面において、
   現状状態から、更に"Custom"にチェックマークを付け、
   有効化した[Custom events..]ボタンをクリック。
 2) 表示[Custom Log Events]画面一覧表の中から、
   #= 94, Type="Warning", Event Name="LOG_W_SESSION_DISCONNECTED_SSHEXCEPTION"
     のチェックマークをクリックし外す (=無効化)
    (★それ以外は変更しないように注意)
 3) [OK]ボタンをクリックし戻る
 4) 設定内容を保存
   (RSIT設定画面の "File"メニュー > "Save Settings" を選択
    又は  FDマークのアイコンをクリックして保存)
 5) RSIT Windows Server サービスを再起動