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_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-аудит


20

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

Ciphers -arcfour*

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

Ciphers -arcfour,arcfour128,arcfour256

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

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

Это также относится к параметрам 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

Этот шаг отсутствовал в приведенных выше ответах
— Сарас Арья

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
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.