Назад | Перейти на главную страницу

Запретить SSH рекламировать номер своей версии

Я использую сервер Ubuntu 10.10. Для обеспечения безопасности я хочу отредактировать баннер, который сервер отправляет клиенту.

Если я подключусь к своему хосту через порт 22, он сообщит мне точную версию SSH, которую я использую (SSH-2.0-OpenSSH_5.3p1 Debian-3ubuntu4). То же самое и с MySQL и Cyrus.

Какие-либо предложения? Хотя бы для SSH?

Спасибо

Хотя скрыть номер версии вашего демона SSH непозволительно сложно, вы можете легко скрыть версию Linux (Debian-3ubuntu4).

Добавьте следующую строку в /etc/ssh/sshd_config

DebianBanner no

И перезапустите демон SSH: /etc/init.d/ssh restart или service ssh restart

Их скрытие не защитит ваш сервер. Есть еще много способов определить, что работает в вашей системе. В частности, для SSH объявление версии является частью протокола и является обязательным.

http://www.snailbook.com/faq/version-string.auto.html

Почти всегда идентифицирующие баннеры являются частью скомпилированного кода и не имеют параметров конфигурации, позволяющих изменить или подавить их. Вам придется перекомпилировать эти части программного обеспечения.

Я почти уверен, что вы не можете изменить объявление версии.

Лучшие способы защитить sshd:

  1. Измените номер порта по умолчанию.
  2. Запретить вход в систему с правами root.
  3. Принудительный протокол 2 (при условии, что это не выполняется по умолчанию).
  4. Внесите в белый список серверы, которым разрешен доступ по SSH.

Первые три можно сделать, изменив / etc / sshd_config

Четвертый зависит от того, какой брандмауэр вы используете.

Как сказано выше, изменение номера версии

  1. Трудно сделать
  2. Безопасность через безвестность
  3. Не гибкий

Я предлагаю реализовать блокировку портов. Это довольно простой способ скрыть все, что работает на вашем сервере.

Вот хорошая реализация: http://www.zeroflux.org/projects/knock

Вот как я реализовал это на своих серверах (другие числа), чтобы открывать SSH только для людей, которые знают «секретный стук»:

[openSSH]
    sequence = 300,4000,32
    seq_timeout = 5
    command = /opencloseport.sh %IP% 2305
    tcpflags = syn

Это даст 5-секундное окно, в котором 3 SYN-пакета должны быть получены в правильном порядке. Выбирайте порты, которые расположены далеко друг от друга и не являются последовательными. Таким образом, сканер портов не сможет случайно открыть порт. Эти порты не нужно открывать с помощью iptables.

Я называю этот сценарий. Он открывает определенный порт на 5 секунд для IP, отправляющего SYN-пакеты.

#!/bin/bash
/sbin/iptables -I INPUT -s $1 -p tcp --dport $2  -j ACCEPT
sleep 5
/sbin/iptables -D INPUT -s $1 -p tcp --dport $2  -j ACCEPT

Отправка SYN-пакетов может быть настоящей проблемой, поэтому я использую сценарий для подключения к SSH моих серверов:

#!/bin/bash
knock $1 $2
knock $1 $3
knock $1 $4
ssh $5@$1 -p $6

(Совершенно очевидно, что здесь происходит ...)

После установления соединения порт можно закрыть. Подсказка: используйте аутентификацию по ключу. В противном случае вам нужно очень быстро ввести свой пароль.