RHEL8の環境整備(リモートデスクトップ接続①-RHEL8側)

ソフトウェア
CoxinhaFotosによるPixabayからの画像

前回はRHEL8にSSH接続環境を整備しましたが、今回は検証環境をより便利にするため、「RDP(Remote Desktop Protocol)」によるリモートデスクトップ環境を整備します。具体的には、RDPサーバにUnix系OS用のオープンソースの「xrdp」、接続するRDPクライアントに「Windows Remote Desktop Connection」を使って「リモートデスクトップ」を実装します。ここでは、RHEL8側の整備手順をまとめました。

RDPサーバの導入と接続設定

RDP(Remote Desktop Protocol)は、コンピュータ(サーバ)の画面をネットワークを通じて別のコンピュータ(クライアント)に転送して表示・操作する「リモートデスクトップ」において、サーバとクライアントの通信に用いられる通信プロトコルの一つです。Microsoft社により開発され、仕様が公開されており、同社以外が開発・公開したRDPサーバやRDPクライアントなどもあります。

「リモートデスクトップ」の利点

以下、リモートデスクトップ接続の利点だと思います。

  • ゲスト(RHEL8のGNOME3デスクトップ環境)のディスプレイサイズが変更できる
  • ホストとゲスト間で、クリップボードを共有して情報のやり取りができる

RHEL8への「xrdp」サーバーの導入

今回は、RDPサーバとして「xrdp」サーバーを導入しました。インストールする「xrdp」パッケージは、RHEL8のパッケージには含まれていません。なので「xrdp 」パッケージを外部レポジトリの EPEL (Extra Packages for Enterprise Linux) パッケージから取得します(図1上黄枠)。

※パッケージのインストールには「root権限」が必要なので、ここでは前回作成したログイン後、管理者権限に移行する「ttl」ファイルをダブルクリックして接続しました。

外部レポジトリ「 EPEL」パッケージのインストール

コマンド実行後、インストールする「 EPEL」パッケージの詳細が一覧表示され、これでよろしいですか?と表示されるので「y」と入力します(図1上黄枠)。以降、自動でリポジトリからダウンロード、インストールされました(図1下)。

実行コマンド:dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm

依存関係のある RHEL のリポジトリを有効にします。「リポジトリー ‘codeready-builder-for-rhel-8-x86_64-rpms’ は、このシステムに対して有効になりました。」と表示されます(図2)

実行コマンド:subscription-manager repos --enable "codeready-builder-for-rhel-8-x86_64-rpms"
図2:依存関係のある RHEL のリポジトリを有効にする

「xrdp」パッケージのインストール

「 EPEL」パッケージがインストール出来たので次に「xrdp」と「 tigervnc-server(xrdpのバックエンド用途として使用) 」パッケージをインストールします。実行コマンドを入力後、管理リポジトリの更新、依存関係の調整を行い、インストールパッケージと依存関係のあるパッケージの詳細を一覧に出力してくれます(図3赤枠)。これでよろしいですか?と表示されたら「y」と入力(図3黄枠)すれば、以降、自動で進行します。

実行コマンド:dnf install xrdp tigervnc-server
図3:「xrdp 」と 「tigervnc-server」パッケージのインストール:実行コマンド入力→管理リポジトリ更新、依存関係の調整→インストールパッケージと依存関係のあるパッケージ詳細を一覧出力
「dnf」コマンドについて

今回よく利用する「dnf」は、Red Hat系のLinuxディストリビューションで使われる「RPMパッケージ」を扱うためのパッケージ管理コマンドです。ソフトウェアのインストール(install)や更新(update)、アンインストール(remove)の際に利用します。「yum」の後継コマンドという位置付けで、yumと同じサブコマンド、オプションを使用可能です。

各パッケージのインストール

「dnf install パッケージ名」は、パッケージをインストールする時の構文です。コマンド実行→確認メッセージ「これでよろしいですか?」に「y」を入力(図3黄枠)すると、自動でダウンロードとインストールが始まります(図4上下)。

途中、確認メッセージが数回表示される事がある(図4上黄枠)ので、全てインストールすると分かっている場合、以下の様に「-y」オプションを使用して、確認入力を省略できるようです。

確認入力の省略コマンド(全て「y」入力):dnf -y install xrdp tigervnc-server

以降、自動でパッケージのダウンロード、インストール(インストール後の検証やインストール済み製品の更新までやってくれるようです)が行われます(図4下)。

「xrdp」サーバーの接続設定

「xrdp」サービスの起動設定

インストールが完了したら「xrdp」サービスを起動します(図5黄枠)。

実行コマンド:systemctl start xrdp

さらにシステムの起動時に「xrdp」サービスが自動起動するように設定します(図5黄枠)。以下コマンドの実行で、選択したサービスユニットの [Install] セクションを読み取り、/etc/systemd/system/ ディレクトリ、およびそのサブディレクトリにある /usr/lib/systemd/system/name.service ファイルへの適切なシンボリックリンクを作成します(図5赤枠)。

実行コマンド:systemctl enable xrdp
図5:「xrdp」サービスの起動設定

以下コマンド実行で「xrdp」サービスポートの「3389」が、リスニングされている事を確認します(図6赤枠)

実行コマンド:netstat -antup | grep xrdp
図6:「xrdp」サービスポートの「3389」が、リスニングされている事を確認

ファイアウォールに設定を追加

リモートデスクトップ接続(RDP:Remote Desktop Protocol)で使用する、3389番ポート(port 3389 / TCP3389番 / UDP3389番)を、ファイヤーウォールの許可設定に追加します。

以下のコマンドを実行して「パブリック(今回のデフォルト)」ゾーンの「ports:」項目に「3389番ポート」を追加します(図7黄枠①)。

実行コマンド(図7黄枠①):firewall-cmd --permanent --zone=public --add-port=3389/tcp

設定を変更したので、ファイアウォール設定の再読込みを行います(図7黄枠②)。

実行コマンド(図7黄枠②):firewall-cmd --reload

ファイアウォール設定を展開し、追加した設定が反映されているか確認します(図7黄枠③)。

実行コマンド(図7黄枠③):firewall-cmd --list-all
図7:リモートデスクトップ接続で使用する 3389番ポートを、ファイヤーウォールの許可設定に追加

「public」ゾーンの「ports:」項目に「3389番ポート(3389/tcp)」が追加された事が確認できました(図7赤枠)。

SELinuxの設定変更

SELinux(Security-Enhanced Linux)は、システムにアクセスできるユーザーを管理者が、より詳細に制御できるようにする Linuxシステム用のセキュリティアーキテクチャです。本機能のアクセス制御が有効(Enforcingモード)な場合、検証機としての運用に不都合が生じやすい様です。なので、アクセス制御は行わず、警告ログを出力する(Permissiveモード)に変更しました。

SELinux設定ファイルの変更

SELinux設定ファイル「/etc/selinux/config」の、SELINUXパラメータ設定を確認します(図8黄枠①)。SELINUXパラメータの設定が「Enforcingモード(SELINUX=enforcing)」だった(図8赤枠①)ため、設定ファイルを編集し「Permissiveモード(SELINUX=permissive)に変更します(図8黄枠②)。再度、SELINUXパラメータを読込み、設定変更を確認します(図8赤枠③)。

実行コマンド(図8黄枠①、③):less /etc/selinux/config | grep SELINUX
図8:SELinux設定ファイル「/etc/selinux/config」の設定変更

SELinux設定変更の反映

SELinux設定ファイルの変更が終わったら、システムを再起動して設定変更を反映します(図9黄枠)

実行コマンド:reboot
9図:システムを再起動して設定変更を反映

再起動後、現在のSELinuxの動作モードを表示する「getenforce」コマンドを実行して(10図黄枠)、SELinux が Permissiveモードで実行されている事を確認します(10図赤枠)。

実行コマンド:getenforce
10図:再起動後、現在のSELinuxの動作モードが、Permissiveモードになっている事を確認

※SELinuxのアクセス制御が起こす不具合

SELinuxは、システム上のアプリケーション、プロセス、ファイルのアクセス制御を定義します。アクセス制御にはセキュリティポリシーを使用します。セキュリティポリシーは、一連のルールで構成されており、アクセス可能なものとそうでないものを、SELinuxが識別できるようにします。

以上の様にSELinuxは、Linuxシステムに後付けでセキュリティレイヤーを差入れる感じになります。従来Linuxのアクセス権では「root」ユーザーは完全なアクセス制御権を付与されます。検証用にとりあえず「root」権限であちこち変更するのですが、セキュリティポリシーと競合すると、SELinuxのアクセス制御により「root」権限の操作が拒否されることもある様です。

警告ログを解析して、セキュリティポリシーを変更するのが正だと思いますが、セキュリティポリシーの改変は難しいので、SELinuxのモード(PermissiveまたはDisabled)変更による競合回避で対応する事例が多いのだと思います。

参考資料

コメント

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