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: http://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.

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

Quelle:  http://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 http://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

 

 

 

 

WLAN RADIUS Authentifizierung einrichten unter Windows Server 2012 | Step-by-Step

01

  • der RADIUS Server unter Windows ab Version 2008 wird über die Serverrolle Network Policy and Access Services bereitgestellt.

02

03

04

05

06

  • die gewünschten WLAN Access Points die per RADIUS die User authentifizieren sollen, ergänzen und ein gemeinsames Passwort (Shared Secret) eintragen, mit dem der Server und der Access Point ihre Kommunikation sichern. Das Shared Secret muss auf dem RADIUS Server und dem Access Point identisch sein.

07

08

Protected Extensible Authentication Protocol, Protected EAP, or simply PEAP (pronounced peep), is a method to securely transmit authentication information, including passwords, over wireless LANs. It was jointly developed by Microsoft, RSA Security and Cisco. It is an IETF open standard.

PEAP is not an encryption protocol; as with other EAP types it only authenticates a client into a network.

PEAP uses only server-side public key certificates to authenticate clients by creating an encrypted SSL/TLS tunnel between the client and the authentication server, which protects the ensuing exchange of authentication information from casual inspection.

PEAP is similar in design to EAP-TTLS, requiring only a server-side PKI certificate to create a secure TLS tunnel to protect user authentication.

Quelle: http://wiki.freeradius.org/protocol/EAP-PEAP

09

  • die Windows Gruppen die Zugriff auf das Netzwerk per WLAN haben sollen hinzufügen

10

11

12

13

  • der Assistent erzeugt hier eine Connection Request Policy, hier muss nichts weiter eingestellt werden.

14

  • ebenfalls erzeugt der Assistent eine Network Policy, hier muss noch in den Eigenschaften im Register Constraints bei den Authentication Methods für das EAP (PEAP) Protokoll ein Zertifikat ausgewählt werden. Dieses müssen wir zuerst erstellen wie im Weiteren gezeigt wird.

15

  • Im Register Conditions können wir noch die User, die Zugriff auf das WLAN erhalten sollen berechtigenadd_groups_users01

  • PEAP uses only server-side public key certificates to authenticate clients by creating an encrypted SSL/TLS tunnel between the client and the authentication server, which protects the ensuing exchange of authentication information from casual inspection.
  • für den RADIUS Server muss noch ein Zertifikat erstellt werden, dieses kann über die Active Directory Certificate Services (AD CS) erstellt werden.

16

  • auf dem Server auf dem die Active Directory Certificate Services (AD CS) installiert sind eine neue Zertifikatsvorlage erstellen.

17

  • hier die vorhandene Zertifikatsvorlage Computer duplizieren und anpassen

18

19

  • Register Sicherheit / Security

21_register_sicherheit

  • Register Sicherheit / Security

22_register_sicherheit

  • Register Antragstellername / Subject Name

23_register_Antragstellername(Subject Name)

  • in der Konsole Zertifizierungsstelle (PKI) das neue Zertifikat welches in der MMC Konsole (Zertifikatsvorlage) erstellt wurde für die PKI aktivieren.

24

25

26

  • auf dem RADIUS Server das neue Zertifikat anfordern und hier die neu erstellte Zertifikatsvorlage auwählen. Das Zertifikat im lokalen Computerkonto anfordern!

27

28

29

  • unter DETAILS lediglich im Register Extensions bei Include Symmetric algorithm diese Erweiterung aktivieren.

30

31

32

  • hier das neu erstellte Zertifikat auswählen

33

 

Soweit ist die Installation und Konfiguration vom RADIUS Server abgeschlossen. Es muss nun nur noch bei den WLAN Access Points unter Sicherheit der Modus WPA2 oder WPA2 Enterprise je nach Modell ausgewählt werden, die IP Adresse des Radius Servers und ein Shared Secret ausgewählt werden. Der Radius Standard UDP Port 1812 sollte schon eingetragen sein.

34

Bei der Anmeldung der Clients wird nun unter Windows 7 standardmäßig das Windows Benutzerkonto zur Anmeldung herangezogen und bei Windows 8 erscheint eine Eingabemaske mit Benutzername/Passwort und eine Checkbox bei der nach Aktivierung ebenfalls das Windows Benutzerkonto zur Anmeldung verwendet wird.

Ist es bei Windows 7 gewünscht diese standardmäßige Verwendung des Windows Benutzerkontos zu deaktivieren und einen Login Dialog zu haben so kann dies in den Eigenschaften der WLAN Verbindung konfiguriert werden.

  • Register Sicherheit unter Eigenschaften der WLAN Verbindung
  • Einstellungen der Netzwerkauthentifizierung Microsoft: Geschütztes EAP(PEAP)
  • Konfigurieren bei Authentifizierungsmethode EAP-MSCHAP v2
  • hier den Haken entfernen damit nicht mehr die Windows Anmeldedaten für die RADIUS Authentifizierung verwendet werden.

35