Mon projet a besoin de moi pour désactiver sftp pour certains utilisateurs, mais ces utilisateurs doivent toujours se connecter via ssh. Quelqu'un sait-il comment mettre cela en œuvre?
J'ai vu des suggestions pour changer le fichier /etc/ssh/sshd_config
, mais je ne sais pas quoi changer.
owner
d'accès sortant. Cela suppose que vous allez être testé par une équipe rouge. Si tout le monde accédant à votre système obéit toujours aux règles et n'a jamais de mauvaise intention, alors mon approche serait lourde et trop complexe.Réponses:
En général, cela est une mauvaise pratique de sécurité pour des raisons que d'autres ont énumérées. Cependant, le but de votre mission, je pense, est de vous apprendre que vous pouvez avoir des sections de configuration conditionnelles basées sur divers critères.
Pour ce faire, utilisez un
Match
bloc conditionnel *.Voir
sshd_config(5)
sous laMatch
section pour plus d'informations et l'appariementGroup
.* Il y a plus d'une façon de le faire.
la source
Cela n'a aucun sens, c'est la sécurité à travers une obscurité inutile. Tout utilisateur capable de SSH pourra transférer n'importe quel fichier qu'il pourra lire via la session SSH. Vous pourrez également écrire, si vous êtes autorisé à le faire.
Comme par exemple, vous pouvez télécharger / etc / passwd via ssh en utilisant la méthode suivante (aucune session scp / sftp requise): ssh [email protected] "cat / etc / passwd"> passwdcopy
Si vous pouvez le voir sur votre écran via SSH, vous pouvez facilement le copier sous forme de fichier.
La seule façon dont cela aurait du sens est que vous ayez un shell restreint personnalisé qui applique une politique de sécurité.
Cependant, l'inverse de cela a du sens (désactivation du shell ssh mais laisse scp / sftp activé) car vous ne pouvez pas exécuter des commandes arbitraires via sftp / scp que vous pouvez via un shell ssh.
PS: Je suppose que le shell SSH que vous accordez est un shell standard qui permet une exécution arbitraire. Si ce n'est pas le cas, voyez ceci: Comment désactiver le sous-système sftp pour un utilisateur ou un groupe spécifique? et jetez un œil à l'option de configuration du sous-système de sshd_config.
la source
Je préfère utiliser un groupe pour cela.
Il est utile en combinaison avec les utilisateurs qui ont des coquilles restreintes. Je donne parfois un accès ssh à un client afin qu'il puisse accéder à un vidage sql de leur base de données en définissant leur shell sur un script qui décharge leurs données. Les couper de scp semble également être une bonne idée. Ils n'ont pas accès à l'exécution
cat
pour transférer un fichier sur ssh.la source
Directive 'Subsystem' is not allowed within a Match block
Il est possible d'activer SFTP globalement et de désactiver SFTP uniquement pour certains utilisateurs.
Cela ne fonctionne pas si vous souhaitez que votre utilisateur reçoive une invite shell standard. Cela n'a pas non plus de sens, car vous pourriez contourner la plupart des choses si vous avez accès au shell. Cela ne fonctionnera que si vous souhaitez uniquement donner accès à un programme spécifique.
Personnellement, j'en ai besoin parce que je veux donner accès à certains dépôts git via SSH, et j'aime désactiver les systèmes qui ne sont pas nécessaires. Dans ce cas, SFTP n'est pas nécessaire.
Correspondant à
Pour faire correspondre un ensemble d'utilisateurs, vous pouvez configurer SSH avec le
Match
mot clé. Dusshd_config(5)
manuel:Quelques exemples:
Match User eva
correspond à l'utilisateur "eva"Match User stephen,maria
correspond aux utilisateurs "stephen" et "maria"Match Group wheel,adams,simpsons
correspond aux groupes "roue", "adams", "simpsons"Si vous voulez plus d'informations, il y a des charges dans le
sshd_config(5)
manuel.Commande forcée
Normalement, vous obtenez le shell de connexion de l'utilisateur lorsque vous vous connectez via SSH, mais SSH peut être configuré pour forcer une certaine commande. La commande est forcée pour toute connexion SSH, y compris SFTP, et vous pouvez donc avoir la possibilité de forcer la commande souhaitée.
La commande à forcer peut être configurée avec le
ForceCommand
mot - clé. Dusshd_config(5)
manuel:Vous pouvez donc forcer la commande contrainte que vous souhaitez utiliser
ForceCommand <your command>
. Par exemple:Exemple
Dans mon cas où je veux donner un accès à git, j'ai seulement besoin que l'utilisateur y ait accès
git-shell
. C'est la section qui désactive SFTP pour mes utilisateurs git, avec quelques options de sécurité:la source
Testé et fonctionnant sur CentOS 6.6. Notez que le sous-système n'est pas autorisé avec Match au moins sur les nouvelles versions CentOS. La page de manuel de sshd_config répertorie les mots clés limités autorisés avec la condition de correspondance.
la source
Vous pouvez regarder scponly pour faire l'inverse, autoriser uniquement scp / sftp mais pas d'accès shell.
Je suis d'accord avec @Nathan ci-dessus, cela n'a pas beaucoup de sens. Si vous êtes mort, essayez de modifier votre fichier / etc / ssh / sshd_config et de supprimer / commenter la ligne suivante:
Sous-système sftp / usr / libexec / openssh / sftp-server
la source
ne donner aucun répertoire personnel à l'utilisateur
Remplacez Subsystem sftp / usr / libexec / openssh / sftp-server dans le fichier / etc / ssh / sshd_config par Subsystem sftp / dev / null / usr / libexec / openssh / sftp-server
Redémarrez ensuite le ssh
ça marche pour moi, debian.
la source
Dans le
~/authorized_key
configurez la clé utilisateur comme suit:la source