Webseiten-Werkzeuge


ssh_ssl

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
ssh_ssl [2021/05/18 18:22]
manfred [SSH / SSL]
ssh_ssl [2021/05/28 00:07] (aktuell)
manfred
Zeile 1: Zeile 1:
 +====== SSH / SSL ======
 +
 +  * [[http://www.golem.de/news/dan-j-bernstein-krypto-algorithmen-sicher-designen-1501-111605-2.html|Krypto-Algorithmen sicher designen]] von Dan J. Bernstein -> Dan Bernstein fordert Algorithmen, bei denen man weniger falsch machen kann.
 +  * **[[SSH-Schlüssel austauschen für ein passwortlosen Login]]**
 +  * [[SSL-Schlüssel generieren]]
 +    * [[Let's Encrypt]]
 +  * [[einzelne Dateien mit openSSL verschlüsseln]]
 +  * [[Datenbankverbindungen zu einer MySQL mit SSL-Verschlüsselung]]
 +  * [[https://www.poftut.com/use-openssl-s_client-check-verify-ssltls-https-webserver/|How To Use OpenSSL s_client To Check and Verify SSL/TLS Of HTTPS Webserver?]]
 +  * [[SCP-only mit Change Root]]
 +  * [[SFTP-User mit Change Root]]
 +    * Datenaustausch zwischen **Android** ([[https://play.google.com/store/apps/details?id=nextapp.fx|FX File Explorer]] & [[https://play.google.com/store/apps/details?id=nextapp.fx.rk|FX Plus License]]) und **FreeBSD** per **''SFTP''**:
 +      * dafür muß auf dem **FreeBSD-Server** folgendes eingestellt werden:
 +        * ''vi /etc/ssh/sshd_config''
 +          * //login:// ''PubkeyAuthentication yes''
 +          * //login:// ''PasswordAuthentication yes''
 +          * //Sicherheit:// ''PermitEmptyPasswords no''
 +          * //Sicherheit:// ''ChallengeResponseAuthentication no''
 +          * //Sicherheit:// ''UsePAM no''
 +  * [[SSH/BASH mit Change Root]]
 +  * [[SSH-Tunnel]]
 +  * **[[SSH/SCP - Sicherheit und Geschwindigkeit]]**
 +  * [[SSHFS]]
 +  * [[Fehler: Gesicherte Verbindung fehlgeschlagen]]
 +
 +  * [[http://hp.kairaven.de/scpsftp/scp-sftp.html|SCP und SFTP unter Linux & Windows]]
 +
 +
 +===== TLS-Ciphers anzeigen =====
 +
 +  # openssl ciphers -v | fgrep TLSv1.2 | sed 's/.*/  &/'
 +  ECDHE-ECDSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH     Au=ECDSA Enc=AESGCM(256) Mac=AEAD
 +  ECDHE-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH     Au=RSA  Enc=AESGCM(256) Mac=AEAD
 +  DHE-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=DH       Au=RSA  Enc=AESGCM(256) Mac=AEAD
 +  ECDHE-ECDSA-CHACHA20-POLY1305 TLSv1.2 Kx=ECDH     Au=ECDSA Enc=CHACHA20/POLY1305(256) Mac=AEAD
 +  ECDHE-RSA-CHACHA20-POLY1305 TLSv1.2 Kx=ECDH     Au=RSA  Enc=CHACHA20/POLY1305(256) Mac=AEAD
 +  DHE-RSA-CHACHA20-POLY1305 TLSv1.2 Kx=DH       Au=RSA  Enc=CHACHA20/POLY1305(256) Mac=AEAD
 +  ECDHE-ECDSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH     Au=ECDSA Enc=AESGCM(128) Mac=AEAD
 +  ECDHE-RSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH     Au=RSA  Enc=AESGCM(128) Mac=AEAD
 +  DHE-RSA-AES128-GCM-SHA256 TLSv1.2 Kx=DH       Au=RSA  Enc=AESGCM(128) Mac=AEAD
 +  ECDHE-ECDSA-AES256-SHA384 TLSv1.2 Kx=ECDH     Au=ECDSA Enc=AES(256)  Mac=SHA384
 +  ECDHE-RSA-AES256-SHA384 TLSv1.2 Kx=ECDH     Au=RSA  Enc=AES(256)  Mac=SHA384
 +  DHE-RSA-AES256-SHA256   TLSv1.2 Kx=DH       Au=RSA  Enc=AES(256)  Mac=SHA256
 +  ECDHE-ECDSA-AES128-SHA256 TLSv1.2 Kx=ECDH     Au=ECDSA Enc=AES(128)  Mac=SHA256
 +  ECDHE-RSA-AES128-SHA256 TLSv1.2 Kx=ECDH     Au=RSA  Enc=AES(128)  Mac=SHA256
 +  DHE-RSA-AES128-SHA256   TLSv1.2 Kx=DH       Au=RSA  Enc=AES(128)  Mac=SHA256
 +  RSA-PSK-AES256-GCM-SHA384 TLSv1.2 Kx=RSAPSK   Au=RSA  Enc=AESGCM(256) Mac=AEAD
 +  DHE-PSK-AES256-GCM-SHA384 TLSv1.2 Kx=DHEPSK   Au=PSK  Enc=AESGCM(256) Mac=AEAD
 +  RSA-PSK-CHACHA20-POLY1305 TLSv1.2 Kx=RSAPSK   Au=RSA  Enc=CHACHA20/POLY1305(256) Mac=AEAD
 +  DHE-PSK-CHACHA20-POLY1305 TLSv1.2 Kx=DHEPSK   Au=PSK  Enc=CHACHA20/POLY1305(256) Mac=AEAD
 +  ECDHE-PSK-CHACHA20-POLY1305 TLSv1.2 Kx=ECDHEPSK Au=PSK  Enc=CHACHA20/POLY1305(256) Mac=AEAD
 +  AES256-GCM-SHA384       TLSv1.2 Kx=RSA      Au=RSA  Enc=AESGCM(256) Mac=AEAD
 +  PSK-AES256-GCM-SHA384   TLSv1.2 Kx=PSK      Au=PSK  Enc=AESGCM(256) Mac=AEAD
 +  PSK-CHACHA20-POLY1305   TLSv1.2 Kx=PSK      Au=PSK  Enc=CHACHA20/POLY1305(256) Mac=AEAD
 +  RSA-PSK-AES128-GCM-SHA256 TLSv1.2 Kx=RSAPSK   Au=RSA  Enc=AESGCM(128) Mac=AEAD
 +  DHE-PSK-AES128-GCM-SHA256 TLSv1.2 Kx=DHEPSK   Au=PSK  Enc=AESGCM(128) Mac=AEAD
 +  AES128-GCM-SHA256       TLSv1.2 Kx=RSA      Au=RSA  Enc=AESGCM(128) Mac=AEAD
 +  PSK-AES128-GCM-SHA256   TLSv1.2 Kx=PSK      Au=PSK  Enc=AESGCM(128) Mac=AEAD
 +  AES256-SHA256           TLSv1.2 Kx=RSA      Au=RSA  Enc=AES(256)  Mac=SHA256
 +  AES128-SHA256           TLSv1.2 Kx=RSA      Au=RSA  Enc=AES(128)  Mac=SHA256
 +
 +  # openssl ciphers -v | fgrep TLSv1.3 | sed 's/.*/  &/'
 +  TLS_AES_256_GCM_SHA384  TLSv1.3 Kx=any      Au=any  Enc=AESGCM(256) Mac=AEAD
 +  TLS_CHACHA20_POLY1305_SHA256 TLSv1.3 Kx=any      Au=any  Enc=CHACHA20/POLY1305(256) Mac=AEAD
 +  TLS_AES_128_GCM_SHA256  TLSv1.3 Kx=any      Au=any  Enc=AESGCM(128) Mac=AEAD
 +
 +
 +===== Von SSH und SCP unterstützte Ciphers anzeigen =====
 +
 +  # man ssh_config
 +
 +  # lsb_release -a
 +  No LSB modules are available.
 +  Distributor ID: Ubuntu
 +  Description:    Ubuntu 18.04.5 LTS
 +  Release:        18.04
 +  Codename:       bionic
 +
 +  # ssh -V
 +  OpenSSH_7.6p1 Ubuntu-4ubuntu0.3, OpenSSL 1.0.2n  7 Dec 2017
 +
 +  # ssh -Q cipher
 +  3des-cbc
 +  aes128-cbc
 +  aes192-cbc
 +  aes256-cbc
 +  rijndael-cbc@lysator.liu.se
 +  aes128-ctr
 +  aes192-ctr
 +  aes256-ctr
 +  aes128-gcm@openssh.com
 +  aes256-gcm@openssh.com
 +  chacha20-poly1305@openssh.com
 +
 +Beispiel:
 +  # ssh -c rijndael-cbc@lysator.liu.se,aes256-cbc,aes256-ctr user@host
 +
 +
 +===== SSH Config =====
 +
 +Beispiel Konfiguration, die nur Ed25519 erlaubt
 +<file properties ~/.ssh/config>
 +#https://man.openbsd.org/ssh
 +#https://man.openbsd.org/ssh_config
 +#ssh -Q help
 +
 +HOST *
 +    #ssh -Q sig
 +    CASignatureAlgorithms ssh-ed25519,sk-ssh-ed25519@openssh.com
 +
 +    #ssh -Q kex
 +    KexAlgorithms curve25519-sha256,curve25519-sha256@libssh.org
 +
 +    #ssh -Q mac
 +    MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512,hmac-sha2-256
 +
 +    #ssh -Q cipher
 +    #ssh -Q cipher-auth
 +    Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes256-cbc,aes256-ctr
 +
 +    #ssh -Q key
 +    HostKeyAlgorithms rsa,ssh-ed25519-cert-v01@openssh.com,sk-ssh-ed25519-cert-v01@openssh.com,ssh-ed25519,sk-ssh-ed25519@openssh.com
 +
 +</file>
 +
 +alle 60s ein Nullpaket (keep-alive) an den Server senden (hier bis zu 15 Mal)
 +<file properties ~/.ssh/config>
 +HOST *
 +    ServerAliveInterval 60
 +    ServerAliveCountMax 15
 +
 +</file>
 +
 +Für den Host example.com einen anderen Standard-Port verwenden (hier: 2222)
 +<file properties ~/.ssh/config>
 +HOST example.com
 +    Port 2222
 +
 +</file>
 +
 +
 +===== Deprecated option =====
 +
 +  # The ServerKeyBits option only applies to SSH protocol version 1.
 +
 +<code>
 +# Aug 13 13:49:12 sshserver01 sshd[3969]: rexec line 30: Deprecated option UsePrivilegeSeparation
 +# Aug 13 13:49:12 sshserver01 sshd[3969]: rexec line 33: Deprecated option KeyRegenerationInterval
 +# Aug 13 13:49:12 sshserver01 sshd[3969]: rexec line 36: Deprecated option ServerKeyBits
 +# Aug 13 13:49:12 sshserver01 sshd[3969]: rexec line 64: Deprecated option RSAAuthentication
 +# Aug 13 13:49:12 sshserver01 sshd[3969]: rexec line 77: Deprecated option RhostsRSAAuthentication
 +# Aug 13 13:49:12 sshserver01 sshd[3969]: reprocess config line 64: Deprecated option RSAAuthentication
 +# Aug 13 13:49:12 sshserver01 sshd[3969]: reprocess config line 77: Deprecated option RhostsRSAAuthentication
 +</code>
 +
 +
 +===== Schwäche von Diffie-Hellman für TLS =====
 +
 +  * [[http://www.pro-linux.de/news/1/22348/neue-angriffe-auf-dh-verschluesselung.html]]
 +  * [[https://weakdh.org/]]
 +    * [[https://weakdh.org/sysadmin.html]]
 +      - Apache HTTP Server (mod_ssl)
 +      - nginx
 +      - Microsoft IIS
 +      - Lighttpd
 +      - Apache Tomcat
 +      - Postfix SMTP
 +      - Sendmail
 +      - Dovecot
 +      - HAProxy
 +      - Amazon Elastic Beanstalk
 +      - OpenSSH
 +
 +Generating a Unique DH Group
 +  > openssl dhparam -out dhparams.pem 4096
 +
 +ab Apache 2.4.8 und OpenSSL 1.0.2:
 +  SSLOpenSSLConfCmd DHParameters "/pfad/zum/dhparams.pem"
 +
 +Lighttpd:
 +  > vi /etc/lighttpd/lighttpd.conf
 +  ...
 +  ssl.dh-file="/pfad/zum/dhparams.pem"
 +  ...
 +
 +
 +===== allgemeines =====
 +
 +
 +==== SSL/TLS ====
 +
 +**TLS** hat soviele Probleme, man sollte es mind. in der Version __**1.2**__ einsetzen!
 +
 +
 +==== Verschlüsselungsverfahren ====
 +
 +  * __**Serpent**__ - ist der sicherste;
 +  * **Twofish** - ist der zweitsicherste;
 +  * **Rijndael** - ist weniger sicher als Serpent oder Twofish, es ist seit dem //02. Oktober 2000// der DES-Nachfolger und somit der US-Standard "AES" (Advanced Encryption Standard);
 +
 +
 +==== Blockverschlüsselung ====
 +
 +  * **EBC** - jeder Block wird mit dem selben Schlüssel verschlüsselt (das ist nicht sehr schlau)
 +  * __**CBC**__ - jeder Block wird mit einem eigenen Schlüssel verschlüsselt
 +
 +
 +===== OpenSSH ab Version 6.6 (ab Ubuntu 14.04 LTS) =====
 +
 +
 +==== elliptische Kurven ====
 +
 +Zur Zeit kann SSH nur den Ellyptischen-Kurven-Algorithmus ED25519, der ED448 und E-521 werden sicher später noch kommen.\\ 
 +Die DSA-Schlüssel sind alle NSA-optimiert und somit als unsicher anzusehen.
 +Auch von den Schlüsseln mit elliptischen Kurven wird vermutet, dass sie NSA-optimiert sind.
 +RSA mit großer Schlüssellänge ist z.Z. die sicherste Alternative.
 +
 +der ED25519-Schlüssel hat eine __feste Länge von 256 Bit__, hier wird die Option ''"-b"'' __ignoriert__:
 +  > ssh-keygen -t ed25519 -a 1024
 +
 +Die Option **''-a''** beschreibt, mit wieviel Rotationen die Passphrase verschlüsselt wird.\\
 +Je größer diese Anzahl ist, desto stärker ist die Passphrase gegen Brut-Force-Angriffe gesichert aber desto langsammer ist auch der Verbindungsaufbau.\\
 +Die Zeit, die zum generieren des Schlüssels benötigt wird, die Zeit fällt auch bei einem Verbindungsaufbau mit dem generierten Schlüssel an.\\
 +Also wenn das generieren eines Schlüssels mit 65536 Runden ca. 10 Minuten dauert, dann wird der Vebindungsaufbau mit diesem Schlüssel von diesem Rechner (Intel Core i7-2620M 2.70GHz) aus, auch ca. 10 Minuten benötigen!
 +
 +In soeinem Fall sollte man die Anzahl der Runden auf einen Wert reduzieren, bei dem die Zeit zum generieren bzw. für den Verbindungsaufbau, in einem verträglichen Zeitrahmen liegt.
 +
 +Auf einem Rechner mit einer "Intel Core i7-2620M 2.70GHz"-CPU, dauert der Login mit einem ED25519-Schlüssel mit 1024 Runden, ca. 10 Sekunden und mit 65536 Runden ca. 10 Minuten.
 +
 +Die DSA-Schlüssel sind alle NSA-optimiert und somit als unsicher anzusehen.
 +Auch von den Schlüsseln mit elliptischen Kurven wird vermutet, dass sie NSA-optimiert sind.
 +Weiterhin gilt die Einschränkung, dass bei den Algorithmen, die auf elliptischen Kurven basieren, die Schlüssellänge nicht konfigurierbar ist.
 +Auch wenn von RSA nicht vermutet wird, das es NSA-optimiert ist, so arbeitet RSA doch deterministisch und ist deshalb unter Umständen für bestimmte Angriffe anfällig. In der Praxis wird RSA daher mit dem "Optimal Asymmetric Encryption Padding" kombiniert.
 +Daraus ergibt sich, dass ein RSA-Algorithmus, der Padding verwendet, grundsätzlich als sicherer einzustufen ist als alle anderen genannten Algorithmen.
 +
 +Ein 160 Bit langer Schüssel, der auf elliptischen Kurven basieren (ECDH), gilt als ähnlich sicher wie ein 1024 Bit langer RSA-Schlüssel (RSA/DH):
 +  160 Bit ECDH - 1024 Bit RSA/DH
 +  224 Bit ECDH - 2048 Bit RSA/DH
 +  256 Bit ECDH - 3072 Bit RSA/DH
 +  384 Bit ECDH - 7680 Bit RSA/DH
 +ECDH-Schlüssel eignet sich daher besonders dann, wenn die Speicher- oder Rechenkapazität begrenzt ist, z. B. in Smartcards oder anderen eingebetteten Systemen.
 +
 +
 +===== OpenSSH bis Version 6.5 (bis Ubuntu 12.04 LTS) =====
 +
 +einen eigenen RSA-Schlüssel generieren:
 +  > ssh-keygen -t rsa -b 4096
 +
 +
 +==== Verbindungen mit TTL ====
 +
 +so werden alle SSH-Verbindungen nach 300 Sekunden (5 Minuten) "nichts tun" automatisch getrennt:
 +  > vi /etc/ssh/sshd_config
 +<file>
 +ClientAliveInterval 300
 +ClientAliveCountMax 0
 +</file>
 +
 +so bleiben alle SSH-Verbindungen solange offen, wie der Rechner eingeschaltet ist:
 +  > vi /etc/ssh/sshd_config
 +<file>
 +#ClientAliveInterval 300
 +#ClientAliveCountMax 0
 +</file>
 +
 +Nicht vergessen, nach einer Änderung an dieser Konfigurationsdatei den SSH-Dienst neu zu starten.
 +
 +
 +==== ChRoot mit SSH/BASH ====
 +
 +Benutzer anlegen:
 +  # useradd -m -c "BESCHREIBUNG" fritz
 +  # mkdir -p /home/fritz/arbeit
 +
 +SSH-Schlüssel anlegen:
 +  # su - fritz
 +  # ssh-keygen -t rsa -b 4096
 +  # exit
 +
 +Die Rechte für die ChRoot-Funktion passend setzen:
 +  # chown -R 0:0 /home/fritz
 +  # chown -R fritz:fritz /home/fritz/.ssh
 +  # chown -R fritz:fritz /home/fritz/.bash*
 +  # chown -R fritz:fritz /home/fritz/arbeit
 +
 +Binärdateien in die ChRoot-Umgebung kopieren:
 +  # tar cvzf bash.tgz /bin/ /lib/ /lib64/ /usr/bin/ ; tar xzf bash.tgz -C /home/fritz/
 +
 +das "/dev" in der ChRoot-Umgebung anlegen:
 +  # mknod dev/null c 1 3
 +  # mknod dev/zero c 1 5
 +  # chmod 0666 dev/{null,zero}
 +
 +
 +=== /etc/ssh/sshd_config ===
 +
 +ganz unten an die Datei anhängen:
 +  ...
 +  Match user fritz
 +          ChrootDirectory %h
 +          X11Forwarding no
 +          AllowTcpForwarding no
 +
 +SSHD neu starten:
 +  > /etc/init.d/ssh restart
 +
 +
 +==== ChRoot mit SCP/SFTP ====
 +
 +Benutzer anlegen:
 +  # useradd -m -c "BESCHREIBUNG" -g sftpgruppe fritz
 +  # mkdir -p /home/fritz/arbeit
 +  # chown -R fritz:0 /home/fritz
 +  # chown 0:0 /home/fritz
 +  # chown -R fritz:sftpgruppe /home/fritz/arbeit
 +  # chmod 0775 /home/fritz/arbeit
 +
 +Benutzer anlegen:
 +  # chown -R fritz /home/fritz
 +  # userdel -r fritz
 +
 +
 +=== /etc/ssh/sshd_config ===
 +
 +ganz unten an die Konfigurationsdatei anhängen:
 +  Match user fritz
 +          ChrootDirectory %h
 +          X11Forwarding no
 +          AllowTcpForwarding no
 +          ForceCommand internal-sftp -l VERBOSE
 +
 +
 +==== unerwünschte Wartezeit (wegen IPv6) vor dem Login ====
 +
 +  * [[http://ubuntuforums.org/showthread.php?t=1865873]]
 +
 +Die neuen SSH-Versionen versuchen erst per IPv6 eine Verbindung aufzubauen,
 +erst wenn das nicht geht, versuchen sie es per IPv4.
 +
 +Mit dieser Option verwendet SSH-Client nur noch IPv4:
 +  # vi /etc/ssh/ssh_config
 +  ...
 +  AddressFamily inet
 +  ...
 +
 +Damit der SSHD auch nur mit IPv4 arbeitet:
 +  # vi /etc/ssh/sshd_config
 +  ...
 +  AddressFamily inet
 +  ...
 +
 +
 +==== OpenSSH 5.5p1 aus den Quellen bauen ====
 +
 +Seit der Version 5.4 kann open SSH mit seinem sftp-Server auch die ''umask'' setzen, allerdings hat die Version 5.4 wohl ein paar Sicherheitsprobleme,
 +woraufhin recht schnell die Version 5.5 veröffentlicht wurde.
 +
 +Hier zeige ich Beispielhaft, wie man sich auf einem Ubuntu 9.04 ein aktuelles OpenSSH 5.5p1 (openssh-5.5p1.tar.gz) aus den Quellen selber baut.
 +
 +Agent admitted failure to sign using the key.
 +  * [[http://mein.homelinux.com/blog/177-agent-admitted-failure-to-sign-using-the-key.html]]
 +
 +
 +=== Problem ===
 +
 +Es ist kein automatischer Login möglich, obwohl alle relevanten Verzeichniss- und Dateirechte richtig gesetzt sind:
 +
 +  fratz@client:~$ ssh fritz@server
 +  Agent admitted failure to sign using the key.
 +  Password:
 +
 +
 +=== Lösung ===
 +
 +Schlüssel bei Seite legen:
 +  fratz@client:~$ mv .ssh/id_rsa .ssh/id_rsa.bak
 +  fratz@client:~$ mv .ssh/id_rsa.pub .ssh/id_rsa.pub.bak
 +
 +einmal kurz mit Passwort einloggen:
 +  fratz@client:~$ ssh fritz@server
 +  Password:
 +  fritz@server:~$
 +  fritz@server:~$ exit
 +  logout
 +  Connection to server closed.
 +
 +Schlüssel wieder hervor holen:
 +  fratz@client:~$ mv .ssh/id_rsa.bak .ssh/id_rsa
 +  fratz@client:~$ mv .ssh/id_rsa.pub.bak .ssh/id_rsa.pub
 +
 +jetzt geht der passwortlose Login wieder:
 +  fratz@client:~$ ssh fritz@server
 +  fritz@server:~$
 +
 +
 +==== konvertieren zwischen OpenSSH, SSH2/RFC4716 und RSA/PAM ====
 +
 +Hier einmal beispielhaft alle Konvertierungsvarianten, die mir eingefallen sind bzw. die bei mir funktioniert haben.
 +
 +  * ''-e'' -> export ''SSH2/RFC4716'' (ist der Standard)
 +  * ''-i'' -> import ''SSH2/RFC4716'' (ist der Standard)
 +  * ''-m'' -> Formate ''RFC4716'' (für SSH2)
 +  * ''-m'' -> Formate ''PAM'' (für RSA)
 +
 +''OPENSSH PRIVATE KEY'' + ''OPENSSH PUBLIC KEY'' - generieren:
 +  > ssh-keygen -t rsa -b 4096
 +  Enter file in which to save the key (/home/fritz/.ssh/id_rsa):
 +
 +''OPENSSH PRIVATE KEY'' + ''OPENSSH PUBLIC KEY'' - generieren:
 +  > ssh-keygen -t rsa -m RFC4716 -b 4096
 +  Enter file in which to save the key (/home/fritz/.ssh/id_rsa): /home/fritz/.ssh/id_rsa_rfc4716
 +
 +''RSA PRIVATE KEY'' + ''OPENSSH PUBLIC KEY'' - generieren:
 +  > ssh-keygen -t rsa -m PEM -b 4096
 +  Enter file in which to save the key (/home/fritz/.ssh/id_rsa): /home/fritz/.ssh/id_rsa_pem
 +
 +''OPENSSH KEY'' in ''SSH2 PUBLIC KEY'' konvertieren:
 +  > ssh-keygen -e -f .ssh/id_rsa                              > .ssh/SSH2_PUBLIC_KEY.pub
 +  > ssh-keygen -e -f .ssh/id_rsa.pub                          > .ssh/SSH2_PUBLIC_KEY.pub
 +
 +''OPENSSH KEY'' in ''SSH2 PUBLIC KEY'' konvertieren:
 +  > ssh-keygen -e -m RFC4716 -f .ssh/id_rsa                   > .ssh/SSH2_PUBLIC_KEY_-_RFC4716.pub
 +  > ssh-keygen -e -m RFC4716 -f .ssh/id_rsa.pub               > .ssh/SSH2_PUBLIC_KEY_-_RFC4716.pub
 +
 +''OPENSSH KEY'' in ''RSA PUBLIC KEY'' konvertieren:
 +  > ssh-keygen -e -m PEM -f .ssh/id_rsa                       > .ssh/RSA_PUBLIC_KEY_-_PEM.pub
 +  > ssh-keygen -e -m PEM -f .ssh/id_rsa.pub                   > .ssh/RSA_PUBLIC_KEY_-_PEM.pub
 +
 +''SSH2 KEY'' in ''OPENSSH PUBLIC KEY'' konvertieren:
 +  > ssh-keygen -i -f .ssh/SSH2_PUBLIC_KEY_-_RFC4716.pub       > .ssh/id_rsa.pub
 +
 +''SSH2 KEY'' in ''OPENSSH PUBLIC KEY'' konvertieren:
 +  > ssh-keygen -i -m RFC4716 -f SSH2_PUBLIC_KEY_-_RFC4716.pub > .ssh/id_rsa.pub
 +
 +''RSA KEY'' in ''OPENSSH PUBLIC KEY'' konvertieren:
 +  > ssh-keygen -i -m PEM -f SSH2_PUBLIC_KEY_-_RFC4716.pub     > .ssh/id_rsa.pub
 +
 +
 +==== automatische Passwortübergabe mit sshpass ====
 +
 +Wenn man auf dem Zielsystem keinen eigenen Schlüssel liegen hat
 +oder wegen der Verzeichnisrechte eine Pub-Key-Auth nicht funktionieren würde,
 +dann kann man das einloggen mit //sshpass// trotzdem automatisieren:
 +  > sshpass -p geheim ssh 192.168.0.100 'df -h'
 +
 +installation mit FreeBSD 13:
 +  > pkg install security/sshpass
 +
 +
 +==== Bug ====
 +
 +  * [[http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=422327%E2%90%A3]]
 +
 +Wenn man //IPv6// abschaltet (sysctl.conf per net.ipv6.conf.all.disable_ipv6=1), funktioniert //X11Forwarding// auch nicht mehr.
 +
 +
 +==== Vorbereitungen ====
 +
 +Als erstes alle Pakete installieren die zum bauen gebraucht werden:
 +  # aptitude -y install build-essential install zlib1g-dev pam-dev libwrap0-dev libcurl4-openssl-dev libpam-dev wget
 +
 +hier ist die Baustelle:
 +  # cd /usr/src/
 +
 +jetzt saugen wir uns die Quellen (siehe [[http://openssh.org/de/portable.html]]):
 +  # wget ftp://ftp-stud.fht-esslingen.de/pub/OpenBSD/OpenSSH/portable/openssh-5.5p1.tar.gz
 +
 +Quellen auspacken:
 +  # tar xzf openssh-5.5p1.tar.gz -C /usr/src/
 +
 +ins Quellverzeichnis wechseln:
 +  # cd openssh-5.5p1
 +
 +
 +==== bauen ====
 +Dann die Optionen lesen, um die richtigen auszuwählen:
 +  # ./configure --help
 +
 +Jetzt die gewünschten Optionen setzen:
 +  # ./configure --prefix=/opt/openssh_5.5p1 --with-tcp-wrappers --with-ssl-engine --with-pam --with-mantype=man --with-privsep-path=/var/run/sshd
 +
 +Am Ende sollte dann soetwas in der Art stehen:
 +  OpenSSH has been configured with the following options:
 +                       User binaries: /opt/openssh_5.5p1/bin
 +                     System binaries: /opt/openssh_5.5p1/sbin
 +                 Configuration files: /opt/openssh_5.5p1/etc
 +                     Askpass program: /opt/openssh_5.5p1/libexec/ssh-askpass
 +                        Manual pages: /opt/openssh_5.5p1/share/man/manX
 +                            PID file: /var/run
 +    Privilege separation chroot path: /var/run/sshd
 +              sshd default user PATH: /usr/bin:/bin:/usr/sbin:/sbin:/opt/openssh_5.5p1/bin
 +                      Manpage format: man
 +                         PAM support: yes
 +                     OSF SIA support: no
 +                   KerberosV support: no
 +                     SELinux support: no
 +                   Smartcard support: 
 +                       S/KEY support: no
 +                TCP Wrappers support: yes
 +                MD5 password support: no
 +                     libedit support: no
 +    Solaris process contract support: no
 +         IP address in $DISPLAY hack: no
 +             Translate v4 in v6 hack: yes
 +                    BSD Auth support: no
 +                Random number source: OpenSSL internal ONLY
 +  
 +                Host: x86_64-unknown-linux-gnu
 +            Compiler: gcc
 +      Compiler flags: -g -O2 -Wall -Wpointer-arith -Wuninitialized -Wsign-compare -Wno-pointer-sign -Wformat-security -fno-strict-aliasing -fno-builtin-memset -fstack-protector-all -std=gnu99 
 +  Preprocessor flags: 
 +        Linker flags:  -fstack-protector-all
 +           Libraries: -lcrypto -ldl -lutil -lz -lnsl  -lcrypt -lresolv
 +           +for sshd:  -lwrap -lpam
 +
 +Sicherheitshalber erstmal sauber machen:
 +  # make clean
 +
 +Wenn alles ohne Fehler durchgelaufen ist, geht es mit dem eigentlichen //bauen// weiter.
 +Sonst muss natürlich erst der Fehler behoben werden, meist fehlt nur ein ''*-dev''-Paket, welches man mit aptitude schnell nachinstallieren kann.
 +  # make
 +
 +Ist das auch ohne Fehler durchgelaufen, dann kann man jetzt installieren:
 +  # make install
 +
 +
 +==== Anpassungen im System ====
 +
 +Zum Schluss muss nur noch das //Start-/Stop-Script// angepasst werden:
 +
 +  # vi /etc/init.d/ssh
 +
 +In der alten Datei gibt es unter anderem diese Zeilen:
 +  set -e
 +  
 +  # /etc/init.d/ssh: start and stop the OpenBSD "secure shell(tm)" daemon
 +  
 +  test -x /usr/sbin/sshd || exit 0
 +  ( /usr/sbin/sshd -\? 2>&1 | grep -q OpenSSH ) 2>/dev/null || exit 0
 +  
 +  umask 022
 +
 +Das ändern wir in:
 +  set -e
 +  
 +  #SSHD="/usr/sbin/sshd"
 +  SSHD="/opt/openssh_5.5p1/sbin/sshd"
 +  
 +  # /etc/init.d/ssh: start and stop the OpenBSD "secure shell(tm)" daemon
 +  
 +  test -x ${SSHD} || exit 0
 +  ( ${SSHD} -\? 2>&1 | grep -q OpenSSH ) 2>/dev/null || exit 0
 +  
 +  export PATH="/opt/openssh_5.5p1/bin:$PATH"
 +  
 +  umask 022
 +
 +Im Rest der Datei muss jetzt nur noch
 +  /usr/sbin/sshd
 +
 +gegen
 +  ${SSHD}
 +
 +ausgetauscht werden.
 +
 +Jetzt kann man ganz einfach zwischen der alten Version un der neuen Version umschalten.
 +
 +
 +neue Version (selbst gebaute Version) aktivieren:
 +  #SSHD="/usr/sbin/sshd"
 +  SSHD="/opt/openssh_5.5p1/sbin/sshd"
 +
 +alte Version (Betriebssystem-Version) aktivieren:
 +  SSHD="/usr/sbin/sshd"
 +  #SSHD="/opt/openssh_5.5p1/sbin/sshd"
 +
  
ssh_ssl.txt · Zuletzt geändert: 2021/05/28 00:07 von manfred