Impedir que o SSH anuncie seu número de versão

13

O servidor que estou usando é o Ubuntu 10.10. Para garantir a segurança, desejo editar o banner que o servidor envia ao cliente.

Se eu telnetar para o meu host na porta 22, ele informa a versão exata do SSH que estou executando (SSH-2.0-OpenSSH_5.3p1 Debian-3ubuntu4). A situação é a mesma com o MySQL e o Cyrus.

Alguma sugestão? Pelo menos para SSH?

obrigado

Lerikun
fonte
5
Espero que você também perceba que é preciso mais do que remover esses banners para garantir que seu servidor esteja seguro.
Ben Pilbrow
10
Essas informações são amplamente irrelevantes; os bots tentarão hacks que funcionam na versão mais antiga, independentemente das informações da versão fornecidas pelo servidor. Usuários hostis que atacam maliciosamente seu servidor são a menor das suas preocupações; usuários descuidados são geralmente muito mais perigosos.
Chris S
Ben, acho que sei o que estou perguntando. E eu sei como proteger um servidor NIX, obrigado. Chris, tatear no escuro também é bom. Independentemente do snort, iptables fail2bans etc.
Lerikun
desde que você saiba que essa é uma das muitas coisas a fazer, tudo bem. Não queria que você fosse embora, pensando que seu sistema era super seguro, só isso.
Ben Pilbrow
Como o Auticracy apontou, quero pelo menos ocultar o "Debian-3ubuntu4".
Lerikun

Respostas:

17

Quase universalmente, os banners de identificação fazem parte do código compilado e não possuem opções de configuração para alterá-los ou suprimi-los. Você precisará recompilar essas partes do software.

Jeff Ferland
fonte
Obrigado. A única resposta realmente útil aqui. E quanto ao TCP Wrapper, eles apenas adicionam um banner, mas não ocultam as informações reais?
Lerikun
6
Além de compilado, também é usado pelos clientes para determinar os níveis de conexão compatíveis.
21411 Jeremy Bouse
32

Embora seja proibitivamente difícil ocultar o número da versão do seu daemon SSH, você pode ocultar facilmente a versão linux (Debian-3ubuntu4)

Adicione a seguinte linha ao /etc/ssh/sshd_config

DebianBanner no

E reinicie seu daemon SSH: /etc/init.d/ssh restartouservice ssh restart

Harrison Powers
fonte
7
Obrigado, isso funciona perfeitamente! Concordo que a remoção das informações da versão é segurança por obscuridade e pode apresentar mais problemas que eles resolvam. No entanto, com o Debian, o OpenSSH não apenas anuncia sua própria versão, mas a versão e o sabor específico do sistema operacional - ie "SSH-2.0-OpenSSH_6.7p1 Raspbian-5 + deb8u3". Parabéns, sem nenhum tipo de autenticação, você agora está ciente de que está conversando com um RaspberryPi executando o Raspbian, e seu próximo passo óbvio seria tentar conectar-se como "pi" à senha padrão. IMHO isso está dando maneira a muita informação no primeiro encontro.
Saustrup
Brilhante, uma das melhores jóias escondidas encontradas aqui.
Rui F Ribeiro
19

Ocultar aqueles não protegerá seu servidor. Existem muitas outras maneiras de identificar o que seu sistema está executando. Para o SSH em particular, o anúncio da versão faz parte do protocolo e é necessário.

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

bahamat
fonte
Quanto menos pessoas souberem do seu sistema ... Você pode discordar. E quanto a outros serviços? Eu estou falando em geral sobre Cyrus (IMAP / POP3) e MySQL e outros. E se houver dois Admins - não preciso seguir o protocolo ?!
Lerikun
3
@lerikun: Não se trata de compartilhá-lo com hackers assustadores. É sobre o SSH não conseguir se conectar porque não sabe qual protocolo usar. SSHD tem que anunciar.
Satanicpuppy
9
"quanto menos pessoas souberem do seu sistema, melhor". Sim, claro, essa é uma afirmação que soa bem, mas não faz muito, como "Se eu ganhar na loteria, vou ...". A segurança através da obscuridade é, na melhor das hipóteses, pouca segurança.
precisa
1
Robert, essa é uma afirmação que significa muito. Por que o cofre está no quarto escuro, onde ninguém pode vê-lo? ... Deixa pra lá. Não pergunto como proteger meu servidor. Eu acho que minha pergunta foi clara. Sim Autocracia Eu quero pelo menos me livrar deles.
Lerikun
2
Pelo que vale, Robert Moir está completamente certo.
Sirex
8

Tenho certeza de que você não pode realmente alterar o anúncio da versão.

As melhores maneiras de proteger o sshd são:

  1. Mude o número da porta padrão.
  2. Proibir logons raiz.
  3. Force o protocolo 2 (supondo que isso não seja feito por padrão).
  4. Lista de servidores que têm permissão para fazer o SSH na lista de permissões.

Os três primeiros podem ser feitos modificando / etc / sshd_config

O quarto depende de qual software de firewall você está usando.

Satanicpuppy
fonte
1/2/3 já feito. usando certificados sem senhas. Fail2ban (IMAP, POP, SMTP, VPN, WEB) e denyhosts (SSH) A questão é sobre os anúncios de versão para outros serviços.
Lerikun
6

Como dito acima, alterar um número de versão é

  1. Difícil de fazer
  2. Segurança através da obscuridade
  3. Não é flexível

O que eu sugiro é implementar o Port Knocking. É uma técnica bastante simples para ocultar qualquer coisa que esteja sendo executada no seu servidor.

Aqui está uma boa implementação: http://www.zeroflux.org/projects/knock

Foi assim que eu o implementei nos meus servidores (outros números) para abrir o SSH apenas para as pessoas que conhecem 'a batida secreta':

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

Isso dará uma janela de 5 segundos na qual os 3 pacotes SYN precisam ser recebidos na ordem correta. Escolha portas distantes umas das outras e não sequenciais. Dessa forma, um scanner de porta não pode abrir a porta por acidente. Essas portas não precisam ser abertas pelo iptables.

O script que eu chamo é este. Ele abre uma porta específica por 5 segundos para o IP enviar os pacotes 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

Pode ser muito difícil enviar pacotes SYN, então eu uso o script para conectar-me ao SSH dos meus servidores:

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

(É bastante óbvio o que está acontecendo aqui ...)

Depois que a conexão é estabelecida, a porta pode ser fechada. Dica: use a autenticação de chave. Caso contrário, você precisará ser muito rápido para digitar sua senha.

Bart De Vos
fonte