J'ai un éventail d'utilisateurs qui doivent simplement télécharger des fichiers vers leurs homedirs. Je pense que sftp suffirait, mais je ne veux pas qu'ils se connectent via shell. Est-ce donc possible? Ma plate-forme est centos 7, les homedirs de l'utilisateur sont stockés, disons / personal / $ user
J'ai créé un utilisateur avec ces paramètres
useradd -m -d /personal/user1 -s /sbin/nologin
assigné un mot de passe à l'utilisateur, puis lorsque j'utilise sftp pour me connecter à la machine, il est impossible de se connecter.
Réponses:
Modifiez votre
/etc/ssh/sshd_config
pour contenir:Redémarrez
sshd
. Si vous avez plusieurs utilisateurs, mettez-les tous sur la ligne utilisateur de correspondance, séparés par des virgules comme ceci:La clé pour configurer
sftp
pour ne pas autoriser l'accès au shell est de limiter les utilisateurs via l'ForceCommand
option.la source
Match User [SFTP user]
ForceCommand internal-sftp
seulement, sans chrooter.chroot
les utilisateurs afin qu'ils ne puissent pas naviguer vers le haut et hors de votre "prison" définieJ'aime la configuration suivante pour gérer l'accès SSH, que j'utilise au travail pour gérer un groupe d'utilisateurs sur une petite flotte de serveurs. La sécurité et la facilité de gestion figurent en tête de liste de mes priorités.
Ses fonctionnalités clés gèrent facilement les droits SSH via l'appartenance à un groupe Unix, disposent d'autorisations étroitement définies et sont sécurisées par défaut.
Mise en place
Installer le logiciel (facultatif mais utile):
Ajouter des groupes:
Dans
/etc/ssh/sshd_config
, assurez-vous que les paramètres suivants sontNo
:Et à la fin de
/etc/ssh/sshd_config
, ajoutez ces deux strophes:(n'oubliez pas de redémarrer SSH après avoir édité le fichier)
Explication
Alors, qu'est-ce que tout cela fait?
allowssh
groupe.sftponly
groupe ne peuvent pas obtenir un shell via SSH, uniquement SFTP.La gestion des personnes autorisées se fait ensuite simplement en gérant l'appartenance au groupe (ces modifications prennent effet immédiatement, aucun redémarrage SSH requis):
Notez que vos utilisateurs sftp doivent être membres à la fois
sftponly
(pour s'assurer qu'ils n'obtiendront pas de shell) et deallowssh
(pour permettre la connexion en premier lieu).Plus d'informations
Veuillez noter que cette configuration n'autorise pas les connexions par mot de passe ; tous les comptes doivent utiliser l'authentification par clé publique. C'est probablement la plus grande victoire en matière de sécurité que vous pouvez obtenir avec SSH, donc je pense que cela en vaut la peine, même si vous devez commencer maintenant.
Si vous ne voulez vraiment pas cela, ajoutez également
PasswordAuthentication yes
à laMatch Group allowssh
strophe. Cela permettra à la fois l'authentification par clé publique et par mot de passe pour lesallowssh
utilisateurs.Cette configuration limite tout
sftponly
utilisateur à son répertoire personnel. Si vous ne le souhaitez pas, supprimez laChrootDirectory %h
directive.Si vous ne voulez le chroot au travail, il est important que le répertoire personnel de l' utilisateur (et un répertoire au- dessus) est la propriété
root:root
et non modifiable par groupe / autre. Il est acceptable que les sous-répertoires du répertoire personnel appartiennent à l'utilisateur et / ou soient accessibles en écriture.Oui, le répertoire personnel de l'utilisateur doit appartenir à root et ne pas être accessible à l'utilisateur. Malheureusement, il existe de bonnes raisons à cette limitation. Selon votre situation, cela
ChrootDirectory /home
pourrait être une bonne alternative.La définition du shell des
sftponly
utilisateurs sur/sbin/nologin
n'est ni nécessaire ni nuisible pour cette solution, car SSHForceCommand internal-sftp
remplace le shell de l'utilisateur.L'utilisation
/sbin/nologin
peut être utile pour les empêcher de se connecter via d'autres moyens (console physique, samba, etc.).Cette configuration ne permet pas les
root
connexions directes via SSH; cela forme une couche supplémentaire de sécurité. Si vous avez vraiment ne besoin les connexions root directes, changer laPermitRootLogin
directive. Pensez à le régler surforced-commands-only
,prohibit-password
et (en dernier recours)yes
.Pour les points bonus, essayez de restreindre qui peut
su
rooter; ajouter un groupe système appeléwheel
et ajouter / activerauth required pam_wheel.so
dans/etc/pam.d/su
.la source
chown root:root
etchmod og-w
changez simplement leur shell par défaut en / sbin / nologin. En supposant que la plupart des variétés de Linux:
la source
Subsystem sftp internal-sftp
) (ou peut-êtreForceCommand internal-sftp
). S'il y en aSubsystem sftp /path/to/sftp-server
,nologin
cela empêchera même SFTP.vous pouvez utiliser tftp. quoi que ce soit sur ssh nécessitera un certain auth (clé | passe).
Bien que tftp puisse être sécurisé, il peut être utile de revoir la décision de fournir l'accès à tout sans authentification.
http://manpages.ubuntu.com/manpages/bionic/man1/tftp.1.html
la source