Schlagwort-Archive: OpenSSL Verschlüsselung

OpenSSL umfasst Implementierungen der Netzwerkprotokolle und verschiedener Verschlüsselungen sowie das Programm openssl für die Kommandozeile zum Beantragen,

Mit xrdp Remote-desktop auf Linux

XRDP Installation für Ubuntu

XRDP auf Linux für Windows Remotedesktop Clients

Mit xrdp können Windows-Benutzer genauso einfach auf Linux-Systeme grafisch zugreifen wie auf andere Windows-Maschinen, und zwar am besten noch mit ein und derselben Anwendung. mit mstsc.exe, dem Windows Remotedesktop Client.

Bei xrdp handelt es sich um eine Open-Source-Implementierung des Remote-Desktop-Protokolls, das die Windows Terminal Services (RDS) verwenden, um sich mit Windows-Desktops zu verbinden. Das xrdp-Paket bringt das RDP-Protokoll auf den Linux-Rechner, indem es einen X-Server bereitstellt, der Verbindungen vom Windows-Terminalserver-Clients (mstsc) akzeptiert.

Nachdem sich der Anwender verbunden und authentifiziert hat, erhält er auf dem Windows Computer einen virtuellen X11-Desktop. Der Vorteil an der xRDP-Lösung ist, dass es keinen X-Server auf dem Windows-Rechner erfordert, und das kein zusätzlicher Client benötigt wird, wie beispielsweise der VNC Viewer.

Der xrdp-Server kann mit den Packet-Manager apt-get und yum oder dnf für die entsprechenden Linux Distribution aufgesetzt werden. sudo apt-get install xrdp

Dies sind die Schritte zur Installation von xrdp aus dem Git Repository von neutrinolabs. Der Build Prozess hier beschrieben auf Ubuntu 17.10 (Artful Aardvark).

INSTALLATION

Erst wird das Linux-System vorbereitet, hier ist es Ubuntu Mate 17.10, es werden die Abhängigkeiten installiert: (alles auf einer Zeile)

sudo apt-get install -y git autoconf libtool pkg-config gcc g++ make libssl-dev libpam0g-dev libjpeg-dev libx11-dev libxfixes-dev libxrandr-dev flex bison libxml2-dev intltool xsltproc xutils-dev python-libxml2 g++ xutils libfuse-dev libmp3lame-dev nasm libpixman-1-dev xserver-xorg-dev

Die Source-Pakete aus den Github Quellen holen:

BD=`pwd`
mkdir -p "${BD}"/git/xrdpbuild
cd "${BD}"/git/xrdpbuild
wget https://github.com/neutrinolabs/xrdp/releases/download/v0.9.5/xrdp-0.9.5.tar.gz
wget https://github.com/neutrinolabs/xorgxrdp/releases/download/v0.2.5/xorgxrdp-0.2.5.tar.gz

Erzeugen und installieren der xrdp-Server Binaries:

cd "${BD}"/git/xrdpbuild
tar xvfz xrdp-0.9.5.tar.gz
cd "${BD}"/git/xrdpbuild/xrdp-0.9.5
./bootstrap
./configure --enable-fuse --enable-mp3lame --enable-pixman
make
sudo make install
sudo ln -s /usr/local/sbin/xrdp{,-sesman} /usr/sbin

Erstellen und installieren von xorgxrdp:

cd "${BD}"/git/xrdpbuild
tar xvfz xorgxrdp-0.2.5.tar.gz
cd "${BD}"/git/xrdpbuild/xorgxrdp-0.2.5
./bootstrap
./configure
make
sudo make install

Den Daemon xrdp-Server starten:

sudo systemctl enable xrdp
sudo service xrdp start

Ebenso kann xrdp aus dem Github Source installieren werden. Build mit Git clone:

git clone --recursive https://github.com/neutrinolabs/xrdp
cd xrdp
./bootstrap
./configure
make
sudo make install

Die Konfiguration kann ggf. angepasst werden:

sudo vi /etc/xrdp/xrdp.ini
sudo vi /etc/xrdp/sesman.ini

Die Remotedesktop Verbindung zum Linux xrdp-Server kann nun aufgebaut werden:

Die Remotedesktop Verbindung zum Linux xrdp-Server
xrdp desktop

ANHANG

Da Xorg X11 nicht mehr als root gestartet wird, den X11/Xwrapper von console auf anybody wechseln.

sudo sed -i 's/allowed_users=console/allowed_users=anybody/' /etc/X11/Xwrapper.config

Dies kann auch mit dem dpkg Console-UI bewerkstelligt werden.

sudo dpkg-reconfigure xserver-xorg-legacy

Möchte man eine andere Desktop Umgebung, kann der Session-Manager gewechselt werden. Hier die X11 Konfiguration für die Mate Desktop Umgebung.

echo mate-session> ~/.Xclients
chmod +x ~/.Xclients
systemctl restart xrdp.service

Zurvor muss die alternative Desktop Umgebung installiert werden, hier bei fedora.

dnf install @mate-desktop

TROUBLESHOOTING

Beim Troubleshooting können die Log-Protokolle geöffnet werden:

sudo tail -f /var/log/xrdp.log -f /var/log/xrdp-sesman.log
systemctl status xrdp.service -l
journalctl -xe

Bei Abbruch oder einfrieren der RDP Session, kann allow_channels=true auf false gesetzt werden.

sudo sed -i 's/allow_channels=true/allow_channels=false/' /etc/xrdp/xrdp.ini
service xrdp restart

Zu Testzwecke kann SELinux deaktiviert werden.

sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
/usr/sbin/getenforce

Falls die Firewall den RDP Port verwirft muss der port für RDP zugelassen werden.

firewall-cmd --permanent --zone=public --add-port=3389/tcp
firewall-cmd --reload

Firewall soll RDP Ports durchlassen.

sudo ufw allow 3398
sudo ufw allow 5901

Erscheint nach der Anmeldung ein schwarzer Bildschirm gefolgt mit Error Meldung:

connection to sesman ip 127.0.0.1 port 3350
sesman connect ok
sending login info to session manager, please wait...
login successful for display 11
VNC started connecting
VNC connecting to 127.0.0.1 5911
VNC error - problem connecting
some problem

Hilft das anlegen eines neuen Benutzers, anschließend mit diesem über RDP anmelden.

useradd newuser
passwd secret

Das erzeugen eines neuen Zertifikates kann ebenfalls nützlich sein.

cd /etc/xrdp
openssl req -x509 -newkey rsa:2048 -nodes -keyout key.pem -out cert.pem -days 365

Hinweis: Als Common Name der aktuell gültige hostname verwenden.

Das Zertifikat in der xrdp Konfiguration /etc/xrdp/xrdp.ini aktivieren.

security_layer=negotiate
crypt_level=high
certificate=cert.pem
key_file=key.pem
ssl_protocols=TLSv1, TLSv1.1, TLSv1.2

Quellen Link: github.com/neutrinolabs/xrdp/

Selbst signierte Zertifikate mit OpenSSL Erstellen

OpenSSL Zertifikate erstellen, signieren, prüfen und verwalten

OpenSSL ist ein vielseitiges Kommandozeilen-Tool, das für eine Vielzahl von Kryptographischen Aufgaben im Zusammenhang mit Public Key Infrastructure (PKI) und HTTPS (HTTP über TLS) verwendet werden kann.

Dieses Tutorial zeigt die Anwendung von OpenSSL für Zertifikate die für asymmetrische Verschlüsselung in Beta und Testaufgaben eingesetzt werden, die für interne oder in Entwicklungsumgebungen eingesetzt werden. Die mit kosten verbunden, CSR Certificate Signing Request Zertifikate lohnen sich für Testzwecke nicht die von einem Trusted CA Zertifikatsaussteller ausgestellt werden. Hierzu in einem Beispiel die Generierung eines privaten Schlüssels mit Zertifikat Ausstellung und dessen Signierung.

Open Secure Socket Layer protocol

Selbst signiertes Zertifikat erstellen

openssl genrsa -out priv.key 4096
openssl req -new -nodes -sha256 -key priv.key -out cert.csr
openssl x509 -req -sha256 -days 3650 -in cert.csr -signkey priv.key -out cert.crt

Bei diesem Beispiel wird ein Privater Schlüssel mit einer länge von 4096 bit generiert, dieser 10 Jahre gültig ist, es werden die X509 Distinguished Key Identifier definiert, mit der Verschlüsselung des SHA256 Algorithmus, abschliessend wird das Zertifikat selbst signiert.

PS C:\temp> openssl genrsa -out priv.key 4096
Generating RSA private key, 4096 bit long modulus
................................++
..................................++
e is 65537 (0x010001)
PS C:\temp> openssl req -new -nodes -sha256 -key priv.key -out cert.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:CH
State or Province Name (full name) [Some-State]:ZRH
Locality Name (eg, city) []:ZURICH
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Cyber Lab Ltd.
Organizational Unit Name (eg, section) []:DevOps Root CA Cert Authority
Common Name (e.g. server FQDN or YOUR name) []:cyber.foo.org
Email Address []:support@cyber.foo.org

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:1234
An optional company name []:1234

Das so generierte Self-signed certificat dient zur Kryptographischen Verschlüsselung für HTTPS / TLS Server und Client, Code Signing, IP End Point Security (SSL-VPN) oder für S/MIME – E-Mail.

Das Zertifikat cert.crt wird anschliessend im Zertifikatspeicher importiert, dies zu Vertrauenswürdige Stammzertifizierungsstellen und zu den Eigenen Zertifikate.

Zertifikat-Snap-In
Abbildung: Zertifikat-Snap-In

OpenSSL – Open Secure Socket Layer protocol gehört bei den meisten Linux Distributionen zum Standard, die Windows Binaries stehen auf sourceforge zur Verfügung.

XCA – X Certificate Key Management

Wer mit dem OpenSSL Kommandozeilen-Tool nicht vertraut ist, kann das Tool X Zertifikat – xca verwenden, dieses in einer GUI sämtliche Optionen bietet.

X Zertifikat und Key Management ist eine Schnittstelle für die Verwaltung von asymmetrischen Schlüsseln wie RSA oder DSA. Es ist für die Erstellung und Signierung von Zertifikaten gedacht. Für die kryptographischen Operationen wird die OpenSSL-Bibliothek verwendet.

Features

  • Start own PKI and create all kinds of certificates, requests or CRLs
  • Import and export in any format like PEM, DER, PKCS#7, PKCS#12
  • Use them for your IPsec, OpenVPN, HTTPs or any other certificate based setup
  • Manage your Smart-Cards via PKCS#11 interface
  • Export certificates and requests to a OpenSSL config file
  • Create Subject- and/or Extension- templates to ease issuing similar certs
  • Convert existing certificates or requests to templates
  • Get the broad support of x509v3 extensions as flexible as OpenSSL but user friendlier
  • Adapt the Columns to have your important information at a glance

Download bei sourceforge

X-Certificate-Key-management
Abbildung: X Certificate and Key management

Bevor Schlüssel und Zertifikate generiert werden können, muss eine Datenbank mit <Ctrl+N> angelegt werden. Nach dem generieren eines Privaten Schlüssels kann ein neues Zertifikat erzeugt werden. Die Privaten Schlüssel sollten Passwort geschützt aufbewahrt werden. Wird ein Privater Schlüssel für unautorisierte verfügbar, ist das Zertifikat nicht mehr sicher und muss ersetzt werden.

Schlüssel und Zertifikat überprüfen

Privat Key Prüfen und ausgeben

openssl rsa -check -in priv.key

Zertifikat anzeigen

openssl x509 -noout -text -in cert.crt

Certificate Signing Request Prüfen und ausgeben

openssl req -text -noout -verify -in cert.csr

Überprüfung des Privaten Schlüssels, des CSR und des Zertifikates auf Echtheit.

openssl rsa -noout -modulus -in priv.key | openssl md5
openssl x509 -noout -modulus -in cert.crt | openssl md5
openssl req -noout -modulus -in cert.csr | openssl md5

Wenn die Ausgabe jedes Befehls identisch ist, ist die Wahrscheinlichkeit sehr hoch, dass das Zertifikat und der CSR mit dem private Schlüssel verwandt sind.

Fazitz

OpenSSL ist das vielseitige Swiss Army Knife, das für eine Vielzahl von Kryptographischen Aufgaben für asymmetrische Verschlüsselung eingesetzt werden kann, von der Generierung eines privaten Schlüssels mit Zertifikat Ausstellung und dessen Signierung, bis hin zur Überprüfung auf Authentizität mit Verbindungstest der Konnektivität.