前回は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"
「xrdp」パッケージのインストール
「 EPEL」パッケージがインストール出来たので次に「xrdp」と「 tigervnc-server(xrdpのバックエンド用途として使用) 」パッケージをインストールします。実行コマンドを入力後、管理リポジトリの更新、依存関係の調整を行い、インストールパッケージと依存関係のあるパッケージの詳細を一覧に出力してくれます(図3赤枠)。これでよろしいですか?と表示されたら「y」と入力(図3黄枠)すれば、以降、自動で進行します。
実行コマンド:dnf install 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
以下コマンド実行で「xrdp」サービスポートの「3389」が、リスニングされている事を確認します(図6赤枠)
実行コマンド:netstat -antup | grep xrdp
ファイアウォールに設定を追加
リモートデスクトップ接続(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
「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
SELinux設定変更の反映
SELinux設定ファイルの変更が終わったら、システムを再起動して設定変更を反映します(図9黄枠)
実行コマンド:reboot
再起動後、現在のSELinuxの動作モードを表示する「getenforce」コマンドを実行して(10図黄枠)、SELinux が Permissiveモードで実行されている事を確認します(10図赤枠)。
実行コマンド:getenforce
参考資料
- fedoraproject.org「DOCS」「Extra Packages for Enterprise Linux (EPEL)」2022年11月30日閲覧
- ITmedia Inc.「@IT」「【 dnf 】コマンド(基礎編)―ソフトウェア(パッケージ)をインストールする」2022年11月30日閲覧
- Red Hat,Inc.「システム管理者のガイド」「10.6.1. ユニットファイル構造の概要」2022年11月30日閲覧
- IT用語辞典 e-Words (1997-)「3389番ポート【ポート3389】port 3389 / TCP3389番 / UDP3389番」2022年11月30日閲覧
- Red Hat,Inc.「SELinux とは」「任意アクセス制御 (DAC) と強制アクセス制御 (MAC)」2022年11月30日閲覧
- NWW「NWWブログ (2019-)」”【SELinuxの停止方法】なぜSELinuxを停止する必要があるのか【LPIC・LinuC303】” 2022年11月30日閲覧
- Red Hat,Inc.「Security-Enhanced Linux」「5.4. SELinux の有効化および無効化」2022年11月30日閲覧
- オプティマル・システムデザイン・ワークス「【Hyper-V】ホストOSからCentOS7のデスクトップにファイルをコピペする方法(クリップボード共有) 」2022年11月30日閲覧
コメント