{"id":35273,"date":"2024-05-24T15:06:23","date_gmt":"2024-05-24T13:06:23","guid":{"rendered":"https:\/\/infoloup.no-ip.org\/?p=35273"},"modified":"2024-06-10T13:26:06","modified_gmt":"2024-06-10T11:26:06","slug":"sftp-dotclear-debian12","status":"publish","type":"post","link":"https:\/\/infoloup.no-ip.org\/sftp-dotclear-debian12\/","title":{"rendered":"SFTP – Dotclear \/ Debian 12"},"content":{"rendered":"
Le service SFTP sera activ\u00e9 sur la VM srvdmz<\/mark>.<\/p>\n\n\n\n La configuration permettra un acc\u00e8s SFTP sur le site Dotclear ceci en respectant les droits d'acc\u00e8s et permissions exig\u00e9s par le serveur Apache sur le dossier \/var\/www\/html\/dotclear\/.<\/p>\n\n\n\n\n\n Pourquoi choisir le protocole SFTP plut\u00f4t que FTP ?<\/p>\n\n\n\n FTP est de base non s\u00e9curis\u00e9, ses Cdes et donn\u00e9es ne sont pas chiffr\u00e9es, on peut donc intercepter le MDP de connexion ou le contenu des fichiers \u00e9chang\u00e9s.<\/p>\n\n\n\n Le chiffrement FTPS est possible mais exige une configuration plus lourde. <\/p>\n\n\n\n SFTP est plus simple \u00e0 mettre en \u0153uvre. Il est fourni avec le paquet openssh-server et permet de base le chiffrement des Cdes et donn\u00e9es transmises. <\/p>\n\n\n\n Il v\u00e9rifie l\u2019identit\u00e9 du client et chiffre les fichiers\/dossiers \u00e9chang\u00e9s une fois la connexion s\u00e9curis\u00e9e \u00e9tablie.<\/p>\n\n\n\n Il utilise les r\u00e8gles de chiffrement SSH (S<\/strong>ecure SH<\/strong>ell)<\/em>.<\/p>\n\n\n\n Installez le paquet openssh-server :<\/p>\n\n\n\n La d\u00e9pendance openssh-sftp-server a \u00e9t\u00e9 ajout\u00e9e et des fichiers de configuration ont \u00e9t\u00e9 cr\u00e9\u00e9s dans \/etc\/ssh\/.<\/p>\n\n\n\n L'utilisateur li\u00e9 \u00e0 Apache \u00e9tant www-data<\/mark> sous Debian, vous avez pr\u00e9c\u00e9demment attribu\u00e9 celui-ci et son groupe associ\u00e9 aux dossiers et fichiers de Dotclear.<\/p>\n\n\n\n Les scripts PHP de Dotclear ont ainsi h\u00e9rit\u00e9 des droits d'acc\u00e8s en \u00e9criture leur permettant de mettre \u00e0 jour localement le contenu de \/var\/www\/html\/dotclear\/.<\/p>\n\n\n\n Rappel des permissions utilis\u00e9es par Dotclear : Les \u00e9critures effectu\u00e9es depuis un client SFTP ne doivent pas modifier les permissions ci-dessus, Dotclear risquant de ne plus fonctionner correctement.<\/p>\n\n\n\n Une technique pour \u00e9viter cela consiste \u00e0 cr\u00e9er un dossier miroir du dossier Web de Dotclear.<\/p>\n\n\n\n L'outil bindfs liera le dossier \/var\/www\/html\/dotclear\/ \u00e0 un dossier miroir d\u00e9di\u00e9 aux acc\u00e8s SFTP. Les \u00e9critures effectu\u00e9es \u00e0 l'int\u00e9rieur de ce dernier n'affecteront pas les droits d'acc\u00e8s et permissions du dossier Web.<\/p>\n\n\n\n Le dossier miroir appartiendra au groupe sftp-groupe et \u00e0 l'utilisateur sftpdmz<\/mark>.<\/p>\n\n\n\n Commencez par la cr\u00e9ation du dossier miroir :<\/p>\n\n\n\n Cr\u00e9ez ensuite son groupe sftp-groupe : <\/p>\n\n\n\n et son utilisateur sftpdmz<\/mark> que vous lierez \u00e0 sftp-groupe :<\/p>\n\n\n\n Avant d'aller plus loin, effectuez les contr\u00f4les ci-apr\u00e8s :<\/p>\n\n\n\n Retour :<\/p>\n\n\n\n Retour :<\/p>\n\n\n\n Retour :<\/p>\n\n\n\n Retour :<\/p>\n\n\n\n Enfin, appliquez ces permissions sur le dossier miroir :<\/p>\n\n\n\n et terminez en cr\u00e9ant un MDP pour l'utilisateur sftpdmz<\/mark> :<\/p>\n\n\n\n L'outil fuse3 qui sera utilis\u00e9 ci-dessous est d\u00e9j\u00e0 install\u00e9.<\/p>\n\n\n\n Pour remplir automatiquement le miroir, \u00e9ditez fstab :<\/p>\n\n\n\n et ajoutez les 2 lignes suivantes \u00e0 la fin du fichier :<\/p>\n\n\n\n La Cde create-with-perms suit les permissions 755\/644.<\/p>\n\n\n\n Red\u00e9marrez afin de traiter la Cde bindfs du fichier fstab :<\/p>\n\n\n\n et v\u00e9rifiez ensuite le contenu du dossier miroir :<\/p>\n\n\n\n Retour :<\/p>\n\n\n\n ainsi que celui du dossier \/var\/www\/html\/dotclear\/ :<\/p>\n\n\n\n Retour :<\/p>\n\n\n\n Constat : Editez le fichier de configuration du d\u00e9mon SSH :<\/p>\n\n\n\n Commentez les 2 lignes suivantes :<\/p>\n\n\n\n et ajoutez en fin de fichier ce groupe de lignes :<\/p>\n\n\n\n Explications : V\u00e9rifiez afin que le ChrootDirectory (dossier racine)<\/em> fonctionne que le propri\u00e9taire des dossiers sftpdmz et sites-web soit bien l'utilisateur root<\/mark> :<\/p>\n\n\n\n Retours attendus pour les 2 Cdes :<\/p>\n\n\n\n Red\u00e9marrez le serveur SSH :<\/p>\n\n\n\n Retour :<\/p>\n\n\n\n Avant de continuer, ajoutez une image dans le dossier partag\u00e9 par l'h\u00f4te de VirtualBox.<\/p>\n\n\n\n Testez ensuite une connexion locale : <\/p>\n\n\n\n Retour :<\/p>\n\n\n\n et d\u00e9posez l'image (Ex : image-1.jpg)<\/em> dans public :<\/p>\n\n\n\n V\u00e9rifiez l'attribution des droits d'acc\u00e8s et permissions :<\/p>\n\n\n\n Retour :<\/p>\n\n\n\n R\u00e9sultat OK : Installez le client graphique sur la VM debian12-vm1<\/mark> :<\/p>\n\n\n\n Ouvrez ensuite l'application graphique FTP\/SFTP : Cliquez sur l'ic\u00f4ne situ\u00e9e la plus \u00e0 gauche de la barre des ic\u00f4nes afin d'ouvrir le Gestionnaire de Sites et cliquez sur le bouton Nouveau site.<\/p>\n\n\n\n Cr\u00e9ez le site loupvirtuel.fr comme montr\u00e9 ci-dessous :1 - Pr\u00e9ambule<\/h3>\n\n\n\n
2 - Installation du serveur SFTP<\/h3>\n\n\n\n
[srvdmz@srvdmz:~$] sudo apt install openssh-server<\/pre>\n\n\n\n
3 - Cr\u00e9ation d'un dossier miroir pour Dotclear<\/h3>\n\n\n\n
3.1 - Droits d'acc\u00e8s et permissions \u00e0 pr\u00e9server <\/em><\/h4>\n\n\n\n
- Dossiers = 755
soit propri\u00e9taire u<\/strong> drwx<\/mark>, groupe g<\/strong> r-x<\/mark>, autres o<\/strong> r-x<\/mark>
- Fichiers = 644
soit propri\u00e9taire u<\/strong> rw-<\/mark>, groupe g<\/strong> r--<\/mark>, autres o<\/strong> r--<\/mark><\/p>\n\n\n\n3.2 - Cr\u00e9ation du dossier miroir<\/em><\/h4>\n\n\n\n
[srvdmz@srvdmz:~$] cd \/home
[srvdmz@srvdmz:~$] sudo mkdir -p sftpdmz\/sites-web\/dotclear<\/pre>\n\n\n\n[srvdmz@srvdmz:~$] sudo addgroup sftp-groupe <\/pre>\n\n\n\n
[srvdmz@srvdmz:~$] sudo useradd -d \/home\/sftpdmz\/sites-web\/dotclear -g sftp-groupe sftpdmz <\/pre>\n\n\n\n
[srvdmz@srvdmz:~$] cat \/etc\/group | grep sftp-groupe <\/pre>\n\n\n\n
sftp-groupe:x:1001:<\/code><\/pre>\n\n\n\n
[srvdmz@srvdmz:~$] cat \/etc\/passwd | grep sftpdmz <\/pre>\n\n\n\n
sftpdmz:x:1001:1001::\/home\/sftpd...\/dotclear:\/bin\/sh<\/code><\/pre>\n\n\n\n
[srvdmz@srvdmz:~$] id sftpdmz <\/pre>\n\n\n\n
uid=1001(sftpdmz) gid=1001(sftp-groupe) groupes=1001(sftp-groupe)<\/code><\/pre>\n\n\n\n
[srvdmz@srvdmz:~$] groups sftpdmz<\/pre>\n\n\n\n
sftpdmz : sftp-groupe<\/code><\/pre>\n\n\n\n
[srvdmz@srvdmz:~$] sudo chown sftpdmz:sftp-groupe \/home\/sftpdmz\/sites-web\/dotclear\n\n[srvdmz@srvdmz:~$] sudo chmod 755 \/home\/sftpdmz\/sites-web\/dotclear<\/pre>\n\n\n\n
[srvdmz@srvdmz:~$] sudo passwd sftpdmz<\/pre>\n\n\n\n
3.3 - Utilisation de bindfs pour remplir le miroir<\/em><\/h4>\n\n\n\n
[srvdmz@srvdmz:~$] sudo apt install bindfs<\/pre>\n\n\n\n
[srvdmz@srvdmz:~$] sudo nano \/etc\/fstab<\/pre>\n\n\n\n
# Montage automatique du dossier miroir de Dotclear \n\nbindfs#\/var\/www\/html\/dotclear \/home\/sftpdmz\/sites-web\/dotclear fuse force-user=sftpdmz,force-group=sftp-groupe,create-for-user=www-data,create-for-group=www-data,create-with-perms=ud=rwx:god=rx:uf=rw:gof=r,chgrp-ignore,chown-ignore,chmod-ignore 0 0<\/code><\/pre>\n\n\n\n
[srvdmz@srvdmz:~$] sudo reboot<\/pre>\n\n\n\n
[srvdmz@srvdmz:~$] sudo ls -l \/home\/sftpdmz\/sites-web\/dotclear <\/pre>\n\n\n\n
drwxr-xr-x<\/mark> 7 sftpdmz sftp-groupe<\/mark> ... admin\ndrwxr-xr-x 5 sftpdmz sftp-groupe ... cache\n-rw-r--r--<\/mark> 1 sftpdmz sftp-groupe<\/mark> ... CHANGELOG\n-rw-r--r-- 1 sftpdmz sftp-groupe ... CONTRIBUT...\n-rw-r--r-- 1 sftpdmz sftp-groupe ... CREDITS\ndrwxr-xr-x 2 sftpdmz sftp-groupe ... db\ndrwxr-xr-x 7 sftpdmz sftp-groupe ... inc\n-rw-r--r-- 1 sftpdmz sftp-groupe ... index.php\n-rw-r--r-- 1 sftpdmz sftp-groupe ... LICENSE\ndrwxr-xr-x 4 sftpdmz sftp-groupe ... locales\n...<\/code><\/pre>\n\n\n\n
[srvdmz@srvdmz:~$] sudo ls -l \/var\/www\/html\/dotclear<\/pre>\n\n\n\n
drwxr-xr-x<\/mark> 7 www-data www-data<\/mark> ... admin\ndrwxr-xr-x 5 www-data www-data ... cache\n-rw-r--r--<\/mark> 1 www-data www-data<\/mark> ... CHANGELOG\n-rw-r--r-- 1 www-data www-data ... CONTRIBUT...\n-rw-r--r-- 1 www-data www-data ... CREDITS\ndrwxr-xr-x 2 www-data www-data ... db\ndrwxr-xr-x 7 www-data www-data ... inc\n-rw-r--r-- 1 www-data www-data ... index.php\n-rw-r--r-- 1 www-data www-data ... LICENSE\ndrwxr-xr-x 4 www-data www-data ... locales\n...<\/code><\/pre>\n\n\n\n
- Les permissions dossiers\/fichiers sont identiques.
- Les utilisateurs\/groupes sont correctement affect\u00e9s.<\/p>\n\n\n\n4 - R\u00e9glages SFTP et test de connexion locale<\/h3>\n\n\n\n
[srvdmz@srvdmz:~$] sudo nano \/etc\/ssh\/sshd_config<\/pre>\n\n\n\n
X11Forwarding yes\nSubsystem sftp \/usr\/lib\/openssh\/sftp-server<\/code><\/pre>\n\n\n\n
# Configuration sshd de l'h\u00f4te srvdmz\nSubsystem sftp internal-sftp\nPort 384 <\/em>\nPermitRootLogin no <\/em>\nMatch User sftpdmz \nChrootDirectory \/home\/sftpdmz\/sites-web\nX11Forwarding no\nAllowTcpForwarding no\nForceCommand internal-sftp -u 022<\/code><\/pre>\n\n\n\n
- Choix sous-syst\u00e8me internal-sftp et non sftp-serveur.
- Port SSH 384 au lieu du port 22 par d\u00e9faut.
- Acc\u00e8s SSH interdit en tant qu'utilisateur root.
- Acc\u00e8s SSH restreint \u00e0 l'utilisateur sftpdmz.
- Acc\u00e8s limit\u00e9 au dossier racine \/home\/...\/sites-web\/.
- Transfert d'affichage graphique X11 d\u00e9sactiv\u00e9.
- Redirection de port TCP, tunnel SSH, d\u00e9sactiv\u00e9e.
- Cdes limit\u00e9es \u00e0 celles du sous-syst\u00e8me internal-sftp.
- Umask 022 = 755 (dossiers)<\/em> et 644 (fichiers)<\/em>. <\/p>\n\n\n\n[srvdmz@srvdmz:~$] ls -l \/home\n[srvdmz@srvdmz:~$] ls -l \/home\/sftpdmz<\/pre>\n\n\n\n
drwxr-xr-x 3 root<\/mark> root 4096 22 mai 15:35 sftpdmz<\/mark>\ndrwxr-xr-x 3 root<\/mark> root 4096 22 mai 15:35 sites-web<\/mark><\/code><\/pre>\n\n\n\n
[srvdmz@srvdmz:~$] sudo systemctl restart ssh\n[srvdmz@srvdmz:~$] sudo systemctl status ssh <\/pre>\n\n\n\n
\u25cf ssh.service - OpenBSD Secure Shell server\n Loaded: loaded (\/lib\/systemd\/system\/ssh.service...\n Active: active (running)<\/mark> since Wed 2024...; 14s ago\n Docs: man:sshd(8)\n man:sshd_config(5)\n Process: 1704 ExecStartPre=\/usr\/sbin... =0\/SUCCESS)\n Main PID: 1706 (sshd)\n Tasks: 1 (limit: 1077)\n Memory: 1.9M\n CPU: 35ms\n CGroup: \/system.slice\/ssh.service\n \u2514\u25001706 \"sshd: \/usr\/sbin\/sshd -D ...\".\n\n... srvdmz systemd[1]: Starting ssh.service - OpenBSD ...\n... srvdmz sshd[1706]: ... listening on 0.0.0.0 port 384.\n... srvdmz systemd[1]: Started<\/mark> ssh.service - OpenBSD ...\n... srvdmz sshd[1706]: ... listening on :: port 384<\/mark>.<\/code><\/pre>\n\n\n\n
[srvdmz@srvdmz:~$] sudo sftp -o Port=384 sftpdmz@loupvirtuel.fr<\/pre>\n\n\n\n
The authenticity ... '[loupvirtuel.fr]:384 ([192...\nECDSA key fingerprint is SHA256:Ns10UF4h...\nThis key is not known by any other names.\nAre you sure ... continue connecting (yes\/...)? yes<\/mark>\nWarning: Permanently added '[loupvirtuel.fr]:384'...\nsftpdmz@loupvirtuel.fr's password: votre MDP sftpdmz<\/mark> \nConnected<\/mark> to loupvirtuel.fr.\nsftp> ls<\/mark>\ndotclear \nsftp> cd<\/mark> dotclear\/public\nsftp> ls<\/mark>\nsftp> (dossier public vide de base)<\/em>\n<\/code><\/pre>\n\n\n\n
sftp> put<\/mark> \/home\/srvdmz\/Partage\/image-1.jpg<\/mark>\nUploading<\/mark> \/home...\/image-1.jpg to \/dotclear...\nimage-1.jpg 100%<\/mark> 273KB 24.1MB\/s 00:00 \nsftp> quit<\/mark>\n<\/code><\/pre>\n\n\n\n
[srvdmz@srvdmz:~$] sudo ls -l \/var\/www\/html\/dotclear\/public\/image-1.jpg <\/pre>\n\n\n\n
-rw-r--r--<\/mark> 1 www-data www-data<\/mark> ... \/...\/image-1.jpg<\/mark><\/code><\/pre>\n\n\n\n
Droits d'acc\u00e8s \u00e0 www-data et permissions \u00e0 644.<\/p>\n\n\n\n5 - Connexion distante depuis debian12-vm1<\/h3>\n\n\n\n
5.1 - Ajout sur la VM du client SFTP FileZilla<\/em><\/h4>\n\n\n\n
[client-linux@debian12-vm1:~$] sudo apt install filezilla<\/pre>\n\n\n\n
- Menu Applications -> Internet -> Ic\u00f4ne FileZilla<\/p>\n\n\n\n
- Onglet G\u00e9n\u00e9ral<\/p>\n\n\n