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?

rɑːdʒɑ
источник
для сервера SSH он будет, /etc/ssh/sshd_configа для клиента SSH - /etc/ssh/ssh_config. Вы хотите искать Cipherстроку в каждом, и, например, только что Cipher aes256-ctrуказали. Затем перезапустите SSH с помощью /etc/init.d/sshd restartили с помощью эквивалентной команды systemd.
Рон
1
Вы хотите стать осведомленным обо всех параметрах, sshd_configесли вы действительно заботитесь о безопасности SSH, иначе это может быть весь театр безопасности.
Рон
@ Второй комментарий интригующий, можете ли вы проиллюстрировать на примере, что вы намереваетесь?
Джером
ciphersсписок только один настройки из многих за то, что SSH должным образом реализован ... Протокол, PermitRootLogin, AuthorizedKeysFile, PermitEmptyPasswords, IgnoreRhosts, PermitTunnel, и так далее. Вы можете рассчитывать на их настройки по умолчанию , как реализовано в дистрибутив Linux, ноIgnornance is bliss only up until you have a problem
оим

Ответы:

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>, я все еще получаю все шифры, которые я получаю ранее, независимо от моей конфигурации.
16:30
1
Извините, ssh_configэто конфигурация на стороне клиента, конфигурация на стороне сервера sshd_config, попробуйте это. (Это также называют Ciphersтам.)
Ульрих Шварц
Да, я знаю, но когда я искал шифры, я нашел их в ssh_config, поэтому я сделал там изменения. Как производственный сервер я ничего не делаю, я не уверен
rɑːdʒɑ
Обратите внимание, что значения по умолчанию могут отличаться в разных дистрибутивах.
Йонас Шефер
Кажется нет ssh -Qна более старых версиях. (например, OpenOSH в CentOS 6 v5.3p1)
Tomofumi
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-аудит

savageBum
источник
20

Проблема с явным указанием списка шифров заключается в том, что вы должны вручную добавлять новые шифры по мере их появления. Вместо этого просто перечислите шифры, которые вы хотите удалить, добавив в список (не каждый отдельный шифр) символ «-». Так что в этом случае строка Ciphers должна выглядеть так:

Ciphers -arcfour*

Или, если вы предпочитаете:

Ciphers -arcfour,arcfour128,arcfour256

На странице руководства sshd_config для опции Ciphers (начиная с OpenSSH 7.5, выпущенной 2017-03-20):

Если указанное значение начинается с символа «+», то указанные шифры будут добавлены в набор по умолчанию вместо их замены. Если указанное значение начинается с символа «-», то указанные шифры (включая символы подстановки) будут удалены из набора по умолчанию вместо их замены.

Это также относится к параметрам KexAlgorithms и MAC .

Spacedog
источник
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
Кумар
источник
Этот шаг отсутствовал в приведенных выше ответах
Сарас Арья
1

Как отключить слабый ssh-шифр, 100% работающий, протестированный на Fedora 29. Проблема: 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

Et voilà! .. он все еще использует шифр 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

И, наконец, тестирование, работает нормально .. CBC отключен.

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
elbarna
источник