Como ocultar o nome do servidor da web e a versão do openssh no linux ao verificar as portas do servidor?

1

Como ocultar o nome do servidor da web e a versão do openssh no linux ao verificar as portas do servidor?

quando eu nmap'ed ( nmap -A -T4 192.168.40.12 ) servidor ip do lado de fora, o que mostra:

Starting Nmap 4.62 ( http://nmap.org ) at 2009-11-05 14:11 IRST
LUA INTERPRETER in nse_init.cc:763: /usr/share/nmap/scripts/robots.nse:4: module 'http' not found:
no field package.preload['http']
no file '/usr/share/nmap/nselib/http.lua'
no file './http.lua'
no file '/usr/local/share/lua/5.1/http.lua'
no file '/usr/local/share/lua/5.1/http/init.lua'
no file '/usr/local/lib/lua/5.1/http.lua'
no file '/usr/local/lib/lua/5.1/http/init.lua'
no file '/usr/lib/nmap/nselib-bin/http.so'
no file './http.so'
no file '/usr/local/lib/lua/5.1/http.so'
no file '/usr/local/lib/lua/5.1/loadall.so'
SCRIPT ENGINE: Aborting script scan.
Interesting ports on 192.168.40.12:
Not shown: 1710 closed ports
PORT     STATE SERVICE VERSION
22/tcp   open  ssh     **OpenSSH 3.9p1** (protocol 1.99)
53/tcp   open  domain  dnsmasq 2.47
80/tcp   open  http    **Apache httpd**
222/tcp  open  ssh     **OpenSSH 3.9p1** (protocol 1.99)
8081/tcp open  http    CherryPy httpd 2.3.0
MAC Address: 00:10:F3:0F:59:B7 (Nexcom International Co.)
Device type: firewall
Running: IPCop Linux 2.4.X
OS details: IPCop firewall 1.4.10 - 1.4.15 (Linux 2.4.31 - 2.4.34)
Network Distance: 1 hop

OS and Service detection performed. Please report any incorrect results at http://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 8.032 seconds

Eu modifico o httpd.conf e troco duas linhas

ServerSignature Off 
ServerTokens Prod

e reinicie o servidor apache, mas ele ainda me mostra o nome do apache

Poderia alguém me ajudar nisso!

    
por M.Rezaei 05.11.2009 / 13:28

7 respostas

5

Para o OpenSSH, tente o seguinte:

me@lappy:~# ncat 192.168.0.222 22
SSH-2.0-OpenSSH_5.1p1 Debian-3ubuntu1

Não desperdice nada nem nada, mas vamos editá-lo apenas por diversão. Primeiro vamos fazer uma cópia do sshd para trabalhar.

root@mohsen-desktop:~# mkdir tmp
root@mohsen-desktop:~# cd tmp
root@mohsen-desktop:~/tmp# cp /usr/sbin/sshd .

Agora, vamos modificá-lo.

root@mohsen-desktop:~/tmp# hexedit sshd

Ok, uma janela azul deveria ter aparecido, agora olhe para a parte inferior e observe os comandos. Queremos usar a pesquisa, então pressione control + w para garantir que "Search for text string" esteja em branco, pressione enter. Agora digite "OpenSSH" pressione enter e você será direcionado para a parte exata que você precisa modificar.

Será parecido com isso, apenas mude tudo que está em vermelho para 0 e você vai acabar com o que eu tenho abaixo. Se você quiser digitar algo mais Pressione TAB e digite o que você quer na parte ASCII, basta lembrar que não há backspace.

00053FE0 6E 64 2D 6C 69 6E 65 00 4F 70 65 6E 53 53 48 5F nd-line.OpenSSH_
00053FF0 35 2E 31 70 31 20 44 65 62 69 61 6E 2D 33 75 62 5.1p1 Debian-3ub
00054000 75 6E 74 75 31 00 25 73 2C 20 25 73 0A 00 4B 52 untu1.%s, %s..KR

Agora deve ficar assim.

00053FE0 6E 64 2D 6C 69 6E 65 00 4F 70 65 6E 53 53 48 00 nd-line.OpenSSH.
00053FF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00054000 00 00 00 00 00 00 25 73 2C 20 25 73 0A 00 4B 52 ......%s, %s..KR

Quando o seu hit for + x para salvá-lo e dar um lançamento, lembre-se de que ele exige o caminho exato.

root@mohsen-desktop:~/tmp# /root/tmp/sshd
root@mohsen-desktop:~/tmp# ncat localhost 22
SSH-2.0-OpenSSH

Apenas certifique-se de que você pode se conectar a ele e pronto.

killall sshd
rm /usr/sbin/sshd
mv /root/tmp/sshd /usr/sbin/

Para ocultar o nome do servidor da Web, você deve compilar o arquivo fonte do apache e o arquivo conf da edição nele.

    
por 22.12.2009 / 12:23
5

Eu não acredito que você pode esconder o tipo de servidor do NMap, como é inteligente o suficiente para detectar o tipo de software de negociação handshake, manipulação de falhas, etc Quanto ao OpenSSH, a partir do FAQ :

2.14 - Why does OpenSSH report its version to clients?

OpenSSH, like most SSH implementations, reports its name and version to clients when they connect, e.g.

SSH-2.0-OpenSSH_3.9

This information is used by clients and servers to enable protocol compatibility tweaks to work around changed, buggy or missing features in the implementation they are talking to. This protocol feature checking is still required at present because the SSH protocol has not been yet published as a RFC and more incompatible changes may be made before this happens.

Se você realmente deseja corrigir o SSH para impedir a exibição da versão, veja como fazer isso (pessoalmente não testado), e aqui está uma descrição de sua mentalidade ( segurança através da obscuridade , pros e cons ) e aqui está porque eu acho que não é bom e por que Bruce Schneier acha que às vezes é bom e ruim o resto do tempo .

    
por 05.11.2009 / 13:43
3

A string da versão sshd não é configurável no tempo de execução. Você pode alterá-lo recompilando o OpenSSH depois de modificar o SSH_VERSION #define, ou onde ele é usado no sshd.c:

  snprintf(buf, sizeof buf, "SSH-%d.%d-%.100s%s", major, minor,
      SSH_VERSION, newline);
    
por 05.11.2009 / 13:48
1

Não é uma opção configurável. Em ambos os casos, você precisaria fazer alterações no código-fonte.

O

OpenSSH depende do banner de versão para negociar certos recursos e peculiaridades entre o servidor e o cliente. Você pode encontrar patches mais antigos para essas mudanças como esta , que você pode adaptar para lançamentos mais recentes.

Para o Apache , houve alguma discussão no e, mais recentemente, sobre uma opção Off para ServerTokens , que removeria o nome do produto. Mas acredito que tenha sido vetado a cada vez. Novamente, você pode querer usar ou adaptar alguns patches disponíveis , mas você estaria lá fora em seu próprio.

Sinceramente, você ficaria mais seguro e, de fato, mais confiável do que se desviando do lançamento, apenas garantindo que o software seja atualizado quando necessário. Ocultar essas informações pode adiar alguns invasores de drive-by. Mas isso não fará nenhum bem contra ataques com scripts cegos ou mais determinados.

    
por 05.11.2009 / 13:53
0

Para o OpenSSH, tente o seguinte: No arquivo / etc / ssh / sshd_config, adicione string:

Banner /etc/ssh/banner

E no tipo / etc / ssh / banner algo estranho, como "MS Telnet Service 1.2":)

Para o serviço Apache, você pode tentar seguir a técnica:

No arquivo httpd.conf, escreva estas instruções:

ServerTokens ProductOnly
ServerSignature Off

Mas depois você verá uma string "Apache", sem versão. Se você quiser mais segurança para o Apache google para o "mod_security".

Boa sorte!

    
por 05.11.2009 / 13:40
0

Não parece reconhecer a versão do Apache. No entanto, existem muitas maneiras de dizer que é o Apache, por ex. olhando mensagens de erro do servidor.

    
por 06.11.2009 / 01:58
0

O que romandas disse. Os bandidos vão te dar uma conta se você tiver um servidor vulnerável e acessível, independentemente de tentar disfarçar a versão do software. Você obterá resultados muito melhores:

  • ativando a separação de privilégios em sshd ( UsePrivilegeSeparation - deve ser padrão para yes )
  • desativando o login de senha para ssh ( PasswordAuthentication no e UsePAM no )
    • a menos que você exija o PAM, então é mais configuração - mas você provavelmente não o faz
  • certificando-se de que o Apache seja chrooted para nobody ou equivalente ( User e Group diretivas em httpd.conf )

e mantendo tudo atualizado. Especialmente apache.

    
por 23.07.2010 / 05:59