Je veux pouvoir utiliser SFTP pour modifier des fichiers qui nécessitent des autorisations root.
J'utilise l'authentification basée sur la clé SSH - clé rsa sur la carte à puce.
Si le système nécessite sudo pour exécuter des commandes de niveau racine, comment puis-je contourner ce problème?
Puis-je créer un moyen de contourner sudo pour SFTP uniquement?
Existe-t-il un moyen de conserver l'authentification sudo et la clé.
J'utilise Windows pour me connecter à Ubuntu. J'ai besoin de cela pour que Mac fonctionne également avec Ubuntu.
Je comprends comment faire le tunneling SSH pour administrer les services système. Actuellement, j'utilise directement la connexion de l'utilisateur root, mais la connexion par mot de passe est désactivée. Je n'ai pas compris comment utiliser sudo et SFTP en même temps. Il semble être une meilleure pratique d'exiger une connexion en tant qu'utilisateur non root, puis d'exiger l'utilisation de sudo, car les journaux enregistreront à qui ont été accordés des privilèges élevés pour chaque commande.
Dois-je m'en préoccuper lorsque j'utilise l'authentification par clé ou s'agit-il d'une différence triviale en matière de sécurité / journalisation? Il semble que l'authentification basée sur les clés enregistre le numéro de série de l'utilisateur dans les journaux, et vous pouvez avoir plusieurs clés pour que l'utilisateur root identifie chaque utilisateur. Cela semble être le même effet que l'utilisation de sudo pour moi. Ai-je tort?
sudo
.Réponses:
SFTP est une commande d'accès aux opérations sur les fichiers, avec les restrictions du compte que vous utilisez. Vous devez utiliser ssh pour effectuer plus d'opérations administratives, rendant impossible l'utilisation de sudo et SFTP en même temps. Si vous avez besoin d'accéder à l'intégralité du disque sans restriction à l'aide de SFTP, faites-le à l'aide du compte root. Quoi qu'il en soit, vous pouvez faire une connexion avec root sur sftp et ssh en même temps, bien sûr, en utilisant deux sessions différentes.
Les clés de sécurité améliorent la sécurité et facilitent la journalisation, ne nécessitant pas de saisie au clavier. Aide uniquement à se connecter, vous pouvez avoir plusieurs mots de passe pour chaque utilisateur du compte et avoir le même effet.
EDIT: J'ai oublié: vous pouvez créer un autre compte avec le même effet que root si vous attribuez l'ID utilisateur à 0, mais n'a aucun sens, étant dangereux de la même manière. Pourrait donner un peu d'obscurcissement si quelqu'un essaie de se connecter comme root, mais à part cela, cela n'avait pas beaucoup de sens.
la source
L'appel du sous-système avec sudo a fonctionné pour moi.
À un hôte Ubuntu par exemple:
la source
sudo /usr/libexec/openssh/sftp-server
Au-delà de ce que @MartinVonWittich a suggéré dans les commentaires ci-dessus, vous pouvez configurer une paire de clés SSH dédiée uniquement pour cette activité et les ajouter au
/root/.ssh/authorized_keys
fichier de l'utilisateur racine en limitant leur portée à une seule commande.Cela permettrait à un autre système avec la clé correspondante à cette paire de SFTP dans ce système en tant que root. Vous auriez toujours un enregistrement de cette connexion dans vos fichiers
syslog
et / ousecure.log
(en supposant que votre distribution fournit ce niveau de journalisation).REMARQUE: quiconque accède au serveur dans cette méthode aurait un accès cartes blanches, alors utilisez-le judicieusement. Mieux encore, continuez à lire et combinez cette capacité avec un accès en chroot et en lecture seule, pour créer des restrictions plus strictes et un accès ciblé à des emplacements spécifiques en tant que root.
chroot & readonly
L'autre technique que vous pourriez exploiter ici serait de limiter la connexion SFTP afin qu'elle soit chrootée dans des emplacements spécifiques en tant que root, en fonction de la clé SSH utilisée. Voir ma réponse à cette Q&R U&L intitulée: " Restreindre la sauvegarde sans mot de passe avec SFTP " pour plus de détails.
Vous pouvez également contrôler
sftp-server
via ses commutateurs-R
et-d
.la source
sftp-server
ne la rend pas plus sûre, n'est-ce pas? Si un attaquant accède à ce compte, il peut facilement se donner un shell root en utilisant SFTP. La limitation de commande est donc assez inutile du point de vue de la sécurité :)root
accès SFTP sous n'importe quelle forme est juste un problème, surtout lorsqu'il n'est pas chrooté.L'approche simple que j'ai suivie était de simplement sftp et de placer les fichiers sur une zone de scène (
mkdir
nouveau répertoire où vous avez des autorisations sur le serveur), puis de nouveau ssh pour déplacer les fichiers de là vers leur destination avecsudo cp
ousudo mv
.la source
J'ai eu un problème similaire en ce sens que je voulais utiliser vimdiff pour éditer des fichiers de configuration sur un groupe d'hôtes pour la plupart similaires, avec cssh et sudo et vous pourrez peut-être adapter ma solution à votre flux de travail.
sudoedit (qui fait partie de sudo) vous permet d'utiliser n'importe quel éditeur en tant qu'utilisateur normal pour éditer un fichier pour lequel vous n'avez pas l'autorisation d'écriture et vous pouvez spécifier l'éditeur avec une variable d'environnement. sudoedit copie le (s) fichier (s), appelle l'éditeur avec le nom de la ou des copie (s) et attend la fermeture de l'éditeur, puis copie la copie modifiée à son emplacement d'origine. J'ai donc créé un «éditeur» qui ne modifie pas, note simplement le fichier pour une utilisation ultérieure et attend et un wrapper autour de vimdiff qui utilise ce marqueur.
le premier fichier est ~ / .bin / redit
le second est ~ / .bin / redit1
La façon dont je les utilise est d'utiliser cssh pour ouvrir une connexion aux quatre hôtes, puis utiliser une commande comme
EDITOR=~/.bin/redit sudoedit /etc/conf/file
, puis dans une autre fenêtre~/.bin/redit1
, effectuez mes modifications, enregistrez et quittez, revenez à cssh et appuyez sur entrée pour valider les modifications et quittez sudoedit (sauf si je modifie plusieurs fichiers, auquel cas redit passe au fichier suivant dans la liste et que vous exécutez à nouveau redit1 pour le fichier suivant.)Puisque ce que vous faites est moins compliqué, vous n'avez pas besoin de redit1 car vous ne travaillez qu'avec un seul hôte distant, vous pouvez simplement pointer votre éditeur sftp sur host: .var / redit / host ou équivalent.
la source
Ce que je fais, c'est utiliser scp au lieu de ftp ftp, et changer le shell
sudo su -
en WinSCP c'est dans Advanced \ SCP \ Shell, mais cela ne fonctionne qu'avec le protocole scp.la source
Pour sftp: si vous disposez d'un accès sudsh shell ssh, vous pouvez ajouter votre nom d'utilisateur au groupe d'utilisateurs racine dans / etc / group, puis accorder à ce groupe des autorisations rx pour les dossiers auxquels vous souhaitez accéder.
la source
root
groupe, je me connecte via sftp mais cela ne me permet toujours pas de télécharger des fichiers à partir d'emplacements comme '/ etc' et ainsi de suite. Je ne sais pas si je fais quelque chose de mal, mais je soupçonne que cette réponse ne fonctionne pas.Vous pouvez insérer dans votre fichier sshd_config côté serveur:
De cette façon, quiconque a le droit de NOPASSWD sudo obtiendra un accès sftp enraciné.
la source
Subsystem
commande? Sur Ubuntu 16.04, je reçois "command not found"L'ajout de cette ligne dans / etc / ssh / sshd_config était un correctif pour moi et commentait la ligne de sous-système existante
Subsystem sftp sudo -n true && sudo -n /usr/lib/openssh/sftp-server || /usr/lib/openssh/sftp-server
puis
sudo systemctl sshd restart
la source