Czy można zmodyfikować łańcuch wyświetlany przez serwer OpenSSH po nawiązaniu połączenia surowego?
Nie chodzi o wyświetlany baner tekstowy po połączenie zostało ustanowione i może zostać skonfigurowane przez Banner
parametr w sshd_config
, ale o surowym wyjściu wysyłanym przez serwer SSH podczas próby połączenia przed uzgadnianiem.
Na przykład, otrzymując surowe połączenie telnet
$ telnet localhost 22
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
SSH-2.0-OpenSSH_7.2p2
czy istnieje sposób na ograniczenie informacji identyfikujących do absolutnego minimum?
Moje rozumienie jest takie SSH-2.0-
musi być obecny, ponieważ jest wymagany przez protokół SSH, ale następujący ciąg - OpenSSH_7.2p2
- prawdopodobnie nie jest wymagany przez protokół, ale nie widzę sposobu na jego zmianę lub usunięcie bez rekompilacji.
Intencją jest uniknięcie podawania większej ilości informacji niż jest to absolutnie konieczne, aby protokół działał.
Odpowiedzi:
Nie. Ciąg wersji jest zdefiniowany w wersji.h z Źródło OpenSSH tak jak
#define SSH_VERSION "OpenSSH_7.4"
.Możesz to zmienić, ale wymaga rekompilacji.
To wtedy
wysłaćpołączone przez:snprintf(buf, sizeof buf, "SSH-2.0-%.100s\r\n", SSH_VERSION)
(linia ssh_api.c 381, w funkcji
_ssh_send_banner
)Zobacz też: Uniemożliwić SSH reklamowanie swojego numeru wersji .
źródło
Najnowsze wersje OpenSSH umożliwiają dodawanie niestandardowego tekstu za pośrednictwem
VersionAddendum
, ale nie zezwalaj na usuwanie nazwy produktu / wersji. Będziesz musiał załatać kod źródłowy.źródło