Empêcher SSH de publier son numéro de version

13

Le serveur que j'utilise est Ubuntu 10.10. Pour assurer la sécurité, je souhaite modifier la bannière que le serveur envoie au client.

Si je telnet à mon hôte sur le port 22, il me dit la version exacte de SSH que j'utilise (SSH-2.0-OpenSSH_5.3p1 Debian-3ubuntu4). La situation est la même avec MySQL et Cyrus.

Aucune suggestion? Au moins pour SSH?

Merci

Lerikun
la source
5
J'espère que vous réalisez également qu'il faut plus que la simple suppression de ces bannières pour garantir la sécurité de votre serveur.
Ben Pilbrow
10
Ces informations étant largement hors de propos, les bots essaieront les hacks qui fonctionnent sur les anciennes versions, quelles que soient les informations de version fournies par votre serveur. Les utilisateurs hostiles attaquant malicieusement votre serveur sont le moindre de vos soucis; les utilisateurs imprudents sont généralement beaucoup plus dangereux.
Chris S
Ben, je pense que je sais ce que je demande. Et je sais comment protéger un serveur NIX grâce. Chris, tâtonner dans le noir est bien aussi. Indépendamment de snort, iptables fail2bans etc.
Lerikun
tant que vous savez que c'est l'une des nombreuses choses à faire, ça va. Je ne voulais pas que vous partiez après avoir fait cela en pensant que votre système était super sécurisé, c'est tout.
Ben Pilbrow
Comme l'a souligné Auticracy, je veux au moins masquer "Debian-3ubuntu4".
Lerikun

Réponses:

17

Presque universellement, les bannières d'identification font partie du code compilé et n'ont pas d'options de configuration pour les modifier ou les supprimer. Vous devrez recompiler ces logiciels.

Jeff Ferland
la source
Merci. La seule vraie réponse utile ici. Qu'en est-il de TCP Wrapper, ils ajoutent simplement une bannière mais ne cachent pas les informations réelles?
Lerikun
6
Non seulement il est compilé, mais il est également utilisé par les clients pour déterminer les niveaux de connexion compatibles.
Jeremy Bouse
32

Bien qu'il soit extrêmement difficile de masquer le numéro de version de votre démon SSH, vous pouvez facilement masquer la version linux (Debian-3ubuntu4)

Ajoutez la ligne suivante à /etc/ssh/sshd_config

DebianBanner no

Et redémarrez votre démon SSH: /etc/init.d/ssh restartouservice ssh restart

Harrison Powers
la source
7
Merci, cela fonctionne parfaitement! Je suis d'accord que la suppression des informations de version est une sécurité par obscurité et pourrait introduire plus de problèmes qu'elle résout. Avec Debian cependant, OpenSSH annonce non seulement sa propre version, mais la version et la saveur spécifique du système d'exploitation - à savoir "SSH-2.0-OpenSSH_6.7p1 Raspbian-5 + deb8u3". Félicitations, sans aucune sorte d'authentification, vous savez maintenant que vous parlez à un RaspberryPi exécutant Raspbian, et votre prochaine étape évidente serait d'essayer de vous connecter en tant que "pi" avec le mot de passe par défaut. À mon humble avis, cela donne beaucoup d'informations sur la première date.
Saustrup
Brillant, l'un des meilleurs joyaux cachés trouvés ici.
Rui F Ribeiro
19

Les cacher ne sécurisera pas votre serveur. Il existe de nombreuses autres façons de détecter ce que votre système exécute. Pour SSH en particulier, l'annonce de version fait partie du protocole et est obligatoire.

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

bahamat
la source
Moins les gens connaissent votre système ... Vous pouvez être en désaccord. Et les autres services? Je parle en général de Cyrus (IMAP / POP3) et MySQL et autres. Et s'il y a deux administrateurs - je n'ai pas besoin de m'en tenir au protocole?!
Lerikun
3
@lerikun: Il ne s'agit pas de le partager avec des pirates effrayants. Il s'agit de SSH ne pouvant pas se connecter car il ne sait pas quel protocole utiliser. SSHD doit annoncer.
Satanicpuppy
9
"moins les gens connaissent votre système, mieux c'est". Oui, bien sûr, c'est une déclaration qui sonne bien mais ne fait pas grand-chose, comme "Si je gagne à la loterie, je vais ...". La sécurité par l'obscurité est au mieux une sécurité médiocre.
Rob Moir
1
Robert, c'est une déclaration qui signifie beaucoup. Pourquoi le coffre-fort est dans la pièce sombre où personne ne peut le voir? ... Ça ne fait rien. Je ne demande pas comment sécuriser mon serveur. Je pense que ma question était claire. Oui, l'autocratie, je veux au moins m'en débarrasser.
Lerikun
2
Pour ce que ça vaut, Robert Moir a tout à fait raison.
Sirex
8

Je suis sûr que vous ne pouvez pas réellement changer l'annonce de version.

Les meilleurs moyens de sécuriser sshd sont:

  1. Modifiez le numéro de port par défaut.
  2. Interdire les ouvertures de session root.
  3. Forcer le protocole 2 (en supposant que ce n'est pas fait par défaut).
  4. Mettez en liste blanche les serveurs autorisés à SSH dans.

Les trois premiers peuvent être effectués en modifiant / etc / sshd_config

Le quatrième dépend du logiciel de pare-feu que vous utilisez.

Satanicpuppy
la source
1/2/3 déjà fait. en utilisant des certificats sans mot de passe. Fail2ban (IMAP, POP, SMTP, VPN, WEB) et denyhosts (SSH) La question concerne les annonces de version pour d'autres services.
Lerikun
6

Comme indiqué ci-dessus, la modification d'un numéro de version est

  1. Difficile à faire
  2. La sécurité par l'obscurité
  3. Pas flexible

Ce que je suggère, c'est l'implémentation de Port Knocking. C'est une technique assez simple pour masquer tout ce qui s'exécute sur votre serveur.

Voici une bonne implémentation: http://www.zeroflux.org/projects/knock

Voici comment je l'ai implémenté sur mes serveurs (autres numéros) pour ouvrir SSH uniquement aux personnes qui connaissent «le coup secret»:

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

Cela donnera une fenêtre de 5 secondes dans laquelle les 3 paquets SYN doivent être reçus dans le bon ordre. Choisissez des ports éloignés les uns des autres et non séquentiels. De cette façon, un analyseur de port ne peut pas ouvrir le port par accident. Ces ports n'ont pas besoin d'être ouverts par iptables.

Le script que j'appelle est celui-ci. Il ouvre un port particulier pendant 5 secondes pour l'IP envoyant les paquets 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

L'envoi des paquets SYN peut être très pénible donc j'utilise le script pour me connecter au SSH de mes serveurs:

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

(C'est assez évident ce qui se passe ici ...)

Une fois la connexion établie, le port peut être fermé. Astuce: utilisez l'authentification par clé. Sinon, vous devez être très rapide pour taper votre mot de passe.

Bart De Vos
la source