Nur wenige Diagnostikgeräte in einer Arztpraxis können unter Linux arbeiten: PC-EKG, PC-Lufu- oder LZ-RR-Auswerteprogramme laufen alle nur unter Windows. Andere Geräte, z.B. Ultraschallgerät und LAN-Scanner Brother ADS-2400N können Daten nur auf ein Samba/Windows-Verzeichnis übertragen.

Die Verbindung über Samba ist unter Windows 10 mit dem voreingestellten Abschalten von smb1 deutlich sicherer geworden, und man kann die Sicherheit mit den eigenen Einstellungen in der smb.config noch weiter erhöhen; trotzdem bleibt bei versehentlich geöffneten Ports und versehentlichem Entfernen des Samba-Passwortschutzes ein erhöhtes Risiko, vor allem, wenn sich dieses Samba-Verzeichnis auf dem Linuxserver befindet.

Deshalb sollte man auf Samba am Linux-Server sicherheitshalber ganz verzichten und hier ganz abschalten, und vom Windows-Rechner Daten nur holen, statt dem Windowsrechner die Berechtigung zu geben, Daten zu senden. Damit die evtl. vom Windows-Rechner ausgehende Gefahr reduziert wird, sollte man am Windows-Rechner die Netzwerkerkennung und die Datei- und Druckerfreigabe abschalten, sowie den smb-Client und den smb-Server: jetzt werden keine anderen Rechner im Netz mehr im Windows-Explorer angezeigt.

Samba auf dem Linuxserver stoppen und abschalten geht mit:

  systemctl stop samba
  systemctl stop smbd
  systemctl stop nmbd
  systemctl stop winbindd

(Samba läuft immer mit mindestens 4 Daemonen.)

und zusätzlich

  systemctl disable samba
  systemctl disable smbd
  systemctl disable nmbd
  systemctl disable winbindd

Ein Samba-Verzeichnis auf einem Linux-Client erstellen

Ein für den LAN-Scanner und das Ultraschallgerät erforderliches Samba-Verzeichnis sollte nur auf einem Linux-Client installiert sein: von hier holt sich der Linux-Server mithilfe eines cronjobs jede Minute automatisch die Dateien in sein mail-in Verzeichnis.

Die smb.conf dieses Linux-Clients in /etc/Samba könnte so aussehen: hier wird das home-Verzeichnis des Linux-Clients nicht freigegeben.

  [global]
	workgroup = PRAXIS
        passwd chat =
      #  syslog = 0
        log file = /var/log/Samba/log.%m
        log level = 2
        max log size = 100
        dns proxy = No
        kernel oplocks = No
        invalid users = root
        oplocks = No
        level2 oplocks = No
        strict locking = Yes
        blocking locks = Yes
        fake oplocks   = no
        default case   = lower
        case sensitive = no
        preserve case  = no
        client min protocol = SMB2
        client max protocol = SMB3
        unix extensions = no
   [mail-in]
        comment = mail-in
        path = /home/praxis/mail-in
        public = no
        writeable = yes
        create mask = 0777
        directory mask = 0777
  #  [homes]
  #        comment = Home Directories
  #        public = NO
  #        browsable =NO
  #        read only = YES
  #        writeable = NO
  #        create mask = 0000
  #        directory mask = 0000
  #  [printers]
  #        comment = All Printers
  #        path = /var/spool/Samba
  #        create mask = 0700
  #        printable = Yes
  #        browseable = Yes
  #  [print$]
  #        comment = Printer Drivers
  #        path = /var/lib/samba/printers

In der /etc/hosts.allow des Clients müssen die IP-Adressen der Geräte freigegeben werden mit:

smb smbd: [IP-Adresse], [IP-Adresse],...

ACHTUNG: Unbedingt ein Sambapasswort vergeben: auf der Konsole als user praxis mit

smbpasswd praxis

dann in der Anforderung das gewünschte Passwort eingeben.

Um die Daten aus dem Samba-Verzeichnis „mail-in“ des Linux-Clients auf den Linux-Server ins mail-in zu übertragen, legt man auf dem Linux-Server das folgende script an, z.B. als „scaninl.sh“:

  !#/bin/bash
  cd
  rsync -a --timeout=50 --remove-source-files praxis@[clientrechneradresse]:/home/praxis/mail-in  /home/praxis/a

Damit rsync funktioniert, muss es sowohl auf dem Linux-Server als auch auf dem Linux-Client installiert sein.

Hierbei werden allerdings beim Übertragen nur Dateien, aber keine Verzeichnisse im mail-in des Linux-Clients gelöscht (einige Ultraschallgeräte übermitteln ihre Bilder ja leider nur in Form von Verzeichnissen). Diese Verzeichnisse bleiben also in mail-in des Linux-Clients erhalten und müssen dann, falls als störend empfunden, gelegentlich separat auf dem Linux-Client gelöscht werden, z.B. vom Server aus nach Einloggen auf dem client händisch mit:

  :~$ ssh praxis@[clientname]
  :~$ cd mail-in
  :~$ rm -r *

oder automatisch per script auf dem Clientrechner, welches als cron-job auf diesem z.B. beim Rechnerstart des Clientsausgeführt wird:

  !#/bin/bash
  cd
  cd mail-in
  rm -r *

Einbindung des Windows-Rechners in das Linux Praxisnetz

Um die Daten komfortabel vom Windowsrechner auf den Linuxserver zu übertragen, stellt man nun eine Verbindung zum Windows her, die sicherer ist.

Dies ist eine Dateiübertragung über ssh, für die man Samba nicht benötigt. Windows 10 (64bit) hat seit einiger Zeit standardmässig einen aktiven SSH-Client, den man ausprobieren kann auf der Kommandozeile mit „ssh praxis@server“: nach Bestätigung der Abfrage, ob der ECDSA Schlüssel wirklich der vom Linuxserver ist, kommt die Meldung „Permission denied:publickey“ wenn Datei /etc/sshd_config die Zeile enthält: „ password authentication no“ (wie es aus Sicherheitsgründen sein sollte); wird dagegen das Passwort für praxis@server abgefragt, könnte man sich mit dem Passwort jetzt auf dem Linux-Server einloggen und dort Daten verändern (keine gute Idee von einem hochgradig malware-gefährdeten Windows-Rechner aus!).

Umgekehrt kann man aber vom Linuxrechner noch nicht auf den WinRechner zugreifen, bevor man nicht unter Programme und Features > optionale Features: „OpenSSH-Server“ auf dem WinRechner hinzugefügt und dauerhaft aktiviert hat, z.B. nach Einloggen als Administrator: Einstellungen > Apps > Optionale Features > OpenSSH Server installieren. Dann Systemeinstellungen > Verwaltung > Dienste> OpenSSH Anmelden starten, und OpenSSH-Server als Automatisch und OpenSSH Authentifizierungsdienst ebenso markieren und starten.

ACHTUNG: nach jeder Änderung betreffender Dateien sollte man vor dem Testen, ob alles funktioniert, hier immer die Dienste „ OpenSSH-Server“ und „-Authentifizierung“ beenden und dann wieder starten!!!

Möchte man aus einem Windows-Verzeichnis nun eine einzelne Datei auf den Linux-Server holen, geht das mit der Syntax:

scp user@winpc:C:/verzeichnisname/dateiname a/mail-in

und Abfrage des Passworts des Linuxservers. Im Folgenden wird der Benutzer „Praxis“ und der Computername „winpc“ benutzt.

Alle Programme, die auf dem Windowsrechner laufen, lässt man dann ihre Ergebnisdateien (PDFs) in dieses Übertragungsverzeichnis (z.B. „C:\Users\Praxis\tausch“) schreiben.

Damit der Linuxserver aber automatisch Dateien vom WinPC holen kann, muss auf den WinPC der id_rsa.pub Schlüssel des Linuxservers kopiert werden: „scp /home/praxis/.ssh/id_rsa.pub praxis@winpc“.

Dann erstellt man die Datei „authorized_keys“ am WindowsPC z.B. indem man auf der Win-Eingabeaufforderung eingibt:

copy nul C:\Users\Praxis\.ssh\authorized_keys

Nun öffnet man mit dem Editor in C:\users\praxis die Datei id_rsa.pub und kopiert deren Inhalt in die Datei authorized_keys (Achtung, es darf hier kein Zeilenumbruch eingestellt sein!).

Die Datei „C:\Users\Praxis\.ssh\authorized_keys“ darf nur zwei Freigaben haben: „System“ und „Administratoren“: der „Authentifizierte Benutzer“ oder andere müssen entfernt werden. Rechtsklick hier auf die Datei > Eigenschaften > Sicherheit: Zum Löschen von „Authentifizierter Benutzer“ geht man auf „Erweitert“ > Berechtigungen und markiert „Authentifizierter Benutzer“, klickt dann auf „Vererbungen deaktivieren“ > klickt auf „Vererbte Berechtigungen in explizite Berechtigungen für dieses Objekt konvertieren“ > markiert wieder „Authentifizierter Benutzer“ > und klickt auf Entfernen und dann Übernehmen und ok.

Dann muss man Open-SSH-Server evtl. noch in der Windows Firewall freigeben.

Als Admin (evtl. nur als Super-Admin) kann man nun in der von Windows automatisch erstellten C:\ProgramData\ssh\sshd_config ändern:

PubKeyAuthentication yes

Kann man sich nun einfach vom Linuxserver ohne Passwort mit „ssh praxis@winpc in den Windowsrechner einloggen, ist man in der Lage, per scp alle Dateien und Unterordner aus dem Verzeichnis C:\Users\Praxis\tausch ohne Passworteingabe zu holen.

Leider gibt es weder für scp noch für sftp den Befehl move (verschieben), sodass die Dateien/Verzeichnisse auf dem Windowsrechner nach dem Kopieren weiterhin vorhanden sind, dann werden sie nach dem Löschen in mail-in immer wieder übertragen. Auch den Befehl remove (entfernen) kann man so nicht benutzen. Deshalb muss man den Umweg nehmen über eine batch-Datei, z.B. im Verzeichnis /home/praxis auf dem Linux-Server (hier „loeschwin“genannt), womit sie WinPC gelöscht werden, und sie evtl. vorher in ein Sicherungsverzeichnis (hier homepraxis/sic) verschieben.

Das Script /home/praxis/tauschleeren auf dem Linuxserver enthält:

  !#/bin/bash
  cd
  scp -r praxis@winpc:tausch/* a/mail-in
  scp -r praxis@winpc:tausch/* sic
  sftp -b loeschwin praxis@winpc

Das script /home/praxis/loeschwin auf dem Linux-Server enthält die Zeile

  rm tausch/*.*

Es verschiebt alle Dateien und Verzeichnisse nach C:/users/praxis/tausch nach C:/users/praxis/sic (wobei aber nur Dateinamen ohne Leer- oder Sonderzeichen berücksichtigt werden) und löscht danach alle Dateien (aber keine Unterverzeichnisse!) in tausch.

In apraxos werden mit Übertragung > ADatei Ordner nicht angezeigt und stören die Übernahme von Dateien nicht. Dateien aus diesen Ordnern können in apraxos übertragen werden in der Karteikarte mit:

ALT_x > F2 > Auswahl des Verzeichnisses mail-in > Auswahl der Datei > Öffnen > F6 Übernahme.

Diese Verzeichnisse in a/mail-in müssen danach händisch entweder gelöscht oder in ein Sicherungsverzeichnis verschoben werden.

Auch für tauschleeren richtet man einen cronjob ein, der jede Minute diese Datei ausführt. Dies geht kinderleicht wenn man kdeadmin installiert hat unter Einstellungen > Systemeinstellungen> Aufgabenplaner.

Das evtl. erforderliche Windows SuperAdmin Konto richtet man ein unter Systemsteuerung>Verwaltung>Computerverwaltung>  Benutzer und Gruppen > Benutzer: dort steht oben Administrator: in Eigenschaften ist das Feld „Deaktivieren“ angehakt > diesen Haken entfernen, dann einen Anmeldekontonamen vergeben, z.B. „Admin“. Dann Abmelden und Anmelden als User Admin.
ACHTUNG: Als Erstes muss man diesem SuperAdmin-Konto ein Passwort geben, denn es ist das mächtigste Windows-Konto!!