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.
ron

1
ви хочете дізнатися про всі параметри, sshd_configякщо вам дійсно важливо безпеку SSH, інакше це може бути все театр безпеки.
ron

@ron другий коментар є інтригуючим, чи можете ви проілюструвати на прикладі, що ви маєте намір?
Єронім

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

Зверніть увагу на наявність дугових шифрів. Тож вам, можливо, доведеться явно встановити більш обмежувальне значення 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 шифр <ім'я імені>, я все одно отримую всі шифри, які я отримую раніше, незалежно від моєї конфігурації.
rɑːdʒɑ

1
Вибачте, ssh_configце конфігурація на стороні клієнта, налаштування на стороні сервера sshd_config, будь ласка, спробуйте це. (Також його називають Ciphers.)
Ульріх Шварц

Так, я знаю, але коли я жартую за шифрами, я знайшов їх на ssh_config, тому я там змінив. Як сервер виробництва я нічого не роблю, я не впевнений
rɑːdʒɑ

Зауважте, що за замовчуванням можуть відрізнятися розподіли.
Йонас Шефер

Здається, що ssh -Qв старих версіях немає. (наприклад, CentOS 6 openssh 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-audit


20

Проблема з явним визначенням списку шифрів полягає в тому, що ви повинні вручну додавати нові шифри, коли вони виходять. Натомість просто перелічіть шифри, які ви бажаєте видалити, попередньо додавши список (не кожен окремий шифр) із символом "-". Отже, у цьому випадку рядок Ciphers повинен читати:

Ciphers -arcfour*

Або якщо ви віддаєте перевагу:

Ciphers -arcfour,arcfour128,arcfour256

На сторінці sshd_config людина на шифри варіант (з OpenSSH 7.5, випущений 2017-03-20):

Якщо вказане значення починається з символу "+", зазначені шифри будуть додані до набору за замовчуванням замість їх заміни. Якщо вказане значення починається з символу '-', то зазначені шифри (включаючи подстановочні символи) будуть видалені з набору за замовчуванням замість їх заміни.

Це також відноситься і до KexAlgorithms і ГДК варіантів.


2

увімкнути / вимкнути шифр потрібно додати / видалити його у файл / etc / ssh / sshd_config Після редагування цього файлу службу потрібно перезавантажити

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

Потім, запустивши цю команду від клієнта, підкаже, які схеми підтримують

ssh -Q cipher

Щоб перевірити, чи включений шифр дуги на сервері, запустіть цю команду

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.