Я использую сервер 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 объявление версии является частью протокола и является обязательным.
Почти всегда идентифицирующие баннеры являются частью скомпилированного кода и не имеют параметров конфигурации, позволяющих изменить или подавить их. Вам придется перекомпилировать эти части программного обеспечения.
Я почти уверен, что вы не можете изменить объявление версии.
Лучшие способы защитить sshd:
Первые три можно сделать, изменив / etc / sshd_config
Четвертый зависит от того, какой брандмауэр вы используете.
Как сказано выше, изменение номера версии
Я предлагаю реализовать блокировку портов. Это довольно простой способ скрыть все, что работает на вашем сервере.
Вот хорошая реализация: 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
(Совершенно очевидно, что здесь происходит ...)
После установления соединения порт можно закрыть. Подсказка: используйте аутентификацию по ключу. В противном случае вам нужно очень быстро ввести свой пароль.