Clé SSH privée et publique pour plus d'utilisateurs, utilisateurs root et sudo (VP)

1

Je voulais demander comment utiliser la même authentification (clé privée et clé publique SSH) pour l'utilisateur root et pour un autre utilisateur (utilisateur sudo) sur un VPS.

Ou, en termes de sécurité, il est préférable de créer et de charger la clé (j'utilise puttygen) directement en tant qu'utilisateur sudo?

Désactiver alors le login root et sans appliquer l'authentification par clé sur root? Est-ce sécuritaire?

Merci beaucoup d'avance pour l'aide, je commence à devenir fou .. :(

Sefora
la source

Réponses:

1

Beaucoup de questions différentes (séparées) ici ...

Considérations pratiques

Pour utiliser la même paire de clés pour plusieurs utilisateurs, vous pouvez simplement copier le contenu (tout ou partie) de ~/.ssh/authorized_keys dans un autre utilisateur ${HOME}/.ssh/authorized_keys fichier. Vous devez vous assurer que les autorisations sur le .ssh répertoire et authorized_keys fichier sont suffisamment serrés ou le serveur SSH peut générer une erreur et refuser de le traiter. Pour une idée: seul l'utilisateur actuel a besoin d'accéder à ces fichiers et il n'est pas nécessaire qu'ils soient capables de les écrire ou de les exécuter. Une autorisation de 400 pour le fichier et de 500 pour le répertoire (elle doit être exécutée pour que vous puissiez énumérer son contenu) devrait bien se passer. Voir ici pour plus d'informations sur les masques de permission si vous n'êtes pas familier.

Considérations de sécurité

Tout d'abord, il est toujours judicieux de désactiver entièrement la connexion root via SSH et de définir un mot de passe root (sécurisé) distinct sur la boîte. sudo est à peu près le même niveau de sécurité que su si vos utilisateurs sudoers ont des mots de passe sécurisés; sinon ce n'est pas le cas.

Si vous avez souvent besoin de root, vous devez rechercher des moyens pour donner aux utilisateurs des autorisations spécifiques et ciblées afin de satisfaire les cas d'utilisation les plus courants de l'utilisation du serveur. Cela réduira le besoin de se connecter en tant que root, ce qui représente toujours un risque élevé en raison des autorisations très ouvertes.

Pour renforcer votre serveur SSH, vous devez:

  • Remplacez son port 22 par défaut par un numéro à 5 chiffres (inférieur à 65 536, car le numéro de port est une valeur de 16 bits)
  • Désactiver la connexion SSH basée sur un mot de passe pour tout utilisateurs (pas seulement root)
  • Utilisez des paires de clés fortes avec des clés privées 2048 bits ou 4096 bits. Toujours utiliser RSA, pas les algs plus faibles tels que DSA.
  • Définissez des mots de passe forts pour tous les sudoers ainsi que pour les utilisateurs root.

La question de savoir s'il faut réutiliser la même paire de clés disparaît si vous désactivez la connexion root. Si vous avez besoin de plusieurs utilisateurs normaux et que vous êtes le seul être humain à se connecter au serveur, je ne vois pas de mal à réutiliser la même paire de clés en copiant le fichier allowed_keys. Si vous avez plusieurs locataires dans la boîte, chaque personne doit avoir sa propre paire de clés.

allquixotic
la source
lier ssh à un port supérieur à 1023 ne fait que poser des problèmes, car tout le monde sur le système peut s'y lier et voler des informations d'identification. Les autres recommandations sont bonnes. Sauf que j'éviterais d'utiliser sudo sauf si vous devez modifier les rôles SELinux, voir: dmitry.khlebnikov.net/2015/07/…
galaxy
c'est toujours une bonne idée de désactiver entièrement le login root sur SSH, - Vouliez-vous dire une connexion par mot de passe? ou la connexion root entièrement (pose un problème pour le système distant)?
EPo
0

Pour avoir l’authentification pour plusieurs utilisateurs, ajoutez simplement la clé publique SSH à la fois aux utilisateurs normaux. ~/.ssh/authorized_keys fichier et à la racine ~/.ssh/authorized_keys fichier. Ensuite, vous pouvez sélectionner le compte auquel vous connecter en choisissant le nom d'utilisateur dans votre programme client.

Il était généralement préférable de désactiver complètement la connexion root et de toujours utiliser un utilisateur normal pour se connecter et utiliser sudo ou su. Cependant, avec l’authentification par clé publique, le risque que quelqu'un vous force brutalement à forcer votre clé est minime. Si vous ne définissez pas de mot de passe pour l'utilisateur root, beaucoup de gens diront qu'il est correct de se connecter en tant que root. Si vous souhaitez ajouter une couche de sécurité, désactivez la connexion root, définissez un mot de passe pour un utilisateur normal sudo vous le demande lorsque vous l’utilisez) et utilisez une authentification à clé publique pour permettre à l’utilisateur normal de se connecter.

mtak
la source
0

Merci beaucoup! Donc j'ai:

  • Création de clés publiques et privées avec PuttyGen (SSH-2 RSA, 4096 bits et ajout d’une phrase secrète);
  • Clé publique téléchargée sur le serveur (avant pour l'utilisateur sudo, puis pour le compte root);
  • Nombre de port modifié.
  • PermitRootLogin no, PubkeyAuthentication oui, PasswordAuthentication non.

De cette façon:

  • Si j'essaie de me connecter en tant qu'utilisateur root ou sudo et que je n'ai pas de clé privée sur Putty, le message "Déconnecté: aucune méthode d'authentification prise en charge disponible (serveur envoyé: publickey)", aucune phrase secrète demandée;
  • Si j'essaie de me connecter en tant que root + key private = il demande la phrase secrète mais ensuite l'erreur "Le serveur a refusé la signature à clé publique malgré l'acceptation de la clé" et "Disconnected";
  • Si j'essaie avec sudo utilisateur + clé privée + mot de passe correct = je peux me connecter

Maintenant, l'accès à SSH devrait être sûr à 99%, non?

Merci beaucoup

Sefora
la source