Outils pour utilisateurs

Outils du site


admin:services:ftp

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
admin:services:ftp [2014/05/05 21:14] – [Mise en place] + archive irc marc.galletadmin:services:ftp [2020/04/25 19:02] (Version actuelle) zertrin
Ligne 1: Ligne 1:
 [[:admin|< retour à la page de l'administration technique]] [[:admin|< retour à la page de l'administration technique]]
  
-Le serveur FTP de FedeRez se trouve sur [[admin:serveurs:hexagon|hexagon]].+Le serveur FTP de FedeRez se trouve sur [[admin:serveurs:dodecagon|dodecagon]].
  
 ====== Infos de connexion ====== ====== Infos de connexion ======
Ligne 8: Ligne 8:
 | **Port**         | 21 | | **Port**         | 21 |
 | **Protocole**    | FTPES (FTP avec connexion TLS __explicite__) :!: obligatoire | | **Protocole**    | FTPES (FTP avec connexion TLS __explicite__) :!: obligatoire |
-| **Login**        | Pseudo tel renseigné dans le LDAP (Exemple: ''zertrin'' pour Marc Gallet) |+| **Login**        | Pseudo (tiré du LDAP)|
 | **Mot de passe** | Celui du compte LDAP. Cf https://webldap.federez.net en cas d'oubli. | | **Mot de passe** | Celui du compte LDAP. Cf https://webldap.federez.net en cas d'oubli. |
  
 ====== Infos générales ====== ====== Infos générales ======
  
-:!: Attention :!: Il n'est pas possible d'ajouter ou de modifier des fichiers ou des dossiers à la racine du FTP. Cette limitation fait partie des mesures de sécurité de vsftpd. +Voici l'arborescence mise en place initialement. Sera probablement à actualiser par la suite mais ça donne déjà une idée.
- +
-Un sous-dossier ''federez'' a donc été créé et tout se passe dedans. +
- +
-Voici l'arborescence mise en place initialement. Sera probablement à actualiser par la suite mais ca donne déjà une idée.+
  
 <code> <code>
 /home/ftp /home/ftp
-├── federez +├── administratif 
-│   ├── administratif +│   └── statuts.pdf 
-│   │   └── statuts.pdf +├── admin_tech 
-│   ├── admin_tech +├── journees 
-│   ├── journees +│   └── 2014 
-│   │   └── 2014 +│       ├── presentations 
-│   │       ├── presentations +│       │   ├── federez_ag_2014_aliens.pdf 
-│   │       │   ├── federez_ag_2014_aliens.pdf +│       │   └── ... 
-│   │       │   └── ... +│       └── videos 
-│   │       └── videos +│           ├── Conférence IPv6.mp4 
-│   │           ├── Conférence IPv6.mp4 +│           └── ... 
-│   │           └── ... +── README_FTP_FedeRez.txt 
-│   └── logo +├── tournee 
-│       └── logo_federez.png +├── upload 
-└── README_FTP_FedeRez.txt+└── visuel 
 +    ├── font 
 +    ├── kakemono 
 +    └── logo
 </code> </code>
  
 +Niveau sécurité, tous les échanges doivent se faire de façon chiffrée (aussi bien pour le canal de contrôle que pour les données) et tous les utilisateurs ont les mêmes droits sur le serveurs (uid ftp, group ftp).
 ====== Mise en place ====== ====== Mise en place ======
  
-C'est ''vsftpd'' qui est installé, et ce fut super chiant à mettre en placenotamment en ayant forcé TLS... Cf cette [[https://zerobin.zertrin.org/?63b0bec3ecec6ed0#+IemfQOOV7JyDCwywX0bef0TmU0LEccfhDn5TdKC9y0=|archive IRC]] pour les déboires rencontrés.+Pour la mise en place d'un serveur ''vsftpd'' (qui était installé auparavant à FedeRez)on pourra se référer à la page [[admin:services:ftp:vsftpd|dédiée]]. Ce qui suit concerne ''proftpd'', logiciel utilisé actuellement à FedeRez.
  
-===== Liens (potentiellementutiles =====+Le choix de ''proftpd'' a été fait parce que la gestion du LDAP y semblait meilleure qu'avec ''pure-ftpd'' (point discutable, mais proftpd répond à nos attentes, donc je ne vois pas de raison d'en changer).
  
-  * Site officiel : https://security.appspot.com/vsftpd.html +On commence par installer les paquets nécessaires (la doc à consulter dans ''/usr/share/doc/proftpd-doc/'' n'est pas requise mais peut se révéler utile) : 
-  * Manpage de vsftpd.conf : http://linux.die.net/man/5/vsftpd.conf+  apt-get install proftpd proftpd-mod-ldap proftpd-doc
  
-===== Installation =====+On crée un utilisateur système "ftp"
 +  useradd --system --home-dir /srv/ftp --no-create-home --shell /usr/sbin/nologin ftp 
 +Si l'utilisateur existe, on s'assure que tous soit bon avec : 
 +  getent passwd ftp 
 +  getent group ftp 
 +qui doivent renvoyer : 
 +  ftp:x:129:999::/srv/ftp:/usr/sbin/nologin 
 +  ftp:x:999: 
 +Sinon, on adapte avec : 
 +  groupadd --system ftp 
 +  usermod --gid ftp --home /srv/ftp --shell /usr/sbin/nologin ftp
  
-Installation plus que classique du paquet :+On note ensuite l'uid et le gid de ftp : 
 +  id ftp 
 +Dans notre cas, on a : ''uid=129(ftp) gid=999(ftp) groupes=999(ftp)'', valeurs utilisées dans ''/etc/proftpd/ldap.conf''.
  
-  apt-get install vsftpd+On modifie le fichier ''/etc/proftpd/proftpd.conf'' pour avoir ce qui suit (le reste de la configuration par défaut n'ayant pas besoin d'être modifié) : 
 +<file apache "/etc/proftpd/proftpd.conf"> 
 +### Lignes à décommenter : 
 +Include /etc/proftpd/tls.conf 
 +Include /etc/proftpd/ldap.conf
  
-===== Explication préalable de la configuration choisie =====+### Ligne à modifier : 
 +DisplayLogin                    /etc/proftpd/welcome.msg
  
 +### Lignes à ajouter :
 +# Autoriser uniquement les connexions depuis le LDAP
 +AuthOrder mod_ldap.c
 +# Chroot des utilisateurs dans /srv/ftp
 +DefaultRoot /srv/ftp
 +</file>
  
-Le but de la config est de permettre à tout membre de FedeRez avec un compte [[admin:services:ldap|LDAP]] de pouvoir accéder via le FTP à un dossier commun en lecture/écritureL'authentification des utilisateurs FTP se fera donc via le LDAP. De plus l'ensemble des transactions (authentification et échanges de données) devra se faire avec chiffrement TLSAutrement dit seul le protocole FTPES (FTP avec connexion TLS explicite) sera supporté.+On crée ''/etc/proftpd/welcome.msg'' avec par exemple : 
 +<file text "/etc/proftpd/welcome.msg"> 
 +================================================= 
 +|                                               | 
 +|   Bienvenue sur le serveur FTP de FedeRez !   | 
 +|                                               | 
 +=================================================
  
-On va donc activer la gestion des //virtual users// qui s'authentifient individuellement via le LDAP de FedeRez, puis qui seront mappés par vsftpd sur l'user local ''ftp''. Ce dernier sera chrooté dans son dossier personnel qui servira de racine du FTP.+Vous êtes identifié en tant que %U@%R
  
-Par défaut, le dossier personnel de l'utilisateur ''ftp'' est ''/srv/ftp''. Cependant ce dossier ne se trouve pas sur la "grosse" partition de 400 Go d'[[admin:serveurs:hexagon|hexagon]]. On va donc stocker les fichiers dans le répertoire ''/home/ftp'' créé pour l'occasion. +                    -------
  
-===== Configuration =====+En cas de questions, contacter admin@federez.net 
 +</file>
  
-==== Préparation des dossiers ====+On décommente dans ''/etc/proftpd/modules.conf''
 +<file apache "/etc/proftpd/modules.conf"> 
 +  LoadModule mod_ldap.c 
 +</file>
  
-On commence par créer le répertoire ''/home/ftp''+On modifie ''/etc/proftpd/tls.conf'' pour avoir : (cf http://www.proftpd.org/docs/howto/TLS.html pour les détails) 
 +<file apache "/etc/proftpd/tls.conf"> 
 +<IfModule mod_tls.c> 
 +TLSEngine                    on 
 +TLSLog                       /var/log/proftpd/tls.log 
 +TLSProtocol                  TLSv1.2 
 +TLSRSACertificateFile        /etc/letsencrypt/live/federez.net/fullchain.pem 
 +TLSRSACertificateKeyFile     /etc/letsencrypt/live/federez.net/privkey.pem 
 +TLSOptions                   NoCertRequest EnableDiags  
 +TLSVerifyClient              off 
 +TLSRequired                  on 
 +</IfModule> 
 +</file> 
 +Toutes les autres lignes devraient être commentées.
  
-  mkdir /home/ftp +On restreint les permissions sur ''/etc/proftpd/ldap.conf'' qui va contenir un mot de passe (pour récupérer les informations dans le LDAP) : 
-   +  chmod o-r /etc/proftpd/ldap.conf
-''root'' __doit__ être le proprio du dossier, sinon ça marche pas...+
  
-  chown root:ftp /home/ftp+On modifie ''/etc/proftpd/ldap.conf'' (cf http://www.proftpd.org/docs/contrib/mod_ldap.html pour les détails) 
 +<file apache "/etc/proftpd/ldap.conf"> 
 +<IfModule mod_ldap.c> 
 +LDAPServer "ldaps://ldap.federez.net/??sub" "ldaps://ldap-ro.federez.net/??sub" 
 +LDAPBindDN "cn=proftpd,ou=service-users,dc=federez,dc=net" "mot_de_passe" 
 +LDAPUsers "ou=users,dc=federez,dc=net" (uid=%v) 
 +LDAPSearchScope subtree 
 +LDAPForceDefaultUID on 
 +LDAPForceDefaultGID on 
 +LDAPDefaultUID 129 
 +LDAPDefaultGID 999 
 +LDAPLog /var/log/proftpd/ldap.log 
 +LDAPAuthBinds on 
 +</IfModule> 
 +</file> 
 +Toutes les autres lignes devraient être commentées.
  
-Les perms du dossier doivent être 755, sinon ça marche pas...+On configure ensuite les accès aux fichiers en créant le fichier ''/etc/proftpd/conf.d/acl.conf'' avec : 
 +<file apache /etc/proftpd/conf.d/acl.conf> 
 +<Directory /> 
 + <Limit READ WRITE DIR> 
 + DenyAll 
 + </Limit> 
 +</Directory> 
 +<Directory /srv/ftp/> 
 + <Limit READ DIR> 
 + AllowAll 
 + </Limit> 
 + <Limit WRITE> 
 + AllowGroup sudoldap 
 + #AllowUser 
 + DenyAll 
 + </Limit> 
 +</Directory> 
 +<Directory /srv/ftp/upload> 
 + <Limit WRITE> 
 + AllowAll 
 + </Limit> 
 +</Directory> 
 +</file>
  
-  chmod 755 /home/ftp +Enfin, on relance le service : 
-   +  systemctl restart proftpd.service 
-L'utilisateur ''ftp'' n'a donc pas de droits d'écriture dans la racine de son home. Ça fait partie des obligations de vsftpd. Donc pour pouvoir quand même utiliser le FTP pour autre chose que de la lecture seule, on crée un sous-dossier à la racine appartenant cette fois-ci à ''ftp'' +En cas de soucis, on pourra ajouter à ''/etc/proftpd/proftpd.conf'' les lignes suivantes pour activer le débug 
- +<file apache
-  mkdir /home/ftp/federez +Trace ldap:10 # niveau entre 0 et 10 
-  chown ftp:ftp /home/ftp/federez +Trace *:10
- +
-Et pour finir, on va lier symboliquement ''/srv/ftp'' à ''/home/ftp'', j'ai essayé de demander à vsftpd d'utiliser directement ''/home/ftp'' mais la encore il n'a pas aimé du tout... +
- +
-  rmdir /srv/ftp +
-  ln -s /home/ftp /srv/ftp +
- +
-Bon voilà normalement vsftpd devrait être content avec cette structure. Passons à la configuration à proprement parler. +
- +
-==== Config de vsftpd ==== +
- +
-Le fichier de configuration de vsftpd est ''/etc/vsftpd.conf''+
- +
-Voici la config en place, sans les commentaires superflus : +
- +
-<file text vsftpd.conf+
-listen=YES +
- +
-anonymous_enable=NO +
- +
-local_enable=YES +
-write_enable=YES +
- +
-guest_enable=YES +
-guest_username=ftp +
- +
-local_root=/srv/ftp +
- +
-ftp_username=ftp +
-nopriv_user=ftp +
- +
-chroot_local_user=YES +
-secure_chroot_dir=/var/run/vsftpd/empty +
- +
-chown_uploads=YES +
-chown_username=ftp +
-virtual_use_local_privs=YES +
- +
-local_umask=022 +
-anon_umask=022 +
- +
-dirmessage_enable=YES +
- +
-use_localtime=YES +
- +
-xferlog_enable=YES +
- +
-connect_from_port_20=YES +
- +
-xferlog_file=/var/log/xferlog.log +
-xferlog_std_format=YES +
- +
-ftpd_banner=Bienvenue sur le serveur FTP de FedeRez +
- +
-pam_service_name=vsftpd +
- +
-ssl_enable=YES +
-ssl_ciphers=HIGH +
-rsa_cert_file=/etc/ssl/federez/chain.pem +
-rsa_private_key_file=/etc/ssl/private/federez.key +
-force_local_data_ssl=YES +
-force_local_logins_ssl=YES +
- +
-hide_ids=YES+
 </file> </file>
  
-==== Config du module PAM LDAP ==== +On s'assurera de ne pas laisser des fichiers de log non gérés par logrotate en créant ''/etc/logrotate.d/proftpd-custom'' avec : 
- +<file apache /etc/logrotate.d/proftpd-custom> 
-Comme on a dit, on veut authentifier les utilisateurs via le LDAP de FedeRez.  +/var/log/proftpd/tls.log  
- +/var/log/proftpd/ldap.log  
-Pour cela vsftpd utilise le service PAM suivant : ''/etc/pam.d/vsftpd'' +{ 
- +        weekly 
-<file text vsftpd> +        missingok 
-auth    required        pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed +        rotate 7 
-auth    [success=1 default=ignore]  pam_ldap.so minimum_uid=1000 +        compress 
-auth    requisite           pam_deny.so +        delaycompress 
-auth    required            pam_permit.so +        notifempty 
- +        create 640 root adm  
-account [success=1 new_authtok_reqd=done default=ignore]    pam_unix.so +        sharedscripts 
-account requisite           pam_deny.so +        postrotate 
-account required            pam_permit.so +                # reload could be not sufficient for all logs, a restart is safer 
-account [success=ok new_authtok_reqd=done ignore=ignore user_unknown=ignore authinfo_unavail=ignore default=bad]    pam_ldap.so minimum_uid=1000 +                invoke-rc.d proftpd restart 2>/dev/null >/dev/null || true 
- +        endscript 
-password    [success=1 default=ignore]  pam_ldap.so minimum_uid=1000 +}
-password    requisite           pam_deny.so +
-password    required            pam_permit.so +
- +
-session [default=1]         pam_permit.so +
-session requisite             pam_deny.so +
-session required              pam_permit.so +
-session required          pam_unix.so +
-session [success=ok default=ignore] pam_ldap.so minimum_uid=1000+
 </file> </file>
- 
-==== Application de la nouvelle config ==== 
- 
-  invoke-rc.d vsftpd restart 
- 
admin/services/ftp.1399317280.txt.gz · Dernière modification : 2014/05/05 21:14 de marc.gallet

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki