X Window Systemでは、プログラムはXクライアントとして実行され、コンピュータネットワークを介してXディスプレイサーバーに接続します。ネットワークは他のユーザーもアクセスできる可能性があるため、ログインしているユーザーとは異なるユーザーが実行するプログラムへのアクセスを禁止する方法が必要です。
クライアントアプリケーションがXディスプレイサーバーに接続できるかどうかを制御する標準的なアクセス制御メカニズムは5つあります。これらは3つのカテゴリに分類できます。
さらに、他のすべてのネットワーク接続と同様に、トンネリングを使用することもできます。
ホストベースのアクセス方式は、Xディスプレイサーバーへの接続を許可するホストのセットを指定する方式です。この方式は、そのようなホストへのアクセス権を持つすべてのユーザーがディスプレイに接続できるため、セキュリティが劣ります。このメカニズムをアクティブ化し、許可されたホストのリストを表示および変更するには、xhostプログラムと3つのX Window Systemコアプロトコルxhost要求を使用します。を不適切に使用すると、インターネット上のすべてのホストがXディスプレイサーバーへのフルアクセス権限を意図せず取得してしまう可能性があります。
クッキーベースの認証方法は、マジッククッキー(任意のデータ)を選択し、Xディスプレイサーバーの起動時にそれをサーバーに渡すことに基づいています。このクッキーを知っていることを証明できるクライアントはすべて、サーバーへの接続が許可されます。
これらのクッキーは、デフォルトでは別のプログラムによって作成され、ユーザーのホームディレクトリ内のファイルに保存されます.Xauthority。そのため、ローカルコンピュータ上でクライアントが実行するすべてのプログラムは、このファイルにアクセスでき、サーバーによる認証に必要なクッキーにもアクセスできます。ユーザーがネットワーク上の別のコンピュータからプログラムを実行したい場合は、クッキーをそのコンピュータにコピーする必要があります。クッキーのコピー方法はシステムによって異なります。例えば、Unix系プラットフォームでは、scpコマンドを使用してクッキーをコピーできます。
MIT-MAGIC-COOKIE-1この方式を採用しているシステムはと の2 つですXDM-AUTHORIZATION-1。最初の方式では、クライアントは認証を要求されたときに単純にクッキーを送信します。2 番目の方式では、秘密鍵もファイルに保存されます.Xauthority。クライアントは、現在時刻、トランスポート依存の識別子、およびクッキーを連結して文字列を作成し、結果として得られた文字列を暗号化してサーバーに送信します。
xauthアプリケーションは、ファイルにアクセスするためのユーティリティです.Xauthority。環境変数XAUTHORITYを定義することで、そのクッキーファイルの名前と場所を上書きできます。
X11クライアント間の直接通信のためにInter-Client Exchange Libraryによって実装されたInter-Client Exchange (ICE)プロトコルは、同じ認証方式を使用しますが、独自のファイルにアクセスするための独自のiceauthユーティリティを備えており、そのファイルの場所は環境変数で上書きできます。ICEは、例えばDCOPやXセッション管理プロトコル(XSMP)で使用されています。MIT-MAGIC-COOKIE-1.ICEauthorityICEAUTHORITY
ユーザーベースのアクセス方式は、特定のユーザーがサーバーに接続できるように認証することで機能します。クライアントがサーバーへの接続を確立する際、そのクライアントが認証されたユーザーによって制御されていることを証明する必要があります。
ネットワーク型ID管理システムを用いたユーザー認証に基づく方法は、SUN-DES-1と の2つですMIT-KERBEROS-5。最初のシステムは、SunOSで開発されたONCリモートプロシージャコールシステムのセキュアなメカニズムに基づいています。2番目のメカニズムは、クライアントとサーバーの両方がKerberosサーバーを信頼することに基づいています。
3つ目の方法はローカル接続に限定され、システムコールを使用してカーネルにローカルソケットの相手側がどのユーザーであるかを問い合わせます。このプログラムを使用して、エントリを追加またはxhost削除できます。[ 1 ]localuserlocalgroup
SSHユーティリティ(オプションまたはオプションを指定して起動した場合)は、リモートから起動されたクライアントからのX11トラフィックをローカルサーバーにトンネルします。これは、リモートサイトで環境変数をsshdによって開かれたローカルTCPソケットを指すように設定することで実現され、sshdはX11通信をsshにトンネルします。さらにsshdはxauthを呼び出して、リモートサイトにMIT-MAGIC-COOKIE-1文字列を追加し、これによりリモートのX11クライアントがsshユーザーのローカルXサーバーにアクセスできるようになります。-XForwardX11DISPLAY.Xauthority
ネットワークを介したクライアントとサーバー間のX11接続は、 Kerberos / GSSAPIやTLSなどの他のセキュアチャネルプロトコルを使用して保護することもできますが、現在ではこれらのオプションはSSHよりもはるかに使用頻度が低くなっています。