Autoriser la connexion root à partir d'une seule adresse IP

14

J'ai centos5.

Existe-t-il un moyen de me connecter à mon serveur vps avec l'utilisateur root à partir d'une adresse IP particulière uniquement.

J'ai lu que je peux utiliser une clé privée pour me connecter à sshd. Mais le problème est que j'utilise SFTP pour tous mes webistes et je ne veux pas que les utilisateurs non informatiques utilisent des clés pour se connecter avec SFTP.

OU existe-t-il un moyen pour que seul root puisse utiliser des clés pour se connecter au shell, mais pour d'autres son mot de passe normal


la source

Réponses:

15

Une meilleure façon consiste maintenant à utiliser le mot clé Match:

Match Host myworkstation
        PermitRootLogin yes

ou

Match Address 192.168.1.100
        PermitRootLogin yes

De cette façon, vous pouvez laisser PermitRootLogin défini sur «non», mais vous pouvez toujours vous connecter en tant que root à partir de votre poste de travail.

Cela peut également être utilisé, par exemple, pour permettre à root de rsync les données entre deux hôtes.

dannyw
la source
votre exemple rsync est exactement le cas d'utilisation pour lequel j'ai googlé cette question. Je vous remercie! ;)
Jan
Sachez que cela ne fonctionne qu'avec le DNS inverse de l'adresse IP source. (au moins pour moi, c'était le seul moyen)
mveroone
9

Il est généralement préférable de se connecter en tant qu'utilisateur non privilégié, puis d'utiliser 'su -' ou 'sudo' pour obtenir les privilèges root, mais ...

Vous pouvez toujours mettre la restriction IP sur votre clé dans ~ root / .ssh / authorized_keys:

from="192.168.1.100" ssh-rsa AAAAh9uif...auwehuf== [email protected]

Cela permettrait à ssh d'utiliser la clé [email protected] uniquement à partir de 192.168.1.100.

Cakemox
la source
D'accord, bien que ce soit plus compliqué à faire pour des choses comme sftp, rsync, sshfs ...
mveroone
3

Utilisation:

PermitRootLogin sans mot de passe

Dans / etc / ssh / sshd_config. Chaque utilisateur à l'exception de root sera autorisé à utiliser les connexions par mot de passe. Root doit utiliser des clés pour se connecter.

rubiojr
la source
Est-ce que cette slution fonctionnera ?? avez-vous essayé cela
J'utilise ce paramètre sur tous les serveurs que je gère. Il empêche les attaques root bruteforce / dict. unixhelp.ed.ac.uk/CGI/man-cgi?sshd_config+5
rubiojr
Cela semble casser git pullcependant: / etc / ssh / ssh_config: ligne 68: Mauvaise option de configuration: permitrootlogin
geoidesic
PermitRootLogin n'apparaît pas non plus dansman ssh_config
geoidesic
Aussi facilement annulé avecssh -o PreferredAuthentications=password
geoidesic
2

Modifier sshd_config(généralement dans /etc/ssh) et ajouter ou modifier les directives suivantes

  PermitRootLogin yes
  AllowUsers root@thehosttoallow

Redémarrez ensuite le démon

  service ssh restart
Ø bague
la source
Je pense que, si l'OP voulait utiliser AllowUsers, il devrait spécifier tous les utilisateurs auxquels il souhaite avoir accès. Votre exemple permettrait uniquement à root de s'authentifier via ssh.
EEAA
1
Oui, c'est exprès. Pour permettre à n'importe quel utilisateur, en *@thehosttoalloweffet, laissez entrer n'importe quel utilisateur.
Anneau Ø
Également facilement annulé avecssh -o PreferredAuthentications=password
geoidesic
0

Tout d'abord, pourquoi voudriez-vous empêcher les utilisateurs d'utiliser l'authentification par clé? Cela n'a aucun sens pour moi.

Deuxièmement, n'autorisez pas la connexion root via ssh. Il suffit de ne pas le faire - il n'y a aucune bonne raison de le faire. Cela va à l'encontre de toutes les meilleures pratiques, et pour une bonne raison. Si vous devez accorder des autorisations pour lire / écrire certains fichiers, vous devriez pouvoir le faire via les autorisations standard du système de fichiers Linux. Si vous avez besoin d'un contrôle d'accès plus fin, examinez le système ACL Linux.

EEAA
la source
que faire si je désactive la connexion root et qu'aucun des utilisateurs n'a accès à un fichier de configuration principal. Ensuite, je suis verrouillé car je ne peux pas me connecter via root
1
Lorsque vous désactivez la connexion root via ssh, root pourra toujours se connecter via la console. En outre, vous avez toujours la possibilité d'accorder à un utilisateur des autorisations root-esque normales via sudo. Cela ne fonctionnera pas pour sftp, mais en tant que restauration automatique au cas où vous auriez besoin de réparer les choses, cela fonctionnerait bien et est le moyen préféré d'accorder des autorisations.
EEAA
1
@ErikA Autoriser à rootpartir d'un hôte unique n'est pas dangereux. Il y avait une tendance contre l' rootaccès via il y telneta quelques années (en fait, sshc'était fréquent), mais autoriser la rootconnexion sshà un seul hôte ne semble pas dangereux.
Anneau Ø
Bien sûr, cela peut être «sûr», mais je dirai quand même que c'est une mauvaise idée. Je dis cela principalement parce que, lorsque les gens ont un moyen facile d'obtenir un accès root, ils l'utilisent plutôt que d'utiliser un moyen plus sûr et plus approprié pour y accéder (sudo).
EEAA
2
Compte tenu de la question de l'auteur, on peut supposer qu'il souhaite effectuer des tâches administratives via l' rootutilisateur. Autoriser l' rootaccès direct à partir d'un seul hôte dans ce cas est une alternative raisonnable.
Anneau Ø