Comment puis-je augmenter la sécurité ssh? Puis-je exiger à la fois une clé et un mot de passe?

16

J'ai un petit réseau de serveurs et je voudrais augmenter la sécurité générale. Je n'ai pas assez de temps / d'argent / de paranoïa pour configurer un VPN - quel est le moyen de base pour augmenter la sécurité de mon système?

Une chose pourrait être d'exiger que les utilisateurs envoient leur clé et entrent un mot de passe. C'est un peu difficile à google car tout sur le "mot de passe clé ssh" concerne le battage sans mot de passe. :-)

Un schéma avec lequel j'ai toujours voulu jouer est d'exiger que les connexions entrantes ne proviennent que d'une liste blanche d'adresses IP dyndns. Je sais que certaines têtes de sécurité vomiraient à l'idée de l'idée, mais le fait est que cela ajouterait une complexité très importante à l'exploitation d'une boîte.

Qu'est-ce que tu penses? Quoi d'autre est là-bas?

John Bachir
la source
Vous pouvez également restreindre la liste des utilisateurs autorisés à se connecter à l'aide des directives AllowUsers ou DenyUsers. Plus de détails sur ce post .
Fred

Réponses:

8

La connexion avec mot de passe et clé est identique à "juste avec clé". Lors de la création de la clé, vous êtes invité à saisir la phrase secrète. Si vous le laissez vide, aucun mot de passe ne vous sera demandé. Si vous remplissez un mot de passe, il vous sera demandé à chaque fois que vous souhaitez vous connecter.

Si vous êtes préoccupé par la sécurité, considérez certains de ces conseils mentionnés mille milliards de fois dans ce forum:

  • Désactiver la connexion ssh pour root
  • Autoriser l'accès ssh uniquement à partir d'adresses IP définies (iptables, hosts.allow, ...)
  • Déplacer le port ssh vers un autre port (plus d'obscurité que de sécurité, mais ça marche)
  • Surveillez les tentatives de connexion à l'étranger et réagissez en conséquence
  • Gardez votre système à jour

Etc.

Mise à jour: veuillez vous référer à la réponse ici pour savoir comment exiger à la fois une clé publique et un mot de passe système local avec un serveur OpenSSH.

mkudlacek
la source
Merci pour tous vos conseils. si la clé et le mot de passe sont tous deux requis, alors si un exploiteur trouve un mot de passe (comme si l'utilisateur l'utilise ailleurs qui n'est pas sécurisé), il ne peut pas entrer sans la clé, et si l'exploitant vole la clé de la machine de l'utilisateur , ils ne peuvent pas entrer sans connaître le mot de passe… non?
John Bachir
12
Ce n'est pas la même chose. Si vous n'avez besoin que de la clé, le serveur ne peut appliquer aucune stratégie de force de mot de passe sur la clé. Un utilisateur imprudent pourrait avoir une clé privée non chiffrée qui traîne sur le client, ce qui rend votre serveur vulnérable en cas de vol de la clé.
200_success
mkudlacek - Je ne connaissais pas hosts.allow avant - googler autour, il semble que mon idée de liste blanche de dyndns n'est pas si idiote après tout, je pense que je vais essayer ça.
John Bachir
1
200_success - est-il donc possible d'exiger à la fois une clé et un mot de passe?
John Bachir
J'utilise également l'application DenyHosts pour aider à verrouiller les personnes qui continuent d'essayer d'entrer et d'échouer. Une belle petite manière automatisée proactive de mettre les gens sur liste noire.
James T Snell
6

Une idée que j'ai trouvée intéressante est la suppression de port - en gros, pour établir la connexion ssh, vous devez d'abord sonder une séquence d'autres ports, avant que le serveur ssh accuse réception d'une demande de connexion. Si la séquence correcte de ports n'est pas utilisée, il n'y a pas de réponse, il semble donc qu'aucun serveur ssh ne soit en cours d'exécution. La séquence de ports est personnalisable et peut être partagée avec vos utilisateurs prévus; tout le monde serait effectivement incapable de se connecter.

Je n'ai pas essayé cela moi-même, mais d'après ce que j'ai entendu (ce qui n'est pas grand-chose en fait), les frais généraux sont négligeables et réduisent considérablement votre profil de visibilité.

weiji
la source
J'irais avec cela si vous voulez simplement "augmenter la sécurité générale" mais vous devriez probablement essayer de résoudre des problèmes de sécurité particuliers à la place.
Stefan Thyberg
Je l'utilise sur tous les sites sur lesquels je ssh, et c'est très efficace à mon humble avis.
Sirex
N'est-ce pas la même chose que d'avoir un mot de passe de 4 caractères de plus?
John Bachir
pas vraiment. Il y a 65536 ports et 26 lettres. Vous avez également la séquence de frappe de n'importe quelle longueur et vous pouvez limiter les tentatives à l'aide de techniques de pare-feu standard. Ce n'est pas de la sécurité en soi, mais c'est bien d'avoir.
Sirex
enfin 8 ou 12 caractères de plus :-D
John Bachir
3

Correctifs liés à l'activation directe dans SSH et beaucoup de discussions pertinentes:

Cela peut également être fait sans modification en combinant un script de vérification de mot de passe avec l'utilisation de l' ForceCommandoption de configuration.

Enfin, bien qu'aucun module n'existe pour cela, si vous avez déplacé l'authentification par clé publique vers PAM, vous pourrez exiger que les deux étapes passent avant que PAM ne considère l'authentification comme réussie.

Jeff Ferland
la source
2

Utilisez simplement

RequiredAuthentications publickey, password

dans sshd_configsi vous utilisez sshd de ssh.com. Cette fonctionnalité n'est pas disponible dans OpenSSH.

Flávio Botelho
la source
RequiredAuthenticationsest définitivement une extension non standard d'OpenSSH
Hubert Kario
Savez-vous quelles implémentations sshd prennent en charge cela?
John Bachir
Le serveur Tectia SSH le prend en charge. BTW: utilisez @nameOfUser lors de la réponse à leurs commentaires, de cette façon, ils seront informés de la réponse
Hubert Kario
Des fonctionnalités similaires sont prises en charge dans OpenSSH à partir de la version 6.2: serverfault.com/a/562899
Søren Løvborg
1

Vous pouvez également utiliser des mots de passe à usage unique pour augmenter la sécurité. Cela permettrait aux utilisateurs de se connecter à partir d'un terminal non sécurisé, qui peut avoir un enregistreur de frappe, s'ils avaient précédemment généré le prochain mot de passe. Il existe également des générateurs de mots de passe qui peuvent être installés même sur les anciens téléphones Java MIDP, que vous emportez avec vous tout le temps.

Prof. Moriarty
la source
Oui, sur mon serveur personnel, j'utilise un token Yubikey en plus de mon mot de passe. Le jeton génère un mot de passe à usage unique. Les deux sont nécessaires pour s'authentifier. Alternativement, j'autorise le contournement de la paire mot de passe / otp si vous vous authentifiez avec une clé SSH. Le Yubikey est bon marché et il existe de nombreux logiciels pour l'intégrer à Pam, le système d'authentification extensible de Linux.
Martijn Heemels
1

Je recommanderais de ne jamais exécuter un sshd, rdp ou de tels services de gestion sans restriction IP. En fait, je suggère de limiter l'accès à ces services aux administrateurs qui se connectent via VPN.

3molo
la source
1

En ce qui concerne votre question initiale sur la nécessité à la fois d'une clé et d'un mot de passe, si vous utilisez RHEL ou CentOS 6.3, cela est désormais possible. Les notes de version de RHEL 6.3 le décrivent, il s'agit d'ajouter ceci à votre sshd_config

RequiredAuthentications2 publickey,password
Mark McKinstry
la source
0

Je suis fortement d'accord avec 3molo. OpenSSH est le serveur SSH par défaut de Linux et Unix. Il n'y a aucune raison pour que nous le changions, en particulier pour des raisons de sécurité. Le VPN devrait être la meilleure solution, qui peut crypter notre trafic et fournir l'autorisation de mot de passe en 2 étapes.

mcsrainbow
la source
0

Vous ne savez pas pourquoi personne ne l'a mentionné, mais - vous devez vous assurer de générer les clés plus longtemps que 1024 bits par défaut, ce qui n'est plus considéré comme sécurisé.

mnmnc
la source