Windows Update で、Remmina が繋がらない

急に Remmina で Windows機に接続できなくなりました。

たまに繋がらなくなる

以前からちょくちょく繋がらなくなることがあったので、最初は焦らずにセキュリティ周りの設定を変更してみました。

現象の確認

以前の記事と同様の対応だと繋がりませんでした。
ひとまず、原因を探ります。

rdesktopで確認

rdesktopで接続するとエラーメッセージが確認できました。

$ sudo rdesktop -g 1024x768 -a 24 -k ja -u link 192.168.x.yyy
ERROR: CredSSP: Initialize failed, do you have correct kerberos tgt initialized ?
Connection established using SSL.

Google 翻訳

エラー:CredSSP:初期化に失敗しました。正しい Kerberos TGT が初期化されていますか?
SSLを使用して確立された接続。

接続しにいった先でのエラーの模様。
ということで、Windows側の設定は問題ないと判断しました。
(そもそも Windowsファイアウォールなどの設定は変更していませんし)。

"CredSSP"という聞き慣れない言葉が出てきたので、併せて調べてみます。

原因調査

CredSSPって何?

要約すると「RDPで使うネットワーク レベル認証(NLA)のプロトコル」です。

base on Credential Security Support Provider (Windows)

The Credential Security Support Provider protocol (CredSSP) is a Security Support Provider that is implemented by using the Security Support Provider Interface (SSPI).
CredSSP lets an application delegate the user's credentials from the client to the target server for remote authentication. CredSSP provides an encrypted Transport Layer Security Protocol channel.
The client is authenticated over the encrypted channel by using the Simple and Protected Negotiate (SPNEGO) protocol with either Microsoft Kerberos or Microsoft NTLM.

Caution This is not constrained delegation. CredSSP passes the user's full credentials to the server without any constraint.

資格情報セキュリティサポートプロバイダプロトコル(CredSSP)は、セキュリティサポートプロバイダインターフェイス(SSPI)を使用して実装されるセキュリティサポートプロバイダです。
CredSSPを使用すると、リモート認証のためにアプリケーションがクライアントからターゲットサーバーにユーザーの資格情報を委任できます。CredSSPは、暗号化されたTransport Layer Security Protocolチャネルを提供します。
クライアントは、Microsoft KerberosまたはMicrosoft NTLMのいずれかでSimple and Protected Negotiate(SPNEGO)プロトコルを使用して、暗号化されたチャネルで認証されます。

注意 これは制約のある委任ではありません。CredSSPは、ユーザーの完全な資格情報を何の制約もなくサーバーに渡します。

採用されて10年くらい

CredSSP は Windows XP SP3, Windows Server 2008 以降で採用されているので、Windowsに採用されてから10年ほど経っています。

base on Windows Server 2012 R2 および Windows 8.1 以降のネットワーク レベル認証の動作について | Ask CORE

Windows XP SP3, Windows Server 2008 以降では、リモート デスクトップ接続に、ネットワーク レベル認証 (NLA) が採用されました。
NLA では、サーバーがユーザーとのセッションを確立する前に、認証に使用するユーザーの資格情報を提示するよう、接続元に強制させます。

採用された理由

セキュリティ強化の一環で採用されています。

base on Windows Server 2008 R2: ネットワーク レベル認証を使用すべき理由

NLA を使用すべき理由
NLA では、サーバーがユーザーのセッションを作成する前に、認証に使用するユーザーの資格情報を提示するようクライアント コンピューターに強制します。
このようなプロセスから、これは ”事前認証” と呼ばれることがあります。
NLA では、Credential Security Support Provider (CredSSP) プロトコルと呼ばれるテクノロジを使用するため、別の OS 対応のリモート デスクトップ プロトコル (RDP) クライアントを使用している場合は、NLA がサポートされているかどうかを開発者に確認する必要があります。

セッションを作成する前に資格情報を提示するのが良いことである理由を説明しましょう。
接続を試行しているユーザーに接続する権利があるかどうかを確認するまでセッションを作成しない主なメリットは 2 つあります。
それは、サービス拒否 (DoS) 攻撃に対する防御層を提供することと、仲介の処理速度を上げられることです。

セッションを開始するには、サーバー側で、セッションをサポートするのに必要な多くのプロセスを作成する必要があります。そのため、セッションの作成には、コストと時間がかかります。
多数の権限のないユーザーが同時にセッションへの接続を試行すると、サーバーでは、不正なログイン資格情報を受け取るためにセッションを作成するため、他のユーザーがサーバーを使用できなくなる可能性があります。

パフォーマンスの問題は、さらに重要です。
RD セッション ホスト ファームに配置されている各サーバーは、潜在的にリダイレクターであることを思い出してください。要求を RD 接続ブローカーにリダイレクトする前に、ホスト サーバーで完全なセッションを作成する必要がある場合、接続の確立にかかる時間が長くなります。

NLA では、CredSSP を使用して、セッションを作成する前に、認証に使用するユーザーの資格情報をサーバーに提示します。このプロセスにより両方の問題を回避できます。CredSSP を使用するメリットは他にもあります。CredSSP では、接続ごとに資格情報を格納することで、ユーザーのログオン回数を減らすことができます

原因

CredSSP が3/16に更新されています。

base on MS-CSSP : Credential Security Support Provider (CredSSP) Protocol

Published Version

Date Protocol Revision Revision Class Downloads
3/16/2018 16.0 Major PDF, DOCX, Diff

CredSSP 更新による問題

3/16にアップデートされた CredSSP が原因でした。
Windows側の CredSSP が更新されたことで、正しくデータを暗号化できず認証エラーが発生し不通となった模様。
普段 Windows を使わないので気づくが遅れたよ。

対策としては、なにもなくて。
Lubuntu側のアップデートをかけたら問題なく繋がりました。

結局のところ

Lubuntuのアップデートをかけているときには、既に Remmina を起動していたのでアップデートが反映されていなかっただけでした。
なので、Remmina を開きなおしたらOKでした。