Teh Hermit

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
отключаем_небезопасные_алгоритмы_ssh [2025/09/29 09:34] jpотключаем_небезопасные_алгоритмы_ssh [2025/10/01 09:25] (current) jp
Line 1: Line 1:
 ===== Отключаем небезопасные алгоритмы SSH ===== ===== Отключаем небезопасные алгоритмы SSH =====
  
-Представим, что у нас есть задача избавиться от каких-либо небезопасных алгоритмов //SSH//. К примеру, от //ECDSA// и //ecdsa-sha2-nistp256//.+Представим, что у нас есть задача избавиться от каких-либо небезопасных алгоритмов //SSH//. К примеру, от всех //ECDSA//, включая //ecdsa-sha2-nistp256//, а также MACs: //md5-based//, //sha1-based//, //umac-64// и KEX основанных на SHA1 + шифров //ecdh-sha2-nistp-*//.
  
 В первую очередь мы можем просканировать протокол при помощи [[NMAP]], чтобы понять какие шифры вообще доступны (см. соответствующий раздел материала по //NMAP//). В первую очередь мы можем просканировать протокол при помощи [[NMAP]], чтобы понять какие шифры вообще доступны (см. соответствующий раздел материала по //NMAP//).
Line 17: Line 17:
  
   sshd -T | egrep '^macs'   sshd -T | egrep '^macs'
 +  sshd -T | egrep '^kex'
  
 Если шифры доступны - время перейти к конфигу SSH. Если шифры доступны - время перейти к конфигу SSH.
Line 24: Line 25:
   ssh -V   ssh -V
  
-Если сервер старше 8.5, чтобы исключить //ecdsa-sha2-nistp256// добавим в конфиг следующие директивы:+=== Отключаем ecdsa-sha2-nistp256 === 
 + 
 +Если сервер старше 8.5, чтобы исключить //ecdsa-sha2-nistp256// добавим в конфиг //sshd_config// следующие директивы:
 <code> <code>
 HostKeyAlgorithms -ecdsa-sha2-nistp256 HostKeyAlgorithms -ecdsa-sha2-nistp256
Line 30: Line 33:
 </code> </code>
  
-В OpenSSH младше версии 8.5 директива //PubkeyAcceptedAlgorithms// имеет другое название (настройка и эффект ничем не отличается).+В OpenSSH младше версии 8.5 директива //PubkeyAcceptedAlgorithms// имеет другое название (настройка и эффект ничем не отличаются).
 <code> <code>
 PubkeyAcceptedKeyTypes -ecdsa-sha2-nistp256 PubkeyAcceptedKeyTypes -ecdsa-sha2-nistp256
 </code> </code>
  
-Перезапустим ssh-сервер: 
- 
-  systemctl restart ssh 
 Если мы хотим полностью избавиться от //ECDSA// - удаляем или перемещаем сами ключи. Если мы хотим полностью избавиться от //ECDSA// - удаляем или перемещаем сами ключи.
  
   /etc/sshssh_host_ecdsa_key   /etc/sshssh_host_ecdsa_key
   /etc/ssh_host_ecdsa_key.pub   /etc/ssh_host_ecdsa_key.pub
-:!: После отключения, при сканировании NMAP в первую очередь необходимо обращать внимание на результат секции //server_host_key_algorithms//. В //kex_algorithms// nmapпохожеотображает теоретически возможные алгоритмы для данной версии. +=== Отключаем MACs: md5-basedsha1-basedumac-64 ===
  
-В любом случаеможно строго проверить возможность использования алгоритма при помощи конкретного подключения с его помощью. Пример:+Добавляем в тот же sshd_config следующее: 
 + 
 +   MACs -*md5*,*sha1,*sha1-*,*-64,*-96,umac-64@openssh.com,umac-64-etm@openssh.com 
 +=== Отключаем ненужные KEX === 
 + 
 +  KexAlgorithms -diffie-hellman-group1-sha1,diffie-hellman-group14-sha1,ecdh-sha2-nistp256,ecdh-sha2-nistp521,ecdh-sha2-nistp384 
 +=== Завершаем настройку === 
 + 
 +Перед перезапуском //sshd// хорошо бы протестировать конфигурацию - проверить не только синтаксис, но и на всякий случай убедиться в том, что наш сервер поддерживает необходимые директивы. Это сделать просто
 + 
 +  sshd -t 
 +Перезапустим ssh-сервер, если всё ОК: 
 + 
 +  systemctl restart ssh 
 +=== Тестируем отключение === 
 + Пример тестирования с отключенным алгоритмом Public Key:
  
 <code> <code>
Line 58: Line 73:
 </WRAP> </WRAP>
  
 +Можно протестировать подключение с использованием конкретного MAC и посмотреть - не согласовывают ли сервер и клиент отключенный ранее алгоритм.
 +
 +:!: Здесь подключение всё равно может установиться, несмотря на опцию. Важно убедиться в том, что отключенный в реальности MAC не согласовывается и не используется.
 +<code>
 +ssh -o MACs=umac-64-etm@openssh.com root@192.168.0.1 -vv
 +</code>
 +
 +Ищем похожие строки в выводе:
 +
 +<code>
 +debug1: kex: algorithm: ...
 +debug1: kex: host key algorithm: ...
 +debug1: kex: server->client mac: ...
 +debug1: kex: client->server mac: ...
 +</code>
 +
 +Данным сканированием NMAP мы также можем проверить протоколы и шифры:
 +
 +  nmap -p22 -n -sV --unprivileged --script ssh2-enum-algos 192.168.0.1
 {{tag>Putty SSH Ubuntu Linux Certificates}} {{tag>Putty SSH Ubuntu Linux Certificates}}
отключаем_небезопасные_алгоритмы_ssh.1759138499.txt.gz · Last modified: by jp