TP Administration du serveur ProFTP
Installation ProFTP
- Sur Debian : apt-get install proftpd
- Configuration : lancer proftp en inetd ou indépendamment (standalone) --> indépendamment
- Messages :
- création de l'utilisateur système ftp et son répertoire personnel /home/ftp
- fichier de configuration dans /etc/proftpd.conf et doc dans /usr/share/doc/proftpd/
- Tests
Pour démarrer, stopper, mettre à jour la configuration : /etc/init.d/proftpd start|stop|reload
Examen des processus : ps aux | grep pro
Examen des ports : nmap localhost --> écoute sur le port 21
Pour vérifier la syntaxe de la configuration : proftpd -t
- Documentation
Documentation sur http://www.proftpd.org/lists.html
Installation d'un client sur Ubuntu
apt-get install gftp
Une nouvelle entrée est créée dans le menu Applications -> Internet
TP1 Tests de transferts
- Pour un fonctionnement de base, il n'y a rien à faire !
Par défaut, le serveur utilise les comptes utilisateurs locaux dont les données sont stockées dans /etc/passwd et
/etc/shadow. Un utilisateur possédant un compte sur le système peut donc s'authentifier avec ce compte à partir d'un client ftp quelconque
- Connexion authentifiée
A partir d'une station Linux ou Windows, lancer un client ftp graphique (par exemple gftp) avec le compte stage (mot de passe : stage)
(si on préfère le client ftp d'origine, en mode commande avec le client ftp : ftp ip)
Constatez que la connexion comme root est refusée.
- Tests de transferts
Effectuer une série de transferts dans et depuis votre répertoire personnel /home/stage (ou "vos documents")
En particulier, effectuer une mise en ligne de votre site web personnel (c'est-à-dire dans public_html). Vérifier par connexion http (ajouter des droits si nécessaire avec le client ftp).
Vérifiez que l'utilisateur stage
peut parcourir toute l'arborescence et transférer des fichiers
conformément à l'application des droits système classiques r-w-x
- Suivi des connexions
La commande ftpwho donne la liste des utilisateurs connectés
La commande ftptop permet de connaitre en temps réel les machines connectées
- Examen des logs
Examiner le fichier de log du serveur /var/log/xferlog (pour des détails voir man xferlog.
La distinction du sens de transfert est effectuée par les indications suivantes :
o outgoing , i incoming , d deleted
On distingue aussi le mode d'accès (a anonymous / r authentifié)
La commande ftpstats (voir man ftpstats) fournit un rapport statistiques à partir de ce fichier.
TP2 Paramétrage du système
Commencer prudemmment par faire une copie de sauvegarde du fichier de configuration /etc/proftpd.conf
- Il apparait absolument nécessaire de parfaire le paramétrage actuel du serveur.
Les clients authentifiés peuvent se balader partout, en remontant jusqu'à la racine du système de fichier ! et ils
peuvent ainsi pratiquement télécharger tout ce qui peut se lire.
- Pour limiter l'accès des clients du serveur à leur répertoire personnel, ajouter la ligne :
DefaultRoot ~
Le symbole ~ indique le répertoire utilisateur. Chaque utilisateur aura
alors accès seulement à son répertoire personnel vu comme une racine
fictive du système de fichiers
Ne pas oublier de relancer le service : /etc/init.d/proftpd reload. Vérifier.
- Remarque : dans un contexte d'hébergement de sites personnels
(cf TP apache2), on peut limiter l'accès (et donc la mise en ligne de
fichiers) aux sous-répertoires public_html. Pour cela :
DefaultRoot "~/public_html"
- Pour empêcher l'accès au serveur à des utilisateurs qui possèdent un compte, on en dresse explicitement la liste dans le fichier
/etc/ftpusers. Tester.
TP3 paramétrer l'accès au site WEB pour le webmestre
- Compte webmestre
Créer un nouveau compte destiné au webmestre du WEB avec adduser, par exemple login= web, password=web
Celui-ci doit avoir un accès complet au site web /var/www :
- faire en sorte que son répertoire personnel soit le site web principal : /var/wwww
- puis accorder à web les droits Linux de propriété de groupe sur toute cette arborescence.
- Tester
L'utilisateur web peut-il bien accéder en lecture-écriture à l'ensemble du site ?
- Interdire l'accès au répertoire /var/www/prive
# accès
# refuser l'accès de web dans /var/www/prive
<Directory /var/www/prive>
<Limit ALL>
DenyAll
</Limit>
</Directory>
Retester
TP4 Accès en anonymous
On souhaite permettre le téléchargement de ressources, dans un
répertoire dédié à celà pour des utilisateurs "anonymes" (sans exigence
d'authentification)
- Il faut créer la section anonymous pour que les clients puissent se connecter comme anonymous sans
authentification, en fait au nom de l'utilisateur ftp. Ce compte a été créé par le serveur et lui a attribué comme répertoire personnel : /home/ftp, sans possibilité de se loguer (pas de shell). Pour vérifier, voir /etc/passwd
L'utilisateur anonymous est défini comme un alias du compte ftp, on limitera à 10 connexions maximum simultanées,
- Voici une configuration de base, permettant le téléchargement à partir du rép. /var/ftp, et les dépots sans
droit de lecture (uploads) dans /var/ftp/depot
<Anonymous ~ftp>
User ftp
Group nogroup
# pour que anonymous soit considéré comme un alias de ftp
UserAlias anonymous ftp
MaxClients 10 "désolé, au maximum %m connexions !"
# pas de shell
RequireValidShell off
# sans mot de passe
AnonRequirePassword off
# PAS de droit d'écriture en général
<Directory /home/ftp>
<Limit WRITE>
DenyAll
</Limit>
</Directory>
# le sous-rép. depot est en écriture seule
<Directory /home/ftp/depot>
<Limit READ>
DenyAll
</Limit>
<Limit STOR>
AllowAll
</Limit>
</Directory>
</Anonymous>
- Manipulation
- Compléter /etc/proftpd.conf (voir ci-dessus), et relancer le serveur
- Vérifier l'existence du compte ftp
- Essai de connexion anonymous : quel est le répertoire racine alors accessible ? peut-on y écrire ?
- Observer les propriétés et les permissions du sous-rép /home/ftp.
Créer le sous-rép. /home/ftp/depot avec les mêmes permissions que sur /home/ftp.
- Tester en anonymous le dépot de document : dans /var/ftp puis dans ses 2 sous-rep.
- Quelqu'un (anonyme ou authentifié) peut-il récupérer un tel document déposé ?
- Alors qui va récupérer ces documents ?
Créer un compte admin/admin (Admin du FTP), qui appartienne au groupe primaire ftp, et dont le rép. personnel
soit /home/ftp.
- Ouvrir une session FTP comme admin et tester ses prérogatives
TP5 Authentification sur un serveur LDAP
Objectif : on dispose
d'un serveur LDAP fonctionnant, par exemple, sur SambaEdu3, et on
désire que l'authentification s'effectue sur les comptes LDAP. Ensuite,
il faudra s'assurer que les utilisateurs soient connectés directement
dans leur répertoire personnel.
- Installation
Elle nécessite l'installation d'un module spécial mod_ldap déjà compilé et inclus dans un autre paquet. Donc :
apt-get install proftpd-ldap
- va désinstaller le paquet proftpd
- avertit du changement manuel de configuration à effectuer
- installer la nouvelle version de proftpd.conf
- Documentation
Voir les directives commentées, en particulier celles qui sont dédiées à LDAP, dans Configuration.html
- Paramètrage
Extrait de /etc/proftpd.conf
ServerName debian
serverType standalone
.....
# pour ne pas exiger que l'utilisateur possède un compte local
RequireValidShell off
LDAPServer localhost (ou ip)
LDAPDoAuth on "ou=People,dc=fctice,dc=local"
LDAPDNInfo cn=admin,dc=fctice,dc=local fctice
Créer des répertoires pour les comptes LDAP (par exemple : /home/galoise, /home/agras.
Tester les connexions ftp pour ces comptes définies sur l'annauire LDAP du SE3
Bien vérifier que les "home" doivent exister. Il conviendra donc de créer un rép. ftp pour chaque compte LDAP ayant-droit.
Création des répertoires "à la demande"
Avec ces directives nouvelles dans les versions récentes de ProFTP,
LDAPHomedirOnDemand on 0750
LDAPHomedirOnDemandPrefix "/home"
LDAPHomedirOnDemandSuffix "public_home"
on permet la création -normalement- du répertoire personnel pour
chaque utilisateur authentifié sur LDAP, avec les droits spécifiés,
comme sous-répertoire de /home, en permettant de plus la création du s-rép. public_html