Die Secure Shell, kurz ssh, wird für den Fernzugriff auf Server und zur Datenübertragung von Dateien verwendet. Für IBM i wurde ssh mittels OpenSSH implementiert und wird über das Lizenzprogramm 5733-SC1 installiert. Standardmäßig ist ssh über Port 22 erreichbar. Da ssh ein sehr oft verwendetes Protokoll in verschiedenen Betriebssystemen ist, ist es ein Standardziel in vielen potentiellen Angriffsszenarien.
Wer es ausprobieren möchte, kann einen Linuxserver mit einer öffentlichen Adresse ins Internet stellen und nach einem Tag die Sicherheitsprotokolle analysieren. Da es den root User unter IBM i nicht gibt, ist jeder Anmeldeversuch von root unter IBM i zwar zum Scheitern verurteilt, aber wer sich auskennt, kann es mit QSECOFR versuchen.
Eine Option ist sicherlich ssh aus Sicherheitsgründen erst gar nicht zu starten. Anderseits gibt es Tools, wie VSCode mit Code for i oder sftp., die ohne das ssh Protokoll nicht verwendet werden können.
Des Weiteren wird bei Nutzung von Open-Source Software unter IBM i die 5250 Emulationen (über QSH oder QP2TERM) nicht empfohlen. Ein Grund dafür ist, dass Open Source meist ein VT100 Terminal erwartet.
Insofern ergänzend zu Maßnahmen im Netzwerkbereich, MUSS ssh auch unter IBM i abgesichert werden.
Im Weiteren werden grundlegende Sicherheitsmaßnahmen beschrieben:
- Allgemeine Empfehlungen zur Einrichtung von ssh Benutzerumgebungen
- Paßwort-lose Anmeldung über Keys
- Einschränkung des Benutzerkreises mittels sshd_config
Darauf aufbauend werden einige Open Source Tools vorgestellt.
Es stehen viele ssh Clients für unterschiedliche Umgebungen zur Verfügung. Da wir mittels dem X11 Protokoll auch grafische Benutzeroberflächen von Open Source Tools nutzen wollen, wird für alle Screenshots durchgehend MobaXterm verwendet, das auch in einer kostenfreien Variante zur Verfügung steht. Alternativ kann man auch Putty verwenden. Als Client Umgebung wird MS Windows 11 benutzt.
Allgemeine Empfehlungen zur Einrichtung von ssh Benutzerumgebungen
Nach dem Start von sshd mittels STRTCPSVR *SSHD auf einer CL Befehlszeile kann nach der Konfiguration der Session die erste Anmeldung erfolgen. Dazu wird MobaXterm gestartet und in der Auswahl “Session” SSH angeklickt. In dem sich nun öffnenden Fenster genügt es die IP Adresse oder den Namen seiner IBM i Instanz einzugeben.
Quelle: ReetmeyerNach Klick auf “OK” öffnet sich ein Reiter und die Anmeldung kann standardmäßig mit jeden IBM i User Profil über Namen und Passwort erfolgen. (Unter Windows oder MacOS könnte man auch in einem Terminalfenster einfach mit ssh user@system die Kommunikation beginnen.)
Quelle: ReetmeyerSollte das IBM i-Benutzerprofil länger als 8 Zeichen ist und IBM i 7.3 oder älter benutzt werden, so muss voher die Umgebungsvariable PASE_USRGRP_LIMITED definiert werden. Ein Systemadministrator könnte dies beispielsweise systemweit einstellen:
ADDENVVAR ENVVAR(PASE_USRGRP_LIMITED) WERT(‘N’) EBENE(*SYS)
Nach erfolgter Anmeldung sollte als Antwort auf “pwd” (print work directory) der Pfad des Home Verzeichnisses des Users, wie im Benutzerprofil angegeben, ausgegeben werden. Sollte dies nicht der Fall sein, kann dies mit “mkdir /home/USERPRF” erstellt werden.
Quelle: ReetmeyerNun empfiehlt es sich die ssh Umgebung auf Bash umzustellen:
/QOpenSys/pkgs/bin/chsh -s /QOpenSys/pkgs/bin/bash
(Bash ist ein komfortabler interaktiver Befehlsinterpreter und eine Befehlsprogrammiersprache, die im Unix/Linux Umfeld sehr verbreitet ist. Als Analogie kann CL in IBM i betrachtet werden.) Um Eingabefehler in der aktuellen Shell zu vermeiden, sollte der obere Befehl kopiert und mit der rechten Maustaste eingefügt werden. (Wer es ausprobieren möchten kann gern vor der Umstellung auf die Bash die Löschtaste für eine Korrektur in einem Befehl ausprobieren.)
Danach mit “exit” abmelden und die Session z.B. mit “R” neu starten.
Quelle: ReetmeyerDamit die Arbeitsumgebung die Open-Source Tools findet, muss die Umgebungsvariablen PATH entsprechend konfiguriert werden. (Als Analogie zum PATH kann die Bibliotheksliste in IBM i betrachtet werden.).
Kopieren Sie die nachfolgenden Befehle einzeln oder, da die Befehle zeilenweise ausgeführt werden, als Block und führen Sie diese in der ssh Session aus:
- touch $HOME/.profile
- setccsid 1208 $HOME/.profile
- echo ‘PATH=/QOpenSys/pkgs/bin:$PATH’ >> $HOME/.profile
- echo ‘export PATH’ >> $HOME/.profile
Quelle: ReetmeyerBeenden Sie danach mit “exit” die SSH-Sitzung und starten nach der erneuten Anmeldung den folgenden Befehl: which bash
Quelle: Reetmeyerworauf die Antwort “/QOpenSys/pkgs/bin/bash” sein sollte.
Mit den Befehlen “system” und “cl” können CL Befehle auch unter ssh ausgeführt werden, z.B. um einen neuen IBM i User zu erstellen.
Quelle: ReetmeyerSelbstverständlich funktioniert das nur, wenn der Ausführende auch über die nötigen IBM i Berechtigungen verfügt. Wer also bzgl. unzureichend vergebenen Objektrechten etc. Probleme hat, sollte sich schnellstmöglich auch darum kümmern. Auf jeden Fall ist dies ein weiterer Grund, um ssh Zugänge abzusichern.
Paßwort-lose Anmeldung über Keys
Möchten Sie sich per SSH in ein System einloggen, ohne Ihr Passwort einzugeben? Dazu können Sie in ssh ein public/private Key-Paar verwenden, um sich beim System zu authentifizieren.
Geben Sie dazu in einer ssh-Session
ssh-keygen
ein und drücken Sie mehrmals <ENTER> bis Sie wieder einen Prompt sehen. (Die sogenannte Passphrase kann dabei wie ein Paßwort zur Absicherung der erzeugten Keys angesehen werden. Zur Vereinfachung belassen wir es bei dem Default und definieren keine.)
Quelle: ReetmeyerDamit wurde ein Private-Key id_rsa und der dazugehörige Public-Key id_rsa.pub im Unterverzeichnis .ssh erzeugt. Da die zukünftige Anmeldung später über den Private-Key erfolgen soll, muss dieser in die Umgebung des SSH-Clients kopiert werden. Auch dabei unterstützt MobaXterm.
Quelle: ReetmeyerÖffnen Sie auf der linken Seite das .ssh Verzeichnis und ziehen Sie die Datei id_rsa in ein Verzeichnis Ihrer lokalen Windows Instanz, z.B. C:\Users\<MeinWindowsUser>\.ssh .
Zum Verständnis, alles was mit dem Private Key verschlüsselt wird, kann nur mit den dazugehörigen Public Key entschlüsselt werden und umgekehrt. Daher genügt es nur einen Teil des Schlüsselpaares, den Private Key, geheim zu halten. Obwohl das .ssh Verzeichnis geschützt isr, empfiehlt es sich den Private Key, nach erfolgtem Upload in seine Client Umgebung, im Home Verzeichnis seiner IBM i Instanz zu löschen. Sollte das Key-Paar auch auf anderen Systemen verwendet werden, muss es vollständg gesichert werden.
Bevor wir uns damit anmelden können, muß noch einiges in der IBM i Instanz konfiguriert werden:
- cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys
- rm $HOME/.ssh/id_rsa.pub
- chown “$(/QOpenSys/usr/bin/id -u -n)” $HOME
- chown -R “$(/QOpenSys/usr/bin/id -u -n)” $HOME/.ssh
- chmod 0755 $HOME
- chmod 0700 $HOME/.sshchmod 0644 $HOME/.ssh/authorized_keys
Quelle: ReetmeyerJetzt müssen wir nur noch MobaXterm konfigurieren. Klicken Sie dazu links auf den Stern und öffnen Sie mit der rechten Maustaste das Menu Ihrer Session. Wählen Sie dort “Edit Session” aus. In dem Reiter “Advanced Settings” tragen Sie nun den Benutzernamen und den Pfad zum Private Key ein.
Quelle: ReetmeyerWenn alles richtig eingerichtet wurde, erfolgt der ssh Login statt über User/Paßwort nun über das Key-Paar.
Quelle: ReetmeyerIn Teil 2 zeige ich Ihnen dann, wie man mittels Konfiguration von ssh erzwingen kann, dass die Anmeldung nur noch über Keys möglich ist und der Kreis derer, die überhaupt ssh benutzen dürfen, eingeschränkt werden kann.
Zum Abschluss noch ein weiteres Tool, das eventuell auch für Sie zum Arbeiten mit dem IFS nützlich sein könnte – der Midnight Commander. Dazu muss das Open Source Package “mc” installiert werden. (Die Älteren werden sich dabei vielleicht an den Norton Commander unter MS-DOS aus den 90ern erinnern?)
Quelle: ReetmeyerDer Autor Ralf Reetmeyer schreibt regelmäßig für den MIDRANGE Deep Dive.
