Avez-vous l'intention d'autoriser le service SSH dans le monde? Ou tout simplement aux membres de l'équipe à des endroits particuliers? Ma réponse dépend un peu de la gravité de votre défi.
Dans les deux cas, vous devez vous assurer que le serveur SSH n'autorise pas les connexions par mot de passe pour l'utilisateur root.
- Dans / etc / ssh / sshd_config, assurez-vous de ne jamais autoriser une connexion root sauf avec une clé SSH.
Dans mes systèmes, j'ai ce paramètre
PermitRootLogin without-password
mais je remarque dans Ubuntu plus récent qu'ils ont
PermitRootLogin prohibit-password
Si vous lisez "man sshd_config", je pense que cela signifie que ce nouveau "mot de passe interdit" signifie la même chose et est certainement plus évident dans sa signification. Ce n'est PAS par défaut sur certains systèmes Linux, mais devrait probablement l'être.
Maintenant, à propos de votre problème. Votre serveur système ne concerne-t-il que certains utilisateurs à des endroits particuliers? Faites ça!
éditez /etc/hosts.deny et insérez
TOUS: TOUS
Modifiez ensuite /etc/hosts.allow et répertoriez les numéros IP ou une plage qui souhaitent autoriser l'utilisation de SSH. La notation y est un peu déroutante car si vous souhaitez autoriser tous les systèmes avec des numéros IP tels que 111.222.65.101 à 111.222.65.255, vous mettez une entrée comme celle-ci dans hosts.allow
ALL: 127.0.0.1
sshd: 111.222.65.
sshdfwd-X11: 111.222.65.
Il s'agit d'une solution bruteforce et puissante. Si vos utilisateurs peuvent être énumérés par plage IP, faites-le!
Cette solution existait avant la création des tables IP, elle est (je pense) beaucoup plus facile à administrer, mais elle n'est pas aussi bonne qu'une solution de tables IP car les routines de tables IP repèreront les ennemis plus tôt que les programmes pilotés par hosts.allow et hosts .Nier. Mais c'est un feu sûr, un moyen simple de résoudre beaucoup de problèmes, pas seulement de SSH.
Notez le problème que vous créez par vous-même. Si vous souhaitez ouvrir un serveur FTP, un serveur Web ou autre, vous devrez autoriser les entrées dans les hôtes.
Vous pouvez atteindre le même objectif de base en jouant avec iptables et le pare-feu. Dans un sens, c'est une solution préférée car vous bloquez les ennemis à la limite extérieure. Ubuntu a "ufw" (pare-feu simple) et "man ufw" a de nombreux exemples. Je préfère avoir une interface graphique agréable pour parcourir tout cela, je n'ai pas à le faire tout le temps. Peut-être que d'autres peuvent nous dire s'il y en a un maintenant.
- D'autres articles ici suggèrent d'utiliser la clé publique SSH uniquement pour vos utilisateurs. Cela aidera certainement, au prix de la complexité et de la frustration de vos utilisateurs. Dans notre laboratoire, il y a 15 ordinateurs. Les utilisateurs vont parmi les ordinateurs. Exiger une authentification par clé SSH causerait de gros tracas car les gens passent d'un ordinateur à l'autre.
Une autre source de frustration se produira lorsque certains utilisateurs accumuleront différentes clés ssh pour différents serveurs. Parce que j'ai des clés SSH pour environ 12 projets différents, maintenant ssh échoue parce que j'ai trop de clés publiques (exigeant soit "ssh -o PubkeyAuthentication = false" soit la création d'une entrée dans le fichier .ssh / config. C'est un PITA)
- Si vous devez laisser le serveur ouvert à SSH du monde entier, alors vous devez certainement utiliser une routine de rejet pour bloquer les emplacements qui essaient fréquemment de se connecter. Il existe 2 programmes sympas pour cela, ceux que nous avons utilisés sont denyhosts et fail2ban . Ces programmes ont des paramètres qui vous permettent d'interdire les délinquants, pour une durée que vous aimez.
Dans nos systèmes Centos Linux, j'ai remarqué qu'ils ont abandonné le package denyhosts et ne proposent que fail2ban. J'ai aimé denyhosts car il a créé une liste d'utilisateurs / plages IP gênantes, puis dans hosts.deny, cette liste a été notée. Nous avons installé à la place fail2ban et c'est OK. Ma compréhension est que vous préférez bloquer ces mauvais utilisateurs sur le bord extérieur du serveur, donc les bloqueurs basés sur les tables ip, comme fail2ban, sont en fait meilleurs. Denyhosts fonctionne au niveau secondaire, après que les ennemis ont passé iptables, ils sont ensuite rejetés par le démon sshd.
Dans ces deux programmes, il est un peu fastidieux de faire sortir les utilisateurs de prison s'ils oublient leur mot de passe et d'essayer de se connecter plusieurs fois. Il est un peu difficile de faire revenir les gens lorsqu'ils font des erreurs de connexion. Vous auriez deviné qu'il y aurait une interface graphique pointer-cliquer où vous pourriez simplement pointer et laisser les gens rentrer, mais ce n'est pas de cette façon. Je n'ai qu'à le faire tous les quelques mois et oublier comment entre les temps, j'ai donc écrit des instructions pour moi sur ma page Web http://pj.freefaculty.org/blog/?p=301