LoginSignup
67
87

More than 3 years have passed since last update.

WindowsのRDPを使ってクラウド上のLinuxインスタンスに接続する

Last updated at Posted at 2019-08-24

1. はじめに

以前のエントリーでは、VcXsrv(Xming)やVNCなどを使い、WindowsクライアントでLinuxサーバーのGUIアプリを起動する方法を説明した。

ポートフォワーディングや踏み台利用なども含めて出し尽くしたと思っていたが、xrdpは本文中で紹介したのに詳細は説明していなかった。

そこで今回はxrdpについて説明する。なお前提知識として「Windowsクライアントを使って…(1)」 と「クラウドでVNCサーバ&クライアントを構成する Part 1 」は読んでいるものとする。

1-1. 前提条件

  • RHEL系Linux OS(6/7/8)
  • パブリック・クラウド・サービスを利用(ただし本文中ではOracle Cloud Infrastructureを利用)

※「Amazon Linux=6系」「Amazon Linux 2=7系」として読み替えてほしい。

2. xrdpとは

xrdpとは、LinuxにRDP(Microsoft Remote Desktop Protocol)を提供するサーバー・プログラムである。xrdpをインストールすることで、Windowsクライアントからリモート・デスクトップを使ってグラフィカル・リモート・ログインできる。

おもな特徴は以下のとおり。

  • Windowsクライアントのリモート・デスクトップから接続できるので、クライアント側はインストール不要
  • フル・デスクトップ環境を利用できる
  • VNCとは違い、通信内容は暗号化される

このなかで「Windowsクライアントに何もインストールする必要が無い」のが一番のメリットだろう。企業ユースでは踏み台サーバーの権限が制限されていることが多く、一般ユーザーがプログラムをインストールできないことがあるからだ。

そして注意することが一つある。暗号化されていても、VPNなどを使わずに素のインターネットを使用するときは必ずポートフォワーディングすることだ。

なぜならば、リモートデスクトップのポート番号は3389であり、攻撃対象になりやすい。そのため、ファイアウォールでアクセス元IPを制限してないと、誰でもログイン画面を表示できてしまう。

2-1. xrdpとVNCの比較

次の表はxrdpとVNCを比較したものだ。セキュリティ方式に違いがあるが、どちらも基本的にはポートフォワーディングと併用した方がいいだろう。VNCは使用するユーザー分のポートが必要なので、マルチユーザーアクセスが必要なシステムでは注意したい。

クライアント側に追加のソフトウェア OSユーザーのパスワード設定 接続セキュリティ 伝送路 利用するポート
xrdp 不要 必須 OSのユーザー名/パスワード 暗号化される 3389のみ
VNC 必要 オプション VNCパスワード 暗号化されない 5901から利用する人数分

2-2. 設定手順

設定手順は以下のとおり。xrdpは、VNCのアドオン的な実装のため、設定方法はほとんど同じになっている。

1.xrdpを設定する
 - デスクトップ環境をインストールする
 - VNCサーバーをインストールする
 - xrdpをインストールする
 - xrdpを起動する
2.Linuxユーザーのパスワードを設定する
3.ファイアウォールを設定する
 - クラウドのファイアウォールを設定する
 - サーバーのファイアウォールを設定する
4.ポートフォワーディングする
5.Windowsクライアントからリモートデスクトップ接続する

3. xrdpを設定する

VNCと、ほとんど同じ手順なので簡潔に説明する。

3-1. デスクトップ環境をインストールする

7/8系Linux OS

yum groupinstall graphical-server-environment -y

6系Linux OS

yum groupinstall basic-desktop general-desktop japanese-support -y

3-2. VNCサーバーをインストールする

Linux OS共通

yum install tigervnc-server -y

3-3. EPELリポジトリを有効化する

xrdpはEPELから提供されている。そのため先にEPELリポジトリを有効にする。ただしAWSやOracle CloudではEPELを有効にする方法が異なるので注意すること。EPELの詳細は「あらためてEPELリポジトリの使い方をまとめてみた」を参照のこと。

8系Linux OS

yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm -y

7系Linux OS

yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm -y

6系Linux OS

yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm -y

Amazon Linux 2
Amazon Linux 2ではEPELを有効にするコマンドが提供されている。

sudo amazon-linux-extras install epel

Oracle Cloud Infrastructure
Oracle Linux 7では、EPELのクローンリポジトリ「ol7_developer_EPEL」が提供されているので、これを使用する。ただし依存性の解決に失敗するときは「ol7_developer_EPEL」を無効にして「EPEL」を使用する。

また2020年8月現在、CentOSでは固有のリポジトリは提供されていない。Oracle Linux 8では「ol8_developer_EPEL」が含まれているがパッケージ数が少ない。そのため前述の方法を使用する。

3-4. xrdpをインストールする

コマンドは同じだが、7系と6系ではインストールされるパッケージは異なる。

7/8系Linux OS

# yum install xrdp -y
================================================================================
 Package              Arch           Version                 Repository    Size
================================================================================
Installing:
 xrdp                 x86_64         1:0.9.10-1.el7          epel         422 k
Installing for dependencies:
 xorgxrdp             x86_64         0.2.10-4.el7            epel          63 k
 xrdp-selinux         x86_64         1:0.9.10-1.el7          epel          17 k

Transaction Summary
================================================================================
Installed:
  xrdp.x86_64 1:0.9.10-1.el7

Dependency Installed:
  xorgxrdp.x86_64 0:0.2.10-4.el7       xrdp-selinux.x86_64 1:0.9.10-1.el7

Complete!

6系Linux OS

# yum install xrdp -y
Dependencies Resolved

================================================================================
 Package         Arch              Version                Repository       Size
================================================================================
Installing:
 xrdp            x86_64            0.6.1-4.el6            epel            244 k

Transaction Summary
================================================================================
Installed:
  xrdp.x86_64 0:0.6.1-4.el6

Complete!

3-5. xrdpを起動する

7/8系Linux OS

xrdpのサービスを起動する。

# systemctl start xrdp
# systemctl enable xrdp

次のように3389がリスニングされていれば正常に動作している。

# netstat -antup | grep xrdp
tcp        0      0 127.0.0.1:3350          0.0.0.0:*               LISTEN      12222/xrdp-sesman
tcp        0      0 0.0.0.0:3389            0.0.0.0:*               LISTEN      12223/xrdp

6系Linux OS

# service xrdp start
# chkconfig xrdp on

4. Linuxユーザーのパスワードを設定する

xrdpで接続するときは、sshログインではなくコンソール・ログインになる。そのためxrdpでログインするLinux OSユーザーにパスワードを設定する必要がある。

なお、ここでパスワードを設定しても、sshでパスワード・ログインが有効にはならないので安心してほしい。sshのパスワード・ログインの可否は/etc/ssh/sshd_configで設定できる。次のようにnoになっていれば、パスワードログインできない。

# grep ^Password /etc/ssh/sshd_config
PasswordAuthentication no

4-1. パスワードポリシーを理解する

LinuxではOSパスワードのポリシーを指定できる。ISOイメージからインストールしたときは何も設定されていないが、クラウド・サービスの提供イメージでは設定されていることがある。そのときにはパスワード・ポリシーに従ったパスワードの設定が必要だ。

なおパスワード・ポリシーの設定はLinuxディストリビューションによって異なる。RHEL7系とRHEL6系について説明する。

  • RHEL7系以降(Amazon Linux 2含む)
  • RHEL6系(Amazon Linux含む)
  • Ubuntu

このあたりの詳細は以下の記事を参照のこと。

4-1-1. RHEL7/8系

現在のパスワード・ポリシーは以下のコマンドで確認できる。表示されないときには設定されていない。

$ grep -v -e '^\s*#' /etc/security/pwquality.conf
$ grep -v -e '^\s*#' /etc/security/pwquality.conf.d/*.conf

Amazon EC2のAmazon Linux 2では何も設定されていなかった。Oracle Cloud Infrastructure ComputeのOracle Linux 7/8ではoci.confが追加され、次のように設定されていた。

/etc/security/pwquality.conf.d/oci.conf
difok = 3       # 過去3回のパスワードは利用不可
minlen = 8      # パスワードが8文字以上
dcredit = -1    # 数字が1文字以上
ucredit = -1    # 大文字アルファベットが1文字以上
lcredit = -1    # 小文字アルファベットが1文字以上
ocredit = -1    # 記号が1文字以上
gecoscheck = 1  # /etc/passwdエントリのGECOSフィールドの単語が含まれていない
minclass=4      # 文字種別の数。4は数値、大文字、小文字、記号が必須
maxrepeat=3     # 連続した文字の最大数

4-1-2. RHEL6系

RHEL6系のパスワード・ポリシーはpam_pwqualityではなくpam_pam_cracklibで管理している。設定値は次のコマンドで確認できる。

$ grep -v -e '^\s*#' /etc/pam.d/system-auth | grep ^password

何も表示されなければ設定されていない。先ほどと同様にOracle Cloud Infrastructure ComputeのOracle Linux 6では次のように設定されている。

password    requisite     pam_cracklib.so retry=3 minlen=8 difok=3 gecoscheck ocredit=-1 dcredit=-1 ucredit=-1 lcredit=-1 enforce_for_root
password    requisite     pam_pwhistory.so use_authtok enforce_for_root remember=4
password    sufficient    pam_unix.so sha512 shadow try_first_pass use_authtok remember=4
password    required      pam_deny.so

どのように設定されているかは、クラウド・サービスやLinux OSによって異なる。以下のファイルやヘルプを調べてほしい。

man pam_pwquality
/etc/security/pwquality.conf
/etc/pam.d/system-auth

4-2. パスワードを設定する

パスワードポリシーを理解したところで、必要なユーザー数分のパスワードを設定する。強度の高いパスワードを使用するにはpwmakeやpwgenで生成してもいいだろう。

# passwd <OSユーザー名>
Changing password for user XXX.
New password: ★新しいパスワードを入力
Retype new password: ★確認のため同じパスワードを入力
passwd: all authentication tokens updated successfully.

5. ファイアウォールを設定する

Windowsクライアントから、どのようにLinuxサーバーに接続するかで、必要なファイアウォール設定は異なる。クラウドでは、次の3通りの接続方法が考えられる。

xrdp-portforword01.png

ファイアウォールの設定は、以前「クラウドでVNCサーバ&クライアントを構成する Part 1」の「5. ファイアウォールを設定する」説明している。前回はVNCの5901番ポートだったのに対し、今回は3389番ポートになっただけだ。したがって具体的な説明は省略する。

5-1. クラウドのファイアウォールを設定する

「2.インターネット経由(踏み台あり)」と「3.専用線/インターネットVPN」のときは、Linuxサーバーに疎通できるように、クラウドのファイアウォールを設定する。

5-2. サーバーのファイアウォールを設定する

「2.インターネット経由(踏み台あり)」と「3.専用線/インターネットVPN」のときは、サーバーのファイアウォール(iptables/firewalld)でポートを開ける必要がある。具体的なコマンドは「ソフトウェアファイアウォールの設定」を見てほしい。

6. ポートフォワーディングする

接続方式の中で「1.インターネット経由(踏み台なし)」と「2.インターネット経由(踏み台あり)」のときはポートフォワーディングが必要になる。こちらも以前「6. ポートフォワーディングを設定する」でPutty/Tera Termのそれぞれについて説明しているので、そちらを読んでほしい。

今回は以下のように設定しているものとする。
xrdp02-1.PNG

7. Windowsクライアントからリモートデスクトップ接続する

すべての準備が整ったので、WindowsクライアントからLinuxサーバーに接続しよう。

  1. 「リモートデスクトップ接続」を起動する。入力する文字はポートフォワーディングの有無によって異なる。ポートフォワーディングなしのときは「IPアドレス」を入力する。ありのときは「localhost:<転送元ポート>」もしくは「127.0.0.1:<転送元ポート>」を入力する。
     
    localhostで失敗するときは127.0.0.1を試すこと。
     
    ポートフォワーディングなしのとき
    xrdp03.PNG
    ポートフォワーディングありのとき
    xrdp04.PNG

  2. 次のように警告が出ても[接続]をクリックする。
    xrdp05.PNG

  3. ここでも[はい]をクリックする。
    xrdp06.PNG

  4. xrdpのログイン画面が表示されたら、Linuxユーザーのユーザー名とパスワードを入力する。
    xrdp07.PNG

  5. Linuxのデスクトップ画面が表示できた。あとは言語などを設定すれば終了だ。
    xrdp08.PNG

8. まとめ

  • Windowsのリモート・デスクトップから接続できるので、クライアント側はインストール不要。管理者権限を持っていないWindowsクライアントでも利用できる

  • xrdpを使うと、WindowsクライアントでLinuxのフルデスクトップ環境を利用できる

  • ポートフォワーディングを併用すると、踏み台やクラウドのようなネットワークにも対応できる

9. 参考

67
87
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
67
87