In diesem Artikel wird xRDP installiert, um einfach von Windows auf die grafische Oberfläche eines Linux Computers zuzugreifen. In diesem konkreten Beispiel wird CentOS 7 oder CentOS 8 mit installiertem Gnome genutzt.

Übersicht in Stichpunkten

  1. Vorbereitung
  2. Installation von xRDP
    • Freischaltung in Firewall
    • Freischaltung in SELinux
  3. Erstellen eines eigenen Zertifikates
  4. Policy für Colord erstellen

Vorbereitung - Installation EPEL

xRDP und TigerVNC finden wir im EPEL Repository. Dies muss, sofern nicht bereits geschehen, zur Benutzung eingebunden werden.

EPEL (Extra Packages for Enterprise Linux) ist ein Community basiertes Open-Source Projekt von Fedora um hochqualitative Zusatzsoftware für verschiedene Linuxdistributionen wie RHEL (Red Hat Enterprise Linux), CentOS, and Scientific Linux bereitzustellen.

Von den folgenden 3 Befehlen zeigen die ersten Beiden Informationen zu EPEL an, während der dritte, als root ausgeführt, die eigentliche Installation startet.

# yum search epel-release
# yum info epel-release
# sudo yum install epel-release

Eine Übersicht der in EPEL enthaltenen Software listet einer der folgenden Befehle auf.

# dnf --disablerepo="*" --enablerepo="epel" list available
OR
# yum --disablerepo="*" --enablerepo="epel" list available

Installation von xRDP

Auch wenn bisher nur von xRDP die Rede war, wird jedoch auch TigerVNC benötigt, da xRDP dies nutzt um mit der eigentlichen GUI (hier Gnome) zu kommunizieren.

Beides zusammen wird wir folgt installiert.

# sudo yum -y install xrdp tigervnc-server

Freischaltung in Firewall

Noch verhindert die in CentOS standardmäßig aktivierte lokale Firewall den Zugriff auf xRDP. Folgende zwei Befehle schalten dies jedoch frei. Wenn die Freigabe nur für eine bestimmte Firewall- Zone gelten soll, so ist Diese anzugeben. Hier wird es für alle Zonen freigeschaltet.

sudo firewall-cmd --permanent --add-port=3389/tcp
sudo firewall-cmd --reload

Freischaltung in SELinux

Da SELinux (Security-Enhanced Linux) standardmäßig in CentOS aktiviert ist, muss xRDP auch hier freigeschaltet werden. Die erfolgt mittels folgender zwei Befehle.

sudo chcon --type=bin_t /usr/sbin/xrdp
sudo chcon --type=bin_t /usr/sbin/xrdp-sesman

Nun muss xRDP noch gestartet werden. Dies übernimmt der folgende, erste Befehl. Der zweite sorgt dafür, dass xRDP auch beim Systemstart automatisch gestartet wird.

sudo systemctl start xrdp
sudo systemctl enable xrdp

Ab hier funktioniert die Anmeldung am System per RDP.

Remotedesktopverbindung   Remotedesktopverbindung

Die weiteren Punkte sind optional (Zertifikat) oder werden aber nur beim Auftreten entsprechener Meldung (Colord) benötigt.

Erstellen eines eigenen Zertifikates

xRDP bringt sein eigenes selbstsigniertes Zertifikat mit.

# ls -l /etc/xrdp/*.pem
-r--------. 1 root root 1082  8. Okt 07:41 /etc/xrdp/cert.pem
-r--------. 1 root root 1708  8. Okt 07:41 /etc/xrdp/key.pem

Dies ist bei Bedarf gegen ein Eigenes auszutauschen. In Unternehmen sollte dies ein, von der Unternehmens-PKI signiertes sein. Für den privaten Gebrauch reicht in der Regel ein selbstsigniertes Zertifikat.

Sollte der Rechner aus dem Internet erreichbar sein, könnte natürlich auch ein Zertifikat von Let's Encrypt genutzt werden. Dies ist aber nicht Bestandteil dieser Anleitung.

Folgende wird zuerst ein privater Schlüssel erzeugt. Dieser wird im zweiten Befehl genutzt um eine Zertifikatssignierungsanfrage (CRS) zu erstellen. Diese wird auch benötigt wenn eine Externe oder Unternehmens-PKI das Zertifikat ausstellen soll. Daher sollten die Abfragen sinnig beantwortet werden. Der dritte Befehl erstellt, falls gewünscht, dann ein 3 Jahre gültiges, selbstsigniertes Zertifikat.

Sinnvollerweise sollte hierfür ein separates Verzeichnis genommen werden!

openssl genrsa -out key.pem 2048
openssl req -new -sha256 -key key.pem -out csr.csr
openssl req -x509 -sha256 -days 1095 -key key.pem -in csr.csr -out cert.pem

Nun müssen die Dateien noch an die passende Stelle kopiert und berechtigt werden. Anschließend ist xRDP neu zu starten.

sudo chown root.root *.pem
sudo chmod 400 *.pem
sudo cp key.pem /etc/xrdp/key.pem
sudo cp cert.pem /etc/xrdp/cert.pem
sudo systemctl restart xrdp

Policy für Colord erstellen

Beim Anmelden an xRDP mit einem "normalen" Benutzer kommt es zumindest unter Gnome zu einem Popup mit folgendem Inhalt: "Authentication is required to create a color managed device". Sofern man sudo Rechte besitzt kann man sich hier (ggfs. mehrfach) anmelden.

Authentication Required Fenster

Es gibt aber auch eine elegantere Lösung Quelle. In aller Regel sollen auch alle Remoteuser des Systems die Rechte mit Colord zu interagieren. Hierzu muss eine Konfigurationsdatei erstellt werden.

Unter CentOS ist dies die Datei: /etc/polkit-1/localauthority/50-local.d/45-allow-colord.pkla

[Allow Colord all Users]
Identity=unix-user:*
Action=org.freedesktop.color-manager.create-device;org.freedesktop.color-manager.create-profile;org.freedesktop.color-manager.delete-device;org.freedesktop.color-manager.delete-profile;org.freedesktop.color
ResultAny=no
ResultInactive=no
ResultActive=yes

Hiernach den Dienst polkit mit folgendem Befehl neu starten. Das lästige Anmeldefenster für Remoteuser sollte danach nicht mehr auftauchen.

systemctl restart polkit