Inhaltsverzeichnis
xrdp CentOS 7
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:
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,
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:
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:
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:
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:
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:
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:
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:
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:
Durch drücken der [Verbinden]-Schaltfläche, sollte dann in diesem Fall nachfolgender Dialog erscheinen:
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:
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.