SSH: Wie deaktiviere ich schwache Chiffren?


47

Das Sicherheitsteam meiner Organisation hat uns angewiesen, schwache Chiffren zu deaktivieren, da sie schwache Schlüssel ausgeben.

  arcfour
  arcfour128
  arcfour256

Aber ich habe versucht, nach diesen Chiffren in der Datei ssh_config und sshd_config zu suchen, fand sie jedoch kommentiert.

 grep arcfour *
ssh_config:#   Ciphers aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc

Wo sonst sollte ich überprüfen, um diese Chiffren von SSH zu deaktivieren?


für den SSH-Server wird es in /etc/ssh/sshd_configund für den SSH-Client wird es in sein /etc/ssh/ssh_config. Sie möchten Cipherin jedem nach der Zeile suchen und haben diese beispielsweise gerade Cipher aes256-ctrangegeben. Starten Sie dann SSH über /etc/init.d/sshd restartoder über den entsprechenden Befehl systemd neu.
Ron

1
Sie möchten sich mit allen Parametern sshd_configauskennen, wenn Sie sich wirklich für die SSH-Sicherheit interessieren, andernfalls kann dies alles ein Sicherheitstheater sein.
Ron

@ron Der zweite Kommentar ist faszinierend. Können Sie anhand eines Beispiels veranschaulichen, was Sie beabsichtigen?
Jerome

Die ciphersListe ist nur eine von vielen Möglichkeiten für die ordnungsgemäße Implementierung von SSH ... Protocol, PermitRootLogin, AuthorizedKeysFile, PermitEmptyPasswords, IgnoreRhosts, PermitTunnel und so weiter. Sie können auf die Standardeinstellungen verlassen , wie in Ihrer Linux - Distribution implementiert, aberIgnornance is bliss only up until you have a problem
ron

Antworten:


40

Wenn Sie keine explizite Liste von Chiffren haben, die ssh_configmit dem CiphersSchlüsselwort festgelegt wurden , lautet der Standardwert gemäß man 5 ssh_config(clientseitig) und man 5 sshd_config(serverseitig):

            aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,
            aes128-gcm@openssh.com,aes256-gcm@openssh.com,
            chacha20-poly1305@openssh.com,
            aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,
            aes256-cbc,arcfour

Beachten Sie das Vorhandensein der ArcFour-Chiffren. Daher müssen Sie möglicherweise explizit einen restriktiveren Wert für festlegen Ciphers.

ssh -Q cipherVom Kunden erfahren Sie, welche Schemata Ihr Kunde unterstützen kann. Beachten Sie, dass diese Liste nicht von der in angegebenen Liste der Chiffren betroffen ist ssh_config. Wenn Sie eine Chiffre von ssh_configentfernen, wird sie nicht von der Ausgabe von entfernt ssh -Q cipher. Wenn Sie außerdem sshdie -cOption zum expliziten Angeben einer Verschlüsselung verwenden, wird die eingeschränkte Liste der von Ihnen eingegebenen Verschlüsselungen außer Kraft gesetzt, ssh_configund Sie können möglicherweise eine schwache Verschlüsselung verwenden. Mit dieser Funktion können Sie Ihren sshClient für die Kommunikation mit veralteten SSH-Servern verwenden, die die neueren, stärkeren Verschlüsselungen nicht unterstützen.

nmap --script ssh2-enum-algos -sV -p <port> <host> Hier erfahren Sie, welche Schemata Ihr Server unterstützt.


Hallo, ich habe bestimmte Chiffren in ssh_config erwähnt und den ssh-Dienst neu gestartet, aber als ich ssh -Q cipher <Hostname> ausgeführt habe, erhalte ich immer noch alle Chiffren, die ich früher erhalte, unabhängig von meiner Konfiguration.
Donnerstag,

1
Es tut mir leid, ssh_configist die clientseitige Konfiguration, die serverseitige Konfiguration ist sshd_config, bitte versuchen Sie das. (Es wird auch Ciphersdort genannt.)
Ulrich Schwarz

Ja, ich weiß, aber als ich nach Chiffren griff, fand ich sie in ssh_config und nahm dort Änderungen vor. Als Produktionsserver tue ich nichts, ich bin mir nicht sicher
am

Beachten Sie, dass sich die Standardeinstellungen zwischen den Distributionen unterscheiden können.
Jonas Schäfer

Scheint, es gibt keine ssh -Qälteren Versionen. (zB CentOS 6's openssh v5.3p1)
Tomofumi

30

Um RC4 zu deaktivieren und sichere Chiffren auf dem SSH-Server zu verwenden, codieren Sie Folgendes hart in /etc/ssh/sshd_config

ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr

ODER Wenn Sie lieber keine Chiffren diktieren, sondern nur unsichere Chiffren entfernen möchten, führen Sie dies stattdessen in der Befehlszeile aus (im Sudo-Modus):

sshd -T | grep ciphers | sed -e "s/\(3des-cbc\|aes128-cbc\|aes192-cbc\|aes256-cbc\|arcfour\|arcfour128\|arcfour256\|blowfish-cbc\|cast128-cbc\|rijndael-cbc@lysator.liu.se\)\,\?//g" >> /etc/ssh/sshd_config

Sie können die derzeit von Ihrem Server verwendeten Chiffren folgendermaßen überprüfen:

sudo sshd -T | grep ciphers | perl -pe 's/,/\n/g' | sort -u

Stellen Sie sicher, dass Ihr ssh-Client diese Chiffren verwenden kann, und führen Sie sie aus

ssh -Q cipher | sort -u

um die Liste zu sehen.

Sie können Ihren SSH-Client auch anweisen, nur sichere Verschlüsselungen mit Remote-Servern auszuhandeln. Im /etc/ssh/ssh_configSet:

Host *
    ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr

Die obigen Ausschnitte stammen von hier.
Um die Einstellungen Ihres Servers zu testen, können Sie ssh-audit verwenden


20

Das Problem bei der expliziten Angabe einer Chiffreliste besteht darin, dass Sie neue Chiffren manuell hinzufügen müssen, sobald sie herauskommen. Listen Sie stattdessen einfach die zu entfernenden Chiffren auf und stellen Sie der Liste (nicht jeder einzelnen Chiffre) ein '-' voran. In diesem Fall sollte die Ciphers-Zeile also lauten:

Ciphers -arcfour*

Oder wenn Sie es vorziehen:

Ciphers -arcfour,arcfour128,arcfour256

Aus der Manpage sshd_config zur Option Ciphers (seit OpenSSH 7.5, veröffentlicht am 20.03.2017):

Beginnt der angegebene Wert mit einem '+' - Zeichen, werden die angegebenen Ziffern an den Standardsatz angehängt, anstatt sie zu ersetzen. Beginnt der angegebene Wert mit einem '-' - Zeichen, werden die angegebenen Ziffern (einschließlich Platzhalter) aus dem Standardsatz entfernt, anstatt sie zu ersetzen.

Dies gilt auch für die Optionen KexAlgorithms und MACs .


2

Aktivieren / Deaktivieren der Verschlüsselung muss in der Datei / etc / ssh / sshd_config hinzugefügt / entfernt werden. Nach dem Bearbeiten dieser Datei muss der Dienst neu geladen werden

systemctl reload sshd
/etc/init.d/sshd reload

Wenn Sie diesen Befehl auf dem Client ausführen, erfahren Sie, welche Schemata unterstützt werden

ssh -Q cipher

Um zu überprüfen, ob arcfour cipher auf dem Server aktiviert ist oder nicht, führen Sie diesen Befehl aus

ssh localhost -c arcfour

Führen Sie diesen Befehl aus, um zu überprüfen, ob die arcfour128-Verschlüsselung auf dem Server aktiviert ist

ssh localhost -c arcfour128

Dieser Schritt fehlte in den obigen Antworten
Saras Arya

1

So deaktivieren Sie eine schwache ssh-Verschlüsselung, die zu 100% auf Fedora 29 getestet wurde. Also habe ich diese Zeilen eingefügt/etc/ssh/sshd_config

MACs hmac-sha2-512,hmac-sha2-256
Ciphers aes256-ctr,aes192-ctr,aes128-ctr
KexAlgorithms diffie-hellman-group14-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group-exchange-sha256,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,curve25519-sha256,curve25519-sha256@libssh.org

Et voilà! .. es wird immer noch die cbc-Verschlüsselung verwendet, da dieser Befehl funktioniert :(

ssh -c aes256-cbc samba4

Also überprüfe ich das nützliche systemd und stelle fest, dass der sshd-Dienst eine andere Datei für Chiffren verwendet

/etc/crypto-policies/back-ends/opensshserver.config

Sichern Sie die Datei aus Sicherheitsgründen

cp /etc/crypto-policies/back-ends/opensshserver.config     /etc/crypto-policies/back-ends/opensshserver.config.old

Bearbeiten Sie es und entfernen Sie die cbc-Chiffre. Starten Sie den Dienst neu

systemctl restart sshd

Und schließlich testen, funktioniert gut..cbc deaktiviert.

ssh -c aes256-cbc samba4
Unable to negotiate with 192.168.0.48 port 22: no matching cipher found. Their offer: aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,aes256-ctr,aes128-gcm@openssh.com,aes128-ctr
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.