Benutzer-Werkzeuge

Webseiten-Werkzeuge


tachtler:xrdp

xrdp

xrdp akzeptiert Verbindungen von einer Vielzahl von RDP-Clients: FreeRDP, rdesktop, NeutrinoRDP und Microsoft™ Remote Desktop Client (für Windows™, macOS, iOS und Android). Der RDP-Transport wird standardmäßig mit TLS verschlüsselt.

* Quellen

Ab hier werden root-Rechte zur Ausführung der nachfolgenden Befehle benötigt. Um root zu werden geben Sie bitte folgenden Befehl ein:

$ su -
Password: 

Vorbereitung

Zur Installation von xrdp über ein rpm-Paket, soll hier das Repository eines Drittanbieters genutzt werden, da xrdp nicht im CentOS-Repository enthalten ist.

Nachfolgend soll das Repository des Drittanbieters EPEL genutzt werden. Eine Anleitung, wie das Repository des Drittanbieters EPEL eingebunden werden könnte, kann unter nachfolgendem internen Link nachgelesen werden:

Installation

Zur Installation von xrdp werden nachfolgende Pakete benötigt:

  • xrdp - ist im epel-Repository des Drittanbieters EPEL enthalten
  • tigervnc-server - ist im base-Repository von CentOS enthalten

Mit nachfolgendem Befehl, werden die Pakete xrdp und tigervnc-server installiert:

# yum install xrdp tigervnc-server
Loaded plugins: fastestmirror, priorities
Loading mirror speeds from cached hostfile
 * base: mirror.infonline.de
 * centos-sclo-rh: mirror.23media.com
 * centos-sclo-sclo: mirror.fra10.de.leaseweb.net
 * epel: mirror.23media.com
 * extras: mirror.23media.com
 * updates: mirror.23media.com
182 packages excluded due to repository priority protections
Resolving Dependencies
--> Running transaction check
---> Package tigervnc-server.x86_64 0:1.8.0-17.el7 will be installed
---> Package xrdp.x86_64 1:0.9.13-1.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package                Arch          Version                 Repository   Size
================================================================================
Installing:
 tigervnc-server        x86_64        1.8.0-17.el7            base        215 k
 xrdp                   x86_64        1:0.9.13-1.el7          epel        427 k

Transaction Summary
================================================================================
Install  2 Packages

Total download size: 643 k
Installed size: 2.6 M
Is this ok [y/d/N]: y
Downloading packages:
(1/2): tigervnc-server-1.8.0-17.el7.x86_64.rpm             | 215 kB   00:00
(2/2): xrdp-0.9.13-1.el7.x86_64.rpm                        | 427 kB   00:01
--------------------------------------------------------------------------------
Total                                              348 kB/s | 643 kB  00:01
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : 1:xrdp-0.9.13-1.el7.x86_64                                   1/2
  Installing : tigervnc-server-1.8.0-17.el7.x86_64                          2/2
  Verifying  : tigervnc-server-1.8.0-17.el7.x86_64                          1/2
  Verifying  : 1:xrdp-0.9.13-1.el7.x86_64                                   2/2

Installed:
  tigervnc-server.x86_64 0:1.8.0-17.el7        xrdp.x86_64 1:0.9.13-1.el7

Complete!

Mit nachfolgendem Befehl kann überprüft werden, welche Inhalte mit den Paket xrdp installiert wurden.

# rpm -qil xrdp
Name        : xrdp
Epoch       : 1
Version     : 0.9.13
Release     : 1.el7
Architecture: x86_64
Install Date: Sat 25 Apr 2020 10:04:09 AM CEST
Group       : Unspecified
Size        : 2201506
License     : ASL 2.0 and GPLv2+ and MIT
Signature   : RSA/SHA256, Wed 11 Mar 2020 03:34:21 PM CET, Key ID 6a2faea2352c64e5
Source RPM  : xrdp-0.9.13-1.el7.src.rpm
Build Date  : Wed 11 Mar 2020 11:53:26 AM CET
Build Host  : buildvm-15.phx2.fedoraproject.org
Relocations : (not relocatable)
Packager    : Fedora Project
Vendor      : Fedora Project
URL         : http://www.xrdp.org/
Bug URL     : https://bugz.fedoraproject.org/xrdp
Summary     : Open source remote desktop protocol (RDP) server
Description :
xrdp provides a fully functional RDP server compatible with a wide range
of RDP clients, including FreeRDP and Microsoft RDP client.
/etc/logrotate.d/xrdp
/etc/pam.d/xrdp-sesman
/etc/sysconfig/xrdp
/etc/xrdp
/etc/xrdp/km-00000406.ini
/etc/xrdp/km-00000407.ini
/etc/xrdp/km-00000409.ini
/etc/xrdp/km-0000040a.ini
/etc/xrdp/km-0000040b.ini
/etc/xrdp/km-0000040c.ini
/etc/xrdp/km-00000410.ini
/etc/xrdp/km-00000411.ini
/etc/xrdp/km-00000412.ini
/etc/xrdp/km-00000414.ini
/etc/xrdp/km-00000415.ini
/etc/xrdp/km-00000416.ini
/etc/xrdp/km-00000419.ini
/etc/xrdp/km-0000041d.ini
/etc/xrdp/km-00000807.ini
/etc/xrdp/km-00000809.ini
/etc/xrdp/km-0000080a.ini
/etc/xrdp/km-0000080c.ini
/etc/xrdp/km-00000813.ini
/etc/xrdp/km-00000816.ini
/etc/xrdp/km-0000100c.ini
/etc/xrdp/km-00010409.ini
/etc/xrdp/openssl.conf
/etc/xrdp/pulse
/etc/xrdp/pulse/default.pa
/etc/xrdp/sesman.ini
/etc/xrdp/xrdp.ini
/etc/xrdp/xrdp_keyboard.ini
/usr/bin/xrdp-dis
/usr/bin/xrdp-genkeymap
/usr/bin/xrdp-keygen
/usr/bin/xrdp-sesadmin
/usr/bin/xrdp-sesrun
/usr/lib/systemd/system/xrdp-sesman.service
/usr/lib/systemd/system/xrdp.service
/usr/lib64/librfxencode.so.0
/usr/lib64/librfxencode.so.0.0.0
/usr/lib64/xrdp
/usr/lib64/xrdp/libcommon.so.0
/usr/lib64/xrdp/libcommon.so.0.0.0
/usr/lib64/xrdp/libmc.so
/usr/lib64/xrdp/libscp.so.0
/usr/lib64/xrdp/libscp.so.0.0.0
/usr/lib64/xrdp/libvnc.so
/usr/lib64/xrdp/libxrdp.so.0
/usr/lib64/xrdp/libxrdp.so.0.0.0
/usr/lib64/xrdp/libxrdpapi.so.0
/usr/lib64/xrdp/libxrdpapi.so.0.0.0
/usr/lib64/xrdp/libxup.so
/usr/libexec/xrdp
/usr/libexec/xrdp/reconnectwm.sh
/usr/libexec/xrdp/startwm-bash.sh
/usr/libexec/xrdp/startwm.sh
/usr/sbin/xrdp
/usr/sbin/xrdp-chansrv
/usr/sbin/xrdp-sesman
/usr/share/doc/xrdp-0.9.13
/usr/share/doc/xrdp-0.9.13/COPYING
/usr/share/doc/xrdp-0.9.13/README.Fedora
/usr/share/doc/xrdp-0.9.13/design.txt
/usr/share/doc/xrdp-0.9.13/faq-compile.txt
/usr/share/doc/xrdp-0.9.13/faq-general.txt
/usr/share/doc/xrdp-0.9.13/file-loc.txt
/usr/share/doc/xrdp-0.9.13/install.txt
/usr/share/man/man1/xrdp-dis.1.gz
/usr/share/man/man5/sesman.ini.5.gz
/usr/share/man/man5/xrdp.ini.5.gz
/usr/share/man/man8/xrdp-chansrv.8.gz
/usr/share/man/man8/xrdp-genkeymap.8.gz
/usr/share/man/man8/xrdp-keygen.8.gz
/usr/share/man/man8/xrdp-sesadmin.8.gz
/usr/share/man/man8/xrdp-sesman.8.gz
/usr/share/man/man8/xrdp-sesrun.8.gz
/usr/share/man/man8/xrdp.8.gz
/usr/share/polkit-1/rules.d/xrdp.rules
/usr/share/xrdp
/usr/share/xrdp/ad24b.bmp
/usr/share/xrdp/ad256.bmp
/usr/share/xrdp/cursor0.cur
/usr/share/xrdp/cursor1.cur
/usr/share/xrdp/sans-10.fv1
/usr/share/xrdp/xrdp24b.bmp
/usr/share/xrdp/xrdp256.bmp
/usr/share/xrdp/xrdp_logo.bmp
/var/log/xrdp-sesman.log
/var/log/xrdp.log

Mit nachfolgendem Befehl kann überprüft werden, welche Inhalte mit den Paket tigervnc-server installiert wurden.

# rpm -qil tigervnc-server
Name        : tigervnc-server
Version     : 1.8.0
Release     : 17.el7
Architecture: x86_64
Install Date: Sat 25 Apr 2020 10:04:10 AM CEST
Group       : User Interface/X
Size        : 521156
License     : GPLv2+
Signature   : RSA/SHA256, Thu 22 Aug 2019 11:44:37 PM CEST, Key ID 24c6a8a7f4a80eb5
Source RPM  : tigervnc-1.8.0-17.el7.src.rpm
Build Date  : Fri 09 Aug 2019 05:04:41 AM CEST
Build Host  : x86-02.bsys.centos.org
Relocations : (not relocatable)
Packager    : CentOS BuildSystem <http://bugs.centos.org>
Vendor      : CentOS
URL         : http://www.tigervnc.com
Summary     : A TigerVNC server
Description :
The VNC system allows you to access the same desktop from a wide
variety of platforms.  This package includes set of utilities
which make usage of TigerVNC server more user friendly. It also
contains x0vncserver program which can export your active
X session.
/etc/sysconfig/vncservers
/usr/bin/vncserver
/usr/bin/x0vncserver
/usr/lib/systemd/system/vncserver@.service
/usr/lib/systemd/system/xvnc.socket
/usr/lib/systemd/system/xvnc@.service
/usr/share/man/man1/vncserver.1.gz
/usr/share/man/man1/x0vncserver.1.gz

Dienst/Deamon-Start einrichten

Um xrdp, welcher als Dienst/Deamon als Hintergrundprozess laufen soll, auch nach einem Neustart des Servers zur Verfügung zu haben, sollte der Dienst/Daemon mit dem Server mit gestartet werden, was mit nachfolgenden Befehlen realisiert werden kann:

# systemctl enable xrdp.service
Created symlink from /etc/systemd/system/multi-user.target.wants/xrdp.service to /usr/lib/systemd/system/xrdp.service.

Eine Überprüfung, ob beim Neustart des Server der xrdp-Dienst/Deamon wirklich mit gestartet wird, kann mit nachfolgendem Befehl erfolgen und sollte eine Anzeige, wie ebenfalls nachfolgend dargestellt ausgeben:

# systemctl list-unit-files --type=service | grep xrdp
xrdp-sesman.service                           disabled
xrdp.service                                  enabled
bzw.
# systemctl is-enabled xrdp.service
enabled

iptables Regel

Damit der xrdp-Dienst/Daemon auch erreichbar ist und nicht die Remote-Desktop-Verbindung vom Paketfilter iptables blockiert wird, muss nachfolgende Regel zum iptables-Regelwerk hinzugefügt werden.

Um die aktuellen iptables-Regeln erweitern zu können, sollten diese erst einmal aufgelistet werden, was mit nachfolgendem Befehl durchgeführt werden kann:

# iptables -L -nv --line-numbers
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out   source       destination         
1     1562 1266K ACCEPT     all  --  *      *     0.0.0.0/0    0.0.0.0/0      state RELATED,ESTABLISHED 
2        0     0 ACCEPT     icmp --  *      *     0.0.0.0/0    0.0.0.0/0           
3        0     0 ACCEPT     all  --  lo     *     0.0.0.0/0    0.0.0.0/0           
4        1    60 ACCEPT     tcp  --  *      *     0.0.0.0/0    0.0.0.0/0      state NEW tcp dpt:22 
5       39  1248 REJECT     all  --  *      *     0.0.0.0/0    0.0.0.0/0      reject-with icmp-host-prohibited 

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out   source       destination         
1        0     0 REJECT     all  --  *      *     0.0.0.0/0    0.0.0.0/0      reject-with icmp-host-prohibited 

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out   source       destination

Nachfolgender Befehl, fügt folgende iptables-Regel dem iptables-Regelwerk nach der Position 5 hinzu, ohne das der Paketfilter angehalten werden muss:

  • -A INPUT -p tcp --dport 3389 -j ACCEPT

und hier die Befehle:

# iptables -I INPUT 5 -p tcp --dport 3389 -j ACCEPT

Ein erneute Abfrage des iptables-Regelwerts, sollte dann nachfolgend dargestellte Ausgabe ergeben, was mit folgendem Befehl durchgeführt werden kann:

# iptables -L -nv --line-numbers
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out   source       destination         
1       70  5752 ACCEPT     all  --  *      *     0.0.0.0/0    0.0.0.0/0      state RELATED,ESTABLISHED 
2        0     0 ACCEPT     icmp --  *      *     0.0.0.0/0    0.0.0.0/0           
3        0     0 ACCEPT     all  --  lo     *     0.0.0.0/0    0.0.0.0/0           
4        0     0 ACCEPT     tcp  --  *      *     0.0.0.0/0    0.0.0.0/0      state NEW tcp dpt:22 
5        0     0 ACCEPT     tcp  --  *      *     0.0.0.0/0    0.0.0.0/0      tcp dpt:3389 
6        0     0 REJECT     all  --  *      *     0.0.0.0/0    0.0.0.0/0      reject-with icmp-host-prohibited 

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out   source       destination         
1        0     0 REJECT     all  --  *      *     0.0.0.0/0    0.0.0.0/0      reject-with icmp-host-prohibited 

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out   source       destination

Die neue Zeile ist an Position 5 (INPUT) zu sehen, hier nachfolgend zur Verdeutlichung noch einmal dargestellt (nur relevanter Ausschnitt):

...
5        0     0 ACCEPT     tcp  --  *      *     0.0.0.0/0    0.0.0.0/0      tcp dpt:80
...

Um diese iptables-Regel dauerhaft, auch nach einem Neustart des Server, weiterhin im iptables-Regelwerk zu speichern, muss nachfolgend dargestellter Befehl abschließend noch ausgeführt werden:

# /usr/sbin/iptables-save > /etc/sysconfig/iptables 

Erster Start

Nachdem alle vorhergehenden Installationsschritte und Konfigurationsschritte erfolgreich durchgeführt worden sind, kann der xrdp-Dienst/Daemon mit nachfolgendem Befehle gestartet werden:

# systemctl start xrdp.service

Nachfolgender Befehl kann zur Überprüfung, ob der xrdp-Dienst/Daemon gestartet wurde, genutzt werden:

# systemctl status xrdp.service
● xrdp.service - xrdp daemon
   Loaded: loaded (/usr/lib/systemd/system/xrdp.service; enabled;
vendor preset: disabled)
   Active: active (running) since Sat 2020-04-25 10:28:49 CEST; 19s ago
     Docs: man:xrdp(8)
           man:xrdp.ini(5)
 Main PID: 5247 (xrdp)
   CGroup: /system.slice/xrdp.service
           └─5247 /usr/sbin/xrdp --nodaemon

Apr 25 10:28:49 pml035 systemd[1]: Started xrdp daemon.
Apr 25 10:28:49 pml035 xrdp[5247]: (5247)(140127764486592)[INFO ] starting ...47
Apr 25 10:28:49 pml035 xrdp[5247]: (5247)(140127764486592)[INFO ] address [... 1
Apr 25 10:28:49 pml035 xrdp[5247]: (5247)(140127764486592)[INFO ] listening....0
Apr 25 10:28:49 pml035 xrdp[5247]: (5247)(140127764486592)[INFO ] xrdp_list...ne
Hint: Some lines were ellipsized, use -l to show in full.

Konfiguration

~/.Xclients

:!: WICHTIG - Nachfolgende Befehle bitte als Benutzer ausführen unter dessen eine Anmeldung am Remote-Gerät durchgeführt werden soll!

Damit nicht nachfolgende Fehlermeldung erscheint,

xrdp - Fehler

ist es bei manchen GDM (Graphical Desktop Manager), wie z.B. MATE Desktop notwendig, falls nicht schon vorhanden, die nachfolgende Konfigurationsdatei im jeweiligen $HOME-Verzeichnis des entsprechenden Benutzers, unter dessen eine Anmeldung am Remote-Gerät durchgeführt werden soll anzulegen, was mit nachfolgendem Befehl durchgeführt werden kann:

$ touch ~/.Xclients

Der Inhalt der Konfigurationsdatei sollte dann z.B. für den MATE Desktop wie folgt aussehen und kann mit nachfolgendem Befehl erstellt werden:

$ echo "mate-session" > ~/.Xclients

Damit die Konfigurationsdatei auch „ausgeführt“ werden kann, sind nachfolgende Dateirechte mit nachfolgendem Befehl zu setzen:

$ chmod a+x ~/.Xclients

Anschließend sollte die Konfigurationsdatei wie folgt im Dateisystem angelegt sein:

$ ls -l ~/.Xclients 
-rwxrwxr-x 1 klaus klaus 13 Apr 25 10:08 /home/klaus/.Xclients

Erster Verbindungsuafbau

Nachfolgend soll beschrieben werden, wie von einem Windows™ PC mittels Microsoft™ Remote Desktop Client ein Verbindung zu einem CentOS-7-Server eine Verbindung aufgebaut werden kann.

Microsoft™ Remote Desktop Client

Nach dem erfolgreichen Satrt des Microsoft™ Remote Desktop Client, sollte nachfolgender Bildschirm erscheinen:

Microsoft™ Remote Desktop Client - Start

Hier kann für weitere Konfigurationen die [Optionen einblenden]-Schaltfläche gedrückt werden, wonach sich der Microsoft™ Remote Desktop Client wie folgt am Bildschirm darstellt:

Microsoft™ Remote Desktop Client - Start - Optionen einblenden

Hier wird unter

Feld Wert Beschreibung
Computer: 192.168.0.35 Die IP-Adresse, oder der DNS-Name des Remote-Geräts eingetragen
Benutzername: klaus Der Benutzername des Benutzer, unter dessen die Anmeldung erfolgen soll eingetragen.

Durch drücken der [Verbinden]-Schaltfläche, sollte dann in diesem Fall nachfolgender Dialog erscheinen:

Microsoft™ Remote Desktop Client - Verbindung - Zertifikatshinweis

:!: HINWEIS - Dieser Hinweis erscheint, da hier das Standard-Zertifikat von xrdp zur Verwendung kommt und dieses nicht vom Microsoft™ Remote Desktop Client als Vertrauenswürdig anerkannt wird.

Zu diesem Zeitunkt der Installation kann hier die [Ja]-Schaltfläche gedrückt werden, wonach dann nachfolgender Bildschirm erscheinen sollte:

Microsoft™ Remote Desktop Client - Verbindung - Login

Hier wird unter

Feld Wert Beschreibung
username klaus Der Benutzername des Benutzer, unter dessen die Anmeldung erfolgen soll eingetragen.
password ★★★ Das Passwort des Benutzer, unter dessen die Anmeldung erfolgen soll eingetragen.

Durch drücken der [OK]-Schaltfläche wird die Verbindung dann Aufgebaut.

Microsoft™ Remote Desktop Client - Eigene Auflösung

Falls die im Microsoft™ Remote Desktop Client unter dem [Anzeige]-Reiter im [Anzeigekonfiguration]-Bereich erscheinende Auswahl an Bildschirmauflösungen nicht reichen, kann mit nachfolgendem Befhel in der Microsoft™ Eingabeaufforderung den Microsoft™ Remote Desktop Client mit einer angepassten Bildschirmauflösung für das Remote-Gerät starten, wie nachfolgende Bildschirmkopien zeigen:

|Microsoft™ Eingabeaufforderung - Start - Microsoft™ Remote Desktop Client - mit eigener Bildschirmauflösung

Hier wird unter

Programm Optionen Beschreibung
mstsc.exe /w:1600 /h:900 Microsoft™ Remote Desktop Client mit dem entsprechenden Bildschirmauflösungsparmetern.
- /w:1600 = Width (Breite) - 1600 Pixel
- /h:900 = Height (Höhe) - 900 Pixel

Nach dem erfolgreichen Satrt des Microsoft™ Remote Desktop Client, sollte nachfolgender Bildschirm erscheinen:

Microsoft™ Remote Desktop Client - Start

Hier kann für weitere Konfigurationen die [Optionen einblenden]-Schaltfläche gedrückt werden, wonach sich der Microsoft™ Remote Desktop Client wie folgt am Bildschirm darstellt:

Microsoft™ Remote Desktop Client - Start - Optionen einblenden

Hier wird unter

Feld Wert Beschreibung
Computer: 192.168.0.35 Die IP-Adresse, oder der DNS-Name des Remote-Geräts eingetragen
Benutzername: klaus Der Benutzername des Benutzer, unter dessen die Anmeldung erfolgen soll eingetragen.

Im Microsoft™ Remote Desktop Client kann nun unter dem [Anzeige]-Reiter im [Anzeigekonfiguration]-Bereich erscheinende Auswahl an Bildschirmauflösungen den zuvor via Microsoft™ Eingabeaufforderung gestarteten Microsoft™ Remote Desktop Client mit dem entsprechenden Bildschirmauflösungsparmetern angezeigt werden, was nachfolgende Bildschirmkopie zeigt:

Microsoft™ Remote Desktop Client - mit eigener Bildschirmauflösung

Durch drücken der [Verbinden]-Schaltfläche, sollte dann in diesem Fall nachfolgender Dialog erscheinen:

Microsoft™ Remote Desktop Client - Verbindung - Zertifikatshinweis

:!: HINWEIS - Dieser Hinweis erscheint, da hier das Standard-Zertifikat von xrdp zur Verwendung kommt und dieses nicht vom Microsoft™ Remote Desktop Client als Vertrauenswürdig anerkannt wird.

Zu diesem Zeitunkt der Installation kann hier die [Ja]-Schaltfläche gedrückt werden, wonach dann nachfolgender Bildschirm erscheinen sollte: 
Microsoft™ Remote Desktop Client - Verbindung - Login- Eigene Bildschirmauflösung

Hier wird unter

Feld Wert Beschreibung
username klaus Der Benutzername des Benutzer, unter dessen die Anmeldung erfolgen soll eingetragen.
password ★★★ Das Passwort des Benutzer, unter dessen die Anmeldung erfolgen soll eingetragen.

Durch drücken der [OK]-Schaltfläche wird die Verbindung dann Aufgebaut.

Cookies helfen bei der Bereitstellung von Inhalten. Durch die Nutzung dieser Seiten erklären Sie sich damit einverstanden, dass Cookies auf Ihrem Rechner gespeichert werden. Weitere Information
tachtler/xrdp.txt · Zuletzt geändert: 2020/04/25 11:37 von klaus