Il y a 389 articles et 19 utilisateurs inscrits (ce bandeau est défini dans MediaWiki:Sitenotice)
« SSH » : différence entre les versions
Aucun résumé des modifications |
Aucun résumé des modifications |
||
| Ligne 43 : | Ligne 43 : | ||
Pour mettre en place une prison du compte client dans son dossier {{HOME}}, on pourra suivre la page suivante | Pour mettre en place une prison du compte client dans son dossier {{HOME}}, on pourra suivre la page suivante | ||
[http://www.techrepublic.com/blog/opensource/chroot-users-with-openssh-an-easier-way-to-confine-users-to-their-home-directories/229 Chroot users with OpenSSH: An easier way to confine users to their home directories] | [http://www.techrepublic.com/blog/opensource/chroot-users-with-openssh-an-easier-way-to-confine-users-to-their-home-directories/229 Chroot users with OpenSSH: An easier way to confine users to their home directories] | ||
== Pré-requis == | == Pré-requis == | ||
L'utilisateur doit avoir un compte sur le serveur. Si ce n'est pas le cas, consulter la page de [[gestion d'utilisateurs UNIX]]. Il faut également un groupe auquel s'appliqueront les règles d'emprisonnement, il s'agit généralement de {{var|sftp}} ou {{var|sftponly}}. Vérifier si il existe et ajouter le si besoin : | L'utilisateur doit avoir un compte sur le serveur. Si ce n'est pas le cas, consulter la page de [[gestion d'utilisateurs UNIX]]. Il faut également un groupe auquel s'appliqueront les règles d'emprisonnement, il s'agit généralement de {{var|sftp}} ou {{var|sftponly}}. Vérifier si il existe et ajouter le si besoin : | ||
<syntaxhighlight lang="bash">groupadd sftp</syntaxhighlight> | |||
<syntaxhighlight lang="bash"> | |||
groupadd sftp | |||
</syntaxhighlight> | |||
== Configuration du serveur SSH == | == Configuration du serveur SSH == | ||
On commentera la gestion par défaut du groupe {{var|sftp}} : | On commentera la gestion par défaut du groupe {{var|sftp}} : | ||
<syntaxhighlight lang="bash"># Subsystem sftp /usr/libexec/openssh/sftp-server</syntaxhighlight> | |||
<syntaxhighlight lang="bash"> | |||
# Subsystem sftp /usr/libexec/openssh/sftp-server | |||
</syntaxhighlight> | |||
On rajoutera dans {{path|/etc/ssh/sshd_config}} les lignes suivantes, si elles ne sont pas présentes. De façon à emprisonner (ou chrooter) les utilisateurs du groupe {{var|sftp}} qui se connecte en SFTP : | On rajoutera dans {{path|/etc/ssh/sshd_config}} les lignes suivantes, si elles ne sont pas présentes. De façon à emprisonner (ou chrooter) les utilisateurs du groupe {{var|sftp}} qui se connecte en SFTP : | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
Subsystem sftp internal-sftp | Subsystem sftp internal-sftp | ||
| Ligne 59 : | Ligne 71 : | ||
AllowTcpForwarding no | AllowTcpForwarding no | ||
</syntaxhighlight> | </syntaxhighlight> | ||
{{notice|Sous CentOS/RedHat 5.6 (peut-être même 5.8) le paquet {{var|openssh}} ne supporte pas l'option {{cmd|Match}} nécessaire au prison. Il faut donc demander une mise à jour au sysadmin pour avoir une version de {{var|openssh>=4.4}}}} | |||
{{notice|Sous CentOS/RedHat 5.6 (peut-être même 5.8) le paquet {{var|openssh}} ne supporte pas l'option {{cmd|Match}} nécessaire au prison. Il faut donc demander une mise à jour au sysadmin pour avoir une version de {{var|openssh>=4 | |||
.4}}}} | |||
=== Droits du groupe === | === Droits du groupe === | ||
Pour que les fichiers créé par l'utilisateur {{var|client}} soit accessible en lecture et écriture au groupe, on modifiera la ligne {{cmd|Subsystem}} de {{path|/etc/ssh/sshd_config}}<ref>[http://jeff.robbins.ws/articles/setting-the-umask-for-sftp-transactions Setting the umask for SFTP transactions]</ref><ref> How to put desired umask with SFTP? http://serverfault.com/questions/70876/how-to-put-desired-umask-with-sftp</ref> comme suit : | |||
<syntaxhighlight lang="bash">Subsystem sftp /bin/sh -c 'umask u=rwx,g=rwx,o=r; /usr/lib/openssh/sftp-server'</syntaxhighlight> | Pour que les fichiers créé par l'utilisateur {{var|client}} soit accessible en lecture et écriture au groupe, on modifiera la ligne {{cmd|Subsystem}} de {{path|/etc/ssh/sshd_config}} | ||
<ref>[http://jeff.robbins.ws/articles/setting-the-umask-for-sftp-transactions Setting the umask for SFTP transactions]</ref> | |||
<ref> How to put desired umask with SFTP? http://serverfault.com/questions/70876/how-to-put-desired-umask-with-sftp</ref> | |||
comme suit : | |||
<syntaxhighlight lang="bash"> | |||
Subsystem sftp /bin/sh -c 'umask u=rwx,g=rwx,o=r; /usr/lib/openssh/sftp-server' | |||
</syntaxhighlight> | |||
{{notice|Si vous obtenez l'erreur : | {{notice|Si vous obtenez l'erreur : | ||
<syntaxhighlight lang="bash">Status: Connected to jubilo-web | |||
<syntaxhighlight lang="bash"> | |||
Status: Connected to jubilo-web | |||
Error: Connection closed by server with exitcode 127 | Error: Connection closed by server with exitcode 127 | ||
Error: Could not connect to server | Error: Could not connect to server | ||
</syntaxhighlight> | </syntaxhighlight> | ||
le chemin vers l'executable du serveur SFTP est peut-être incorrect, et il est toujours possible de se connecter en SSH}} | le chemin vers l'executable du serveur SFTP est peut-être incorrect, et il est toujours possible de se connecter en SSH}} | ||
De la même façon il faut que l'utilisateur {{var|ajlsm}} laisse le droit de lecture et d'écriture aux autres membres du groupe {{var|ajlsm}}. Pour ce faire, on change le {{cmd|umask}} lorsque l'utilisateur se connecter. Ceci peux se faire en rajouter la commande {{cmd|umask u=rwx,g=rwx,o=r}} dans le {{path|~/.bashrc}} de l'utilisateur {{var|ajlsm}} : | De la même façon il faut que l'utilisateur {{var|ajlsm}} laisse le droit de lecture et d'écriture aux autres membres du groupe {{var|ajlsm}}. Pour ce faire, on change le {{cmd|umask}} lorsque l'utilisateur se connecter. Ceci peux se faire en rajouter la commande {{cmd|umask u=rwx,g=rwx,o=r}} dans le {{path|~/.bashrc}} de l'utilisateur {{var|ajlsm}} : | ||
<syntaxhighlight lang="bash">echo "umask u=rwx,g=rwx,o=r" >> ~/.bashrc # en tant qu'utilisateur 'ajslm'</syntaxhighlight> | |||
<syntaxhighlight lang="bash"> | |||
echo "umask u=rwx,g=rwx,o=r" >> ~/.bashrc # en tant qu'utilisateur 'ajslm' | |||
</syntaxhighlight> | |||
Une fois c'est modification effectué, on redémarrera le serveur SSH : | Une fois c'est modification effectué, on redémarrera le serveur SSH : | ||
<syntaxhighlight lang="bash">/etc/init.d/sshd restart</syntaxhighlight> | |||
<syntaxhighlight lang="bash"> | |||
/etc/init.d/sshd restart | |||
</syntaxhighlight> | |||
== Configuration de l'utilisateur pour la prison == | == Configuration de l'utilisateur pour la prison == | ||
{{remarque|Sous CentOS, on pourra installé le paquet {{var|shadow-utils}} pour simplifier la gestion des utilisateurs}} | {{remarque|Sous CentOS, on pourra installé le paquet {{var|shadow-utils}} pour simplifier la gestion des utilisateurs}} | ||
On rajoute l'utilisateur au groupe emprisonnable : | On rajoute l'utilisateur au groupe emprisonnable : | ||
<syntaxhighlight lang="bash">usermod -G sftp utilisateur</syntaxhighlight> | |||
<syntaxhighlight lang="bash"> | |||
usermod -G sftp utilisateur | |||
</syntaxhighlight> | |||
On désactive son accès au shell : | On désactive son accès au shell : | ||
<syntaxhighlight lang="bash">usermod -s /bin/false utilisateur</syntaxhighlight> | |||
<syntaxhighlight lang="bash"> | |||
usermod -s /bin/false utilisateur | |||
</syntaxhighlight> | |||
Son dossier doit appartenir à root pour pouvoir appliquer la prison : | Son dossier doit appartenir à root pour pouvoir appliquer la prison : | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
chown root:root /home/utilisateur | chown root:root /home/utilisateur | ||
chmod 0755 /home/utilisateur | chmod 0755 /home/utilisateur | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== Accès limités à certains dossiers/fichiers == | == Accès limités à certains dossiers/fichiers == | ||
{{notice|Avant de commencer, on prendra connaissance de la section sur [[fstab]] et des '''contenus nécessaire''' à y ajouter}} | {{notice|Avant de commencer, on prendra connaissance de la section sur [[fstab]] et des '''contenus nécessaire''' à y ajouter}} | ||
On commencera par créé des dossiers vides, dans le {{HOME}} de l'utilisateur, dans lesquels on montera les dossiers auxquels on veut donner accès : | On commencera par créé des dossiers vides, dans le {{HOME}} de l'utilisateur, dans lesquels on montera les dossiers auxquels on veut donner accès : | ||
<syntaxhighlight lang="bash">mkdir ~/cdc ~/ead ~/pdf</syntaxhighlight> | |||
<syntaxhighlight lang="bash"> | |||
mkdir ~/cdc ~/ead ~/pdf | |||
</syntaxhighlight> | |||
=== Avec la méthode simple === | === Avec la méthode simple === | ||
Cette méthode utilise les droits UNIX classique, cela peux être compliqué à gérer. | Cette méthode utilise les droits UNIX classique, cela peux être compliqué à gérer. | ||
On monte les fichiers/dossier auquel on veut donner accès dans le dossier {{HOME}} de l'utilisateur. De cette façon ils seront soumis à la prison SSH. | On monte les fichiers/dossier auquel on veut donner accès dans le dossier {{HOME}} de l'utilisateur. De cette façon ils seront soumis à la prison SSH. | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
/home/www/UtilisateurXYZ/cdc /home/UtilisateurXYZ/cdc none bind 0 0 | /home/www/UtilisateurXYZ/cdc /home/UtilisateurXYZ/cdc none bind 0 0 | ||
| Ligne 104 : | Ligne 155 : | ||
Il faut adapter les droits des fichiers pour qu'ils soient accessible et éditable par l'utilisateur et l'application (souvent représenté par l'utilisateur et le groupe {{var|ajlsm}}) : | Il faut adapter les droits des fichiers pour qu'ils soient accessible et éditable par l'utilisateur et l'application (souvent représenté par l'utilisateur et le groupe {{var|ajlsm}}) : | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
usermod -aG ajlsm Etat-Valais # ajoute l'utilisateur au groupe de l'application | usermod -aG ajlsm Etat-Valais # ajoute l'utilisateur au groupe de l'application | ||
| Ligne 111 : | Ligne 163 : | ||
=== Avec la méthode avancée === | === Avec la méthode avancée === | ||
{{remarque|Cette section nécessite le paquet {{var|bindfs}} pour pouvoir fonctionner}} | {{remarque|Cette section nécessite le paquet {{var|bindfs}} pour pouvoir fonctionner}} | ||
On utilise bindFS pour monter des parties du système de fichier d'un endroit à l'autre, en '''surchargeant certains droits'''. Pour cela on configure le montage des fichiers dans {{path|/etc/fstab}}, comme suit : | On utilise bindFS pour monter des parties du système de fichier d'un endroit à l'autre, en '''surchargeant certains droits'''. Pour cela on configure le montage des fichiers dans {{path|/etc/fstab}}, comme suit : | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
bindfs#/home/ajlsm/apps/basse-bretagne/exemples/ead/fonds-prives/bretagne /home/basse-bretagne/ead fuse perms=0755,owner=basse-bretagne,group=ajlsm 0 0 | bindfs#/home/ajlsm/apps/basse-bretagne/exemples/ead/fonds-prives/bretagne /home/basse-bretagne/ead fuse perms=0755,owner=basse-bretagne,group=ajlsm 0 0 | ||
| Ligne 118 : | Ligne 172 : | ||
bindfs#/home/ajlsm/apps/basse-bretagne/module-eadeac/pages/fr /home/basse-bretagne/pages fuse perms=0755,owner=basse-bretagne,group=ajlsm 0 0 | bindfs#/home/ajlsm/apps/basse-bretagne/module-eadeac/pages/fr /home/basse-bretagne/pages fuse perms=0755,owner=basse-bretagne,group=ajlsm 0 0 | ||
</syntaxhighlight> | </syntaxhighlight> | ||
{{important|les droits en question ne sont pas réellement changés, lorsque l'utilisateur cré des fichiers, il lui appartiennent. Cependant, ils apparaîtront tel que décrit dans le {{path|/etc/fstab}}, ce qui peut être trompeur}} | {{important|les droits en question ne sont pas réellement changés, lorsque l'utilisateur cré des fichiers, il lui appartiennent. Cependant, ils apparaîtront tel que décrit dans le {{path|/etc/fstab}}, ce qui peut être trompeur}} | ||
== Références == | |||
<references/> | |||
[[category:SSH]] | [[category:SSH]] | ||
Version du 24 avril 2013 à 08:15
Générer les clés
ssh-keygen -t dsa
ssh-keygen -t rsa
Une clé DSA est plus fortement sécurisé qu'une clé RSA; par suite, une clé DSA sera préférée à une clé RSA.
Une clé RSA est indispensable puisque certains serveurs anciens ne connaissent pas la clé DSA. Il en est ainsi du serveur moorea.
Utilisateurs différents
Host *
User utilisateur-distant
Accès serveurs distants/clients
Pour éviter d'avoir à s'identifier par mot de passe, on peut copier notre clé publique sur les serveurs.
A partir du poste client disposant de la clé publique :
user="elopez"
server="moorea" # alias ou IP
ssh-copy-id -i "$user"@"$server"
A partir du serveur :
scp -r greg@192.168.123.2:/home/greg/.ssh/id_*pub .ssh/
Pour mettre en place une prison du compte client dans son dossier $HOME, on pourra suivre la page suivante Chroot users with OpenSSH: An easier way to confine users to their home directories
Pré-requis
L'utilisateur doit avoir un compte sur le serveur. Si ce n'est pas le cas, consulter la page de gestion d'utilisateurs UNIX. Il faut également un groupe auquel s'appliqueront les règles d'emprisonnement, il s'agit généralement de sftp ou sftponly. Vérifier si il existe et ajouter le si besoin :
groupadd sftp
Configuration du serveur SSH
On commentera la gestion par défaut du groupe sftp :
# Subsystem sftp /usr/libexec/openssh/sftp-server
On rajoutera dans /etc/ssh/sshd_config les lignes suivantes, si elles ne sont pas présentes. De façon à emprisonner (ou chrooter) les utilisateurs du groupe sftp qui se connecte en SFTP :
Subsystem sftp internal-sftp
Match Group sftp
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no
Match nécessaire au prison. Il faut donc demander une mise à jour au sysadmin pour avoir une version de openssh>=4
.4.Droits du groupe
Pour que les fichiers créé par l'utilisateur client soit accessible en lecture et écriture au groupe, on modifiera la ligne Subsystem de /etc/ssh/sshd_config
<ref>Setting the umask for SFTP transactions</ref>
<ref> How to put desired umask with SFTP? http://serverfault.com/questions/70876/how-to-put-desired-umask-with-sftp</ref>
comme suit :
Subsystem sftp /bin/sh -c 'umask u=rwx,g=rwx,o=r; /usr/lib/openssh/sftp-server'
Status: Connected to jubilo-web
Error: Connection closed by server with exitcode 127
Error: Could not connect to server
De la même façon il faut que l'utilisateur ajlsm laisse le droit de lecture et d'écriture aux autres membres du groupe ajlsm. Pour ce faire, on change le umask lorsque l'utilisateur se connecter. Ceci peux se faire en rajouter la commande umask u=rwx,g=rwx,o=r dans le ~/.bashrc de l'utilisateur ajlsm :
echo "umask u=rwx,g=rwx,o=r" >> ~/.bashrc # en tant qu'utilisateur 'ajslm'
Une fois c'est modification effectué, on redémarrera le serveur SSH :
/etc/init.d/sshd restart
Configuration de l'utilisateur pour la prison
Remarques : Sous CentOS, on pourra installé le paquet shadow-utils pour simplifier la gestion des utilisateurs.
On rajoute l'utilisateur au groupe emprisonnable :
usermod -G sftp utilisateur
On désactive son accès au shell :
usermod -s /bin/false utilisateur
Son dossier doit appartenir à root pour pouvoir appliquer la prison :
chown root:root /home/utilisateur
chmod 0755 /home/utilisateur
Accès limités à certains dossiers/fichiers
On commencera par créé des dossiers vides, dans le $HOME de l'utilisateur, dans lesquels on montera les dossiers auxquels on veut donner accès :
mkdir ~/cdc ~/ead ~/pdf
Avec la méthode simple
Cette méthode utilise les droits UNIX classique, cela peux être compliqué à gérer.
On monte les fichiers/dossier auquel on veut donner accès dans le dossier $HOME de l'utilisateur. De cette façon ils seront soumis à la prison SSH.
/home/www/UtilisateurXYZ/cdc /home/UtilisateurXYZ/cdc none bind 0 0
/home/www/UtilisateurXYZ/ead /home/UtilisateurXYZ/ead none bind 0 0
/home/www/UtilisateurXYZ/pdf /home/UtilisateurXYZ/pdf none bind 0 0
Il faut adapter les droits des fichiers pour qu'ils soient accessible et éditable par l'utilisateur et l'application (souvent représenté par l'utilisateur et le groupe ajlsm) :
usermod -aG ajlsm Etat-Valais # ajoute l'utilisateur au groupe de l'application
chmod g+rwx -R ./cdc/ ./ead/ ./pdf/ # donne les droits de lecture, écriture, parcours/execution à l'utilisateur emprisonné
Avec la méthode avancée
Remarques : Cette section nécessite le paquet bindfs pour pouvoir fonctionner.
On utilise bindFS pour monter des parties du système de fichier d'un endroit à l'autre, en surchargeant certains droits. Pour cela on configure le montage des fichiers dans /etc/fstab, comme suit :
bindfs#/home/ajlsm/apps/basse-bretagne/exemples/ead/fonds-prives/bretagne /home/basse-bretagne/ead fuse perms=0755,owner=basse-bretagne,group=ajlsm 0 0
bindfs#/home/ajlsm/data/basse-bretagne/pdf /home/basse-bretagne/pdf fuse perms=0755,owner=basse-bretagne,group=ajlsm 0 0
bindfs#/home/ajlsm/apps/basse-bretagne/module-eadeac/pages/fr /home/basse-bretagne/pages fuse perms=0755,owner=basse-bretagne,group=ajlsm 0 0
Références
<references/>