SSH-2.0-OpenSSH_4.3p2 Debian-9etch3
Прочитать этот баннер злоумышленник может, подсоединившись с помощью утилиты telnet к 8022 порту сервера.
Тогда перед системным администратором встает задача модифицировать баннер OpenSSH сервера.
Подготовка площадки
Сначала убедимся, что в файле /etc/apt/sources.list содержится запись на deb-src репозитарий.
root@cave:~# cat /etc/apt/sources.list | grep deb-srcПредполагаем, что в системе установлены пакеты up-to-date, если нет, то в целях обеспечения безопасности пакеты требуется обновить.
#deb-src http://security.debian.org/ etch/updates main contrib
deb-src ftp://debian.sectorb.msk.ru/debian/ etch main
deb-src ftp://debian.sectorb.msk.ru/debian-security/ etch/updates main
Если у Вас не установлены пакеты для сборки/пересборки .deb пакетов, то требуется выполнить следующую команду.
root@cave:~# apt-get install build-essential dpkg-dev debhelper devscripts fakerootВ моем случае, так как установка производилась с netinstall дистрибутивом, требуется установить дополнительные пакеты (листинг только для build-essential)
The following extra packages will be installed:Подтвердите установку выбрав Y (Do you want to continue [Y/n]? Y
binutils cpp cpp-4.1 dpkg-dev g++ g++-4.1 gcc gcc-4.1 libc6-dev libssp0 libstdc++6-4.1-dev linux-kernel-headers make patch
The following NEW packages will be installed:Также необходимо установить все библиотеки, которые необходимы для создания пакета, который Вы хотите модифицировать, а именно нужно выполнить команду
binutils build-essential cpp cpp-4.1 dpkg-dev g++ g++-4.1 gcc gcc-4.1 libc6-dev libssp0 libstdc++6-4.1-dev linux-kernel-headers make patch
0 upgraded, 15 newly installed, 0 to remove and 0 not upgraded.
Need to get 14.7MB of archives.
root@cave:~/openssh-4.3p2# apt-get build-dep openssh-server
Модификация исходников
Чтобы скачать исходники openssh-server нужно выполнить следующую команду
root@cave:~# apt-get source openssh-serverВ результате ее выполнения в директории, откуда была запущенна команда появятся несколько файлов, в моем случае
root@cave:~# ls -la | grep opensshЕсли почитать немного исходники, а именно файлы openssh-4.3p2/version.h и openssh-4.3p2/debian/rules (можете добавить себе памятку, что debian/rules - это скрипт, который осуществляет сборку пакетов, иными словами, это Makefile), то становится понятным, как формируется баннер OpenSSH сервера. Номер версии и параметр PORTABLE (в данном случае приставка p2 в названии пакета) сервера определяется в version.h
drwxr-xr-x 7 root root 12288 2008-12-25 15:45 openssh-4.3p2
-rw-r--r-- 1 root root 275859 2008-09-17 01:02 openssh_4.3p2-9etch3.diff.gz
-rw-r--r-- 1 root root 1310 2008-09-17 01:02 openssh_4.3p2-9etch3.dsc
-rw-r--r-- 1 root root 920186 2006-05-12 16:17 openssh_4.3p2.orig.tar.gz
#define SSH_VERSION "OpenSSH_4.3"Название дистрибутива в version.h содержится в
#define SSH_PORTABLE "p2"
#define SSH_EXTRAVERSIONопределяется данный параметр в файле rules
SSH_EXTRAVERSION := Debian-$(shell dpkg-parsechangelog | sed -n -e '/^Version:/s/Version: //p' | sed -e 's/[^-]*-//')
/* #define SSH_RELEASE SSH_VERSION SSH_PORTABLE SSH_EXTRAVERSION */Необходимо также внести изменения в changelog (чтобы при обновлении репозитария наши изменения не были затерты).
#define SSH_RELEASE "OpenSSH_0.9beta OpenBSD3.1"
Чтобы сделать это можно поступить двумя способами.
- Открываем файл openssh-4.3p2/debian/changelog любимым текстовым редактором и правим первую строку - необходимо немного изменить название пакета, я бы сделал следующим образом
openssh (1:4.3p2-9etch3FakeBanner) stable-security; urgency=high
Этот способ прост, но он правильнее выбрать второй, так как он приучает к хорошему тону, красивому стилю и т.д. - Находясь в директории модифицируемого пакета (в моем случае openssh-4.3p2), запускаем команду
dch -i
которая откроет файл debian/changelog для редактирования в текстовом редакторе по-умолчанию. Разница с 1-ым способом в том, что сразу будут сформированы блоки, согласно правилам описания модификаций пакетов (с данными правилами можно ознакомиться здесь). Ниже приведен мой пример записи в changelogopenssh (1:4.3p2-9etch3FakeBanner) stable-security; urgency=low
* only fake banner
-- gurza Thu, 25 Dec 2008 16:38:41 +0300
Теперь необходимо собрать модифицированный пакет (полный мануал по сборке/пересборки пакетов GNU/Debian можно найти по адресу http://wiki.debian.org/DebianRussian/DebinstPackages и http://gq.net.ru/2007/03/16/building-deb-packages/). Находясь в директории модифицируемого пакета (в моем случае openssh-4.3p2), выполняем
root@cave:~/openssh-4.3p2# dpkg-buildpackage -rfakerootи откидываемся на спинку кресла. Все таки, имхо, GNU/Debian это дистрибутив для ленивых системных администраторов, которые не любят ждать выполнения ./configure && make && make install. Ну ради изменения баннера, или ради какой-нибудь более высокой цели подождать иногда приходится. Результатом выполнения данной команды будут deb пакеты в дирриктории выше.
Удаляем старый пакет OpenSSH Server (также придется временно удалить и клиента) командой
root@cave:~# dpkg -r openssh-server openssh-clientУдаление производится в смысле deinstall
deinstallТо есть удаляются только бинарные файлы, а файлы конфигурации и сгенерированные ключи остаются на месте. Теперь необходимо установить модифицированные пакеты
The package is selected for deinstallation (i.e. we want to remove all files, except configuration files).
root@cave:~# dpkg -i openssh-server_4.3p2-9etch3FakeBanner_amd64.deb openssh-client_4.3p2-9etch3FakeBanner_amd64.debПроверим теперь баннер OpenSSH сервера
root@cave:~# telnet localhost 8022Все работает именно так, как мы и хотели.
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
SSH-2.0-OpenSSH_0.9beta OpenBSD3.1
^]
telnet> quit
Connection closed.
Этот комментарий был удален автором.
ОтветитьУдалитьThanks for good article, but there is slightly easier method:
ОтветитьУдалитьjust add
"DebianBanner none" to the /etc/ssh/sshd_config