Я сделал tcpdump при подключении к моему серверу через SSH. Первое, что я вижу, это:

SSH-2.0-OpenSSH_5.3

Можно ли заставить сервер не отправлять его версию ssh?

1 ответ1

2

Не без перекомпиляции исходного кода.

Он используется для согласования совместимости между сервером и клиентом.

Существует метод, описанный здесь и воспроизведенный для полноты, но я бы не рекомендовал его, так как его нужно будет повторять каждый раз при обновлении программного обеспечения.

  • Скопируйте файл /usr/sbin/sshd в /tmp .

    # cp /usr/sbin/sshd /tmp
    
  • Найдите расположение текста OpenSSH в нем, используя команду strings . Ищите текст SSH-2.0-OpenSSH_5.x так как это версия, показанная в выводе telnet .

    # cd /tmp
    # strings -t d -a -n 7 sshd | grep -i ssh-2
    521008 OpenSSH-2.0*,OpenSSH-2.1*,OpenSSH_2.1*,OpenSSH_2.2*
    
  • Удалите строку 521008 из вышеприведенного вывода с помощью команды dd .

    # dd if=./sshd bs=1 skip=521008 count=11 | od -A n -c
    11+0 records in
    11+0 records out
       O   p   e   n   S   S   H   -   2   .   0
    11 bytes (11 B) copied, 0.000208606 s, 52.7 kB/s
    
    # dd if=./sshd bs=1 count=521008 of=sshd.1
    521008+0 records in
    521008+0 records out
    521008 bytes (521 kB) copied, 1.46733 s, 355 kB/s
    
    # dd if=./sshd bs=1 skip=521008 count=11 of=sshd.2
    11+0 records in
    11+0 records out
    11 bytes (11 B) copied, 0.00032878 s, 33.5 kB/s
    
    # dd if=./sshd bs=1 skip=521008 count=999999999 of=sshd.3
    131808+0 records in
    131808+0 records out
    131808 bytes (132 kB) copied, 0.368016 s, 358 kB/s
    

    OpenSSH_5.x теперь вырезан и скопирован в файл sshd.2.

  • Проверьте содержимое файла sshd.2 с помощью команды od.

    # od -A n -c sshd.2
    O   p   e   n   S   S   H   _   2   .   0
    
  • Напишите текст "ItsHidden" в sshd.2 и проверьте изменение размера файла до и после.

    # ls -l sshd.2 -rw-r--r-- 1 root root 11 May  6 14:11 sshd.2 
    # print -n ItsHidden > sshd.2 
    # ls -l sshd.2 -rw-r--r-- 1 root root 11 May  6 14:12 sshd.2
    
  • Объедините все вышеперечисленные файлы sshd в файл sshd.new.

    # cat sshd.* > sshd.new
    
  • Дайте разрешение на выполнение sshd.new и замените двоичный файл sshd на sshd.new.

    # chmod 755 ./sshd.new
    # cp /usr/sbin/sshd /usr/sbin/sshd.bak
    # rm /usr/sbin/sshd
    # cp /tmp/sshd.new /usr/sbin/sshd
    
  • Перезапустите службу sshd и проверьте результат с помощью команды telnet.

    # service sshd stop
    # ps aux | grep -i sshd
    # kill -9 <pid_sshd>
    # service sshd restart
    # telnet localhost 22
    

Хотя это не очень элегантное или ремонтопригодное решение.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .