SSH:弱い暗号を無効にする方法


47

私の組織のセキュリティチームは、弱いキーを発行するため、弱い暗号を無効にするように指示しました。

  arcfour
  arcfour128
  arcfour256

しかし、これらの暗号をssh_configおよびsshd_configファイルで探してみましたが、コメントされていることがわかりました。

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

SSHからこれらの暗号を無効にするには、他にどこをチェックする必要がありますか?


SSHサーバーの場合は/etc/ssh/sshd_configに、SSHクライアントの場合はになります/etc/ssh/ssh_configCipherそれぞれの行を検索したい、たとえばCipher aes256-ctr指定したばかりです。次に/etc/init.d/sshd restart、同等のsystemdコマンドまたは経由でSSHを再起動します。
ron

1
sshd_configSSHセキュリティに本当に関心がある場合は、すべてのパラメーターについて知識を持ちたいと考えています。そうでなければ、すべてのセキュリティシアターになります。
ron

@ronの2番目のコメントは興味をそそるものです。あなたの意図を例で説明できますか?
ジェローム

ciphersリストは、SSHを適切に実装するための多くの設定の1つにすぎません...プロトコル、PermitRootLogin、AuthorizedKeysFile、PermitEmptyPasswords、IgnoreRhosts、PermitTunnelなど。Linuxディストリビューションに実装されているデフォルト設定を使用できますが、Ignornance is bliss only up until you have a problem
ron

回答:


40

キーワードssh_configを使用して設定された暗号の明示的なリストがないCiphers場合、man 5 ssh_config(クライアント側)およびman 5 sshd_config(サーバー側)によるデフォルト値は次のとおりです。

            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

arcfour暗号の存在に注意してください。そのため、より制限的な値を明示的に設定する必要がある場合がありますCiphers

ssh -Q cipherクライアントから、クライアントがサポートできるスキームを教えてくれます。このリストは、で指定されssh_configた暗号のリストの影響を受けないことに注意してください。から暗号をssh_config削除しても、の出力からは削除されませんssh -Q cipher。さらに、使用sshして-c明示的に設定することを暗号の制限リストオーバーライドします暗号を指定するオプションssh_configと、おそらくあなたは、弱い暗号を使用することを可能にします。これは、sshクライアントを使用して、より新しい強力な暗号をサポートしない古いSSHサーバーと通信できるようにする機能です。

nmap --script ssh2-enum-algos -sV -p <port> <host> サーバーがサポートするスキームを教えてくれます。


こんにちは、私はssh_configで特定の暗号について言及し、sshサービスを再起動しましたが、ssh -Q cipher <hostname>を実行したときに、設定に関係なく以前に取得したすべての暗号を取得しています。
rɑːdʒɑ

1
申し訳ありませんssh_configが、クライアント側の設定は、サーバー側の設定ですsshd_config、それを試してみてください。(Ciphers
ウルリッヒ・シュワルツ

ええ、知っていますが、暗号をgrepしたときにssh_configで見つけたので、そこで変更しました。本番サーバとして、私は私はわからない何もしていないのです
rɑːdʒɑ

デフォルトはディストリビューションによって異なる場合があることに注意してください。
ジョナスシェーファー

ssh -Q古いバージョンにはないようです。(例えばCentOSの6者のOpenSSH v5.3p1)
智史

30

RC4を無効にし、SSHサーバーで安全な暗号を使用するには、次をハードコードします /etc/ssh/sshd_config

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

または、暗号を指定せずに、安全でない暗号を削除したい場合は、代わりにコマンドラインでこれを実行します(sudoモード):

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

サーバーで現在使用されている暗号を次の方法で確認できます。

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

sshクライアントがこれらの暗号を使用できることを確認して、実行します

ssh -Q cipher | sort -u

リストを表示します。

SSHクライアントに、リモートサーバーと安全な暗号のみをネゴシエートするように指示することもできます。で/etc/ssh/ssh_configセット:

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

上記のスニペットはここから取得され
ますサーバーの設定をテストするには、ssh-auditを使用できます


20

暗号リストを明示的に指定する場合の問題は、新しい暗号が出たときに手動で追加する必要があることです。代わりに、削除する暗号を単にリストし、(個々の暗号ではなく)リストに「-」文字を追加します。したがって、この場合、Ciphers行は次のようになります。

Ciphers -arcfour*

または、必要に応じて:

Ciphers -arcfour,arcfour128,arcfour256

Ciphersオプションのsshd_configのmanページから(2017-03-20リリースのOpenSSH 7.5以降):

指定された値が「+」文字で始まる場合、指定された暗号は置き換えられずにデフォルトセットに追加されます。指定された値が「-」文字で始まる場合、指定された暗号(ワイルドカードを含む)は置き換えられずにデフォルトセットから削除されます。

これは、KexAlgorithmsおよびMACオプションにも適用されます。


2

暗号の有効化/無効化は、ファイル/ etc / ssh / sshd_configで暗号を追加/削除する必要があります

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

次に、クライアントからこのコマンドを実行すると、どのスキームがサポートされているかがわかります

ssh -Q cipher

サーバーでarcfour暗号が有効になっているかどうかを確認するには、このコマンドを実行します

ssh localhost -c arcfour

サーバーでarcfour128暗号が有効になっているかどうかを確認するには、このコマンドを実行します

ssh localhost -c arcfour128

このステップは上記の回答にありませんでした
Saras Arya

1

弱いssh暗号を無効にする方法は、Fedora 29で100%動作テスト済みです。問題:Nessusは、samba4サーバーが強力な暗号aes256-cbcおよびaes128-cbcを使用していないと報告します。だから私はそれらの行を/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

Etvoilà!.. itはこのコマンドが機能するため、まだcbc暗号を使用しています:(

ssh -c aes256-cbc samba4

だから私は便利なsystemdをチェックし、sshdサービスが暗号化のために別のファイルを使用していることを発見しました

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

安全のためにファイルをバックアップする

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

それを編集し、cbc暗号を削除します。サービスを再開する

systemctl restart sshd

そして最後にテストし、正常に動作します。

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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.