SFTP / SSH Server unter Windows einrichten mit Cygwin | Step by Step


Als erstes m├╝ssen wir Cygwin herunterladen und auf dem Windows System installieren.

Quelle: https://cygwin.com/setup.exe

 

INFOs ├╝ber Cygwin

Mit Cygwin [╦łs╔¬╔íw╔¬n] lassen sich Programme, die ├╝blicherweise unter POSIX-Systemen wie GNU/Linux, BSD und Unix laufen, auf Microsoft Windows portieren. Es ist eine Kompatibilit├Ątsschicht, die die Unix-API f├╝r verschiedene Versionen von Microsoft Windows zur Verf├╝gung stellt, auf deren Basis eine Vielzahl von Programmen aus der Unix-Welt unter Microsoft Windows ├╝bersetzt werden k├Ânnen.

Mittels Cygwin portierte Programme laufen unter Windows NT, Windows 2000, Windows XP, Windows Vista, Windows Server 2003 und seit Version 1.7 auch unter Windows 7 und Windows Server 2008. Berichten zufolge ist f├╝r einen erfolgreichen Betrieb unter Windows 8 eine manuelle Korrektur der Konfiguration erforderlich. In ├Ąlteren Versionen laufen auch Programme unter Windows 9x.

Cygwin wurde urspr├╝nglich von der Firma Cygnus Solutions programmiert und seit deren ├ťbernahme durch die Softwarefirma Red Hat erfolgt dort die Weiterentwicklung.

https://www.redhat.com/services/custom/cygwin/

Quelle:  https://de.wikipedia.org/wiki/Cygwin

 

03

04

05

06

07

08

Hier die Kategorie NET ausw├Ąhlen

09_net_paket_waehlen

Paket openssh (bin) ausw├Ąhlen

10_openssh_paket_waehlen

11

12

Nach der Installation k├Ânnen wir die Cygwin Konsole starten

14

Mit ssh-host-config starten wir die Konfiguration des Systems

  • Should privilege seperation be used? yes
  • new local account ‘sshd’ ? yes
  • Do you want to install sshd as a service ? yes
  • Enter the value of CYGWIN for the daemon: [] ntsec

20

  • Do you want to use a different name ? no
  • Create new privileged user account ‘cyg_server’ ? yes
  • Passwort vergeben

mra01

  • sshd Dienst starten mit┬á net start sshd

mra02

Cygwin und der SSH Dienst ist nun fertig installiert und gestartet.

 

Alternativ k├Ânnen wir die Cygwin Shell auch innerhalb der Windows Command Shell
ausf├╝hren. Hierzu einfach in der Windows Command Shell ins Cygwin bin Verzeichnis wechseln und sich ├╝ber ssh username@hostname anmelden.

cygwin_ssh004

 

Im angelegten Cygwin Verzeichnis und hier im etc Verzeichnis befindet sich die Datei passwd. In dieser werden unter Unix die Benutzer gespeichert. Wenn wir diese Datei ├Âffnen, sehen wir, dass bei der Installation von Cygwin schon die lokalen Benutzer vom Windows System in diese Datei importiert wurden.

01

Wenn wir nun nachtr├Ąglich unter Windows einen Benutzer anlegen der ebenfalls in der Cygwin Umgebung berechtigt werden soll, so m├╝ssen wir diesen noch hinzuf├╝gen.

Im folgenden Beispiel wollen wir einen User f├╝r den SFTP Zugriff anlegen der sich sp├Ąter dann per SFTP auf eine Netzwerkfreigabe auf dem Windows System verbinden kann.

Zuerst auf dem Windows System einen Benutzer erstellen

02

02

Anschlie├čend eine Netzwerkfreigabe auf dem Windows System einrichten und dem angelegten Benutzer Schreib- und Leserechte auf diese Freigabe vergeben.

Als erstes m├╝ssen wir nun unter Cygwin den lokal angelegten Windows User sftp01 in die passwd Datei importieren mit

  • mkpasswd -u sftp01 -l >> /etc/passwd
    (-u f├╝r User | -l f├╝r lokalen Benutzer | -d f├╝r Dom├Ąnen Benutzer | >> f├╝r Eintrag in passwd Datei erg├Ąnzen | > f├╝r passwd Datei ├╝berschreiben)

Wir k├Ânnten auch alternativ mit

  • mkpasswd -l > /etc/passwd
    (alle angelegten Benutzer auf dem Windows System in die passwd Datei importieren und die vorhandenen Eintr├Ąge ├╝berschreiben)
  • mkgroup -l > /etc/group
    (alle lokalen Gruppen im Windows System in die Gruppendatei unter Cygwin bzw. Unix importieren und die vorhandene ├╝berschreiben)

15

Anschlie├čend k├Ânnen wir uns mit dem angelegten User per ssh an der Konsole anmelden.

  • ssh sftp01@brainweb01

02

Da wir beim ersten Login den ├Âffentlichen Schl├╝ssel vom Cygwin OpenSSH Paket noch nicht auf unserem Rechner abgelegt haben, erscheint die Meldung, dass die Identiti├Ąt des Servers unbekannt ist.

Zum erfolgreichen Verbinden m├╝ssen wir hier mit yes best├Ątigen.

Anschlie├čend wird das home Verzeichnis f├╝r den User erstellt.

03

Ab sofort ist es m├Âglich von einem entfernten Rechner ├╝ber putty sich direkt per ssh auf die Cygwin Unix Shell zu verbinden.

03

Auch per SFTP kann ich mich ab sofort mit dem System verbinden.

04

In diesem Beispiel verwenden ich den FTP Client FileZilla. Als Protokoll hier das SFTP Protokoll ausw├Ąhlen. Je nach Version von Cygwin, openssl, FileZilla kann es vorkommen, dass der Zugriff
auf Windows UNC Shares mit FileZilla Probleme bereitet und dieser anstelle auf die
UNC Pfade mit //Share versucht auf Unix Pfade mit /Share zuzugreifen. Mit WinSCP oder SecureFX hatte ich hier noch keine Probleme.

Bei POSIX-konformen Betriebssystemen wird der UNC Pfad mit //Share ansellte von Share angegeben. Es funktioniert jedoch auch im Windows UNC Format, jedoch erscheint folgende Meldung nach dem Login wenn das Home Verzeichnis auf ein Windows UNC Share verweist:

cygwin_ssh002

 

Beim Zugriff werden wir nun immer mit dem angelegten Home Verzeichnis verbunden. M├Âchten wir aber mit einer Netzwerkfreigabe verbunden werden, so m├╝ssen wir die passwd Datei im Verzeichnis /etc noch anpassen.

Hier suchen wir die Zeile mit unserem angelegten Benutzer und ├╝berschreiben am Ende den Pfad
des Homeverzeichnis mit dem UNC Pfad (POSIX-konform) der gew├╝nschten Netzwerkfreigabe.

Beispiel:

sftp01:unused:1013:513:sftp01,U-BRAINWEB01sftp01,S-1-5-21-357073478-4224919887-655416145-1013://brainweb01/FTP ROOT

 

Im folgenden werden noch die ben├Âtigten Schritte zur Authentifizierung ohne Kennwort und mit Public und Private Key beschrieben.

Als erstes m├╝ssen wie die Schl├╝sselpaare erzeugen. Hierzu mit dem angemeldeten User
der sp├Ąter auch f├╝r den Zugriff verwendet wird folgenden Befehl ausf├╝hren:

ssh-user-config

Jetzt wird jeweils gefragt was f├╝r Schl├╝ssel (also RSA, DSA, usw. verschiedene Verschl├╝sselungsverfahren) angelegt werden sollen.

05

Im Homeverzeichnis sollte jetzt ein .ssh Ordner zu finden sein, wo die Schl├╝sselpaare abgelegt sind! Der .ssh Ordner ist ein versteckter Ordner und kann mit dem Listbefehl ls ÔÇôla angezeigt werden!

Dann kann man ├╝ber cd .ssh in den Ordner wechseln und mit ls ÔÇôl die Schl├╝sselpaare anzeigen lassen. Da wir jedoch unser Home Verzeichnis auf eine Windows Freigabe gesetzt haben, finden wir den .ssh Ordner mit den Schl├╝sselpaaren in dieser Freigabe.

07

06

Die *.pub sind die Public Keys welche in der authorized_keys Datei aufgef├╝hrt werden und dadurch Zugriff auf den Server bzw. dieses Verzeichnisses ├╝ber die dort aufgelisteten Schl├╝ssel erm├Âglichen.

Die Dateien ohne *.pub sind die privaten Keys welche f├╝r die Verbindung der Clients f├╝r den Zugriff auf das System verwendet werden.

Wenn wir also die RSA Verschl├╝sselung verwenden m├Âchte, dann m├╝ssen wir die Datei id_rsa auf den Client kopieren und f├╝r die Verbindung verwenden.

Wenn nun Jemand Zugriff auf den Server ben├Âtigt und jedoch sein eigenes Schl├╝sselpaar verwenden m├Âchte, so muss lediglich der eigene ├Âffentliche Schl├╝ssel in die Datei authorized_keys erg├Ąnzt werden.

 

F├╝r die Verwendung in Putty muss der Key erst noch mit PuttyGen konvertiert werden.

08

09

Anschlie├čend kann der Schl├╝ssel dann f├╝r die Authentifizierung verwendet werden.

 

Logging des SSHD (OpenSSH Daemon) Subsystem SFTP aktivieren

Zuerst m├╝ssen wir das Paket syslog-ng im Zweig Admin nachtr├Ąglich installieren ├╝ber das Cygwin Setup.

syslog-ng

Nach der Installation die Cygwin Konsole als Admin ausf├╝hren und die Konfiguration ├╝ber den Befehl: /bin/syslog-ng-config ausf├╝hren.

syslog-ng02

Abfrage ob syslog-ng als Dienst installiert werden soll mit yes beantworten und danach den
Dienst mit net start syslog-ng starten.

Damit SFTP (Subsystem sftp)  Ereignisse protokolliert müssen noch folgende Änderungen in der Datei /etc/sshd_config vorgenommen werden:

syslog-ng03

Unter https://www.openbsd.org/cgi-bin/man.cgi/OpenBSD-current/man5/sshd_config.5?query=sshd_config sind die verschiedenen Level┬á erl├Ąutert.

Abschlie├čend noch den Logging Daemon neu starten mit cygrunsrv -S syslog-ng und den SSHD Dienst neu starten mit:

net stop sshd

net start sshd

Ab sofort protokolliert das Subsystem SFTP alles in der Datei /var/log/messages

 

 

Verwenden eines Dom├Ąnen Account als Service Account f├╝r den CYGWIN sshd Dienst

Als erstes einen Dom├Ąnen Account┬á erstellen, bsp. DOM├äNE\svcCygwin. Dieses Konto muss in die lokale Administrator Gruppe des Servers auf dem Cygwin l├Ąuft.

Anschlie├čend diesen User wieder ├╝ber mkpasswd und mkgroup in Cygwin importieren.

mkpasswd -u svcCygwin -d >> /etc/passwd

(nicht im Format DOM├äNE\username sondern nur den username!!!!, in der PASSWD wird die Dom├Ąne dann automatisch durch den Schalter -d hinzugef├╝gt, generell in der Cygwin Shell nur den username dann f├╝r den Dom├Ąnenuser immer angeben!)

mkgroup -l > /etc/group

In der Local Security Policy des Servers auf dem Cygwin l├Ąuft folgende Berechtigungen dem Dom├Ąnen Account svcCygwin gew├Ąhren.

Adjust memory quotas for a process

  Act as part of the operating system (SeTcbPrivilege)
  Create a token object               (SeCreateTokenPrivilege)
  Replace a process level token       (SeAssignPrimaryTokenPrivilege)

https://cygwin.com/faq/

 

Anschlie├čend m├╝ssen wir noch den Besitz folgender Verzeichnisse und Dateien f├╝r den neuen Dom├Ąnen Service Account svcCygwin ├╝bernehmen

$ cygrunsrv --stop sshd
$ chown [domain_user] /var/log/sshd.log
$ chown -R [domain_user] /var/empty
$ chown [domain_user] /etc/ssh*

Zuletzt noch in der Dienste Konsole unter Windows dem Dienst CYGWIN sshd den neuen Dom├Ąnen Service Account als Logon Account hinterlegen und fertig.

Links

Setting up a Cygwin OpenSSH Server for Windows Domains on a TADDM Gateway Server
Cygwin wieder deinstallieren

  1. Alle Cygrun Dienste stoppen und deinstallieren ├╝ber die cygrunsrv.exe im /bin Verzeichnis von Cygwincygwin_remove
  2. Alle Cygwin Prozesse beenden
  3. L├Âschen des Cygwin root Verzeichnis
  4. L├Âschen aller Cygwin shortcuts
  5. L├Âschen des Registry Schl├╝ssels SoftwareCygwin

 

 

 

 

One Reply to “SFTP / SSH Server unter Windows einrichten mit Cygwin | Step by Step”

Leave a Reply to school safety tips Cancel reply

Your email address will not be published. Required fields are marked *