Summary
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 サービスを再起動