Vous n'êtes pas identifié(e).
L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT →
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente Dernière révision Les deux révisions suivantes | ||
utilisateurs:hypathie:tutos:vsftpd [02/10/2014 17:41] Hypathie créée |
utilisateurs:hypathie:tutos:vsftpd [02/10/2014 18:16] Hypathie [Installation et utilisations] |
||
---|---|---|---|
Ligne 20: | Ligne 20: | ||
La faille majeur d'un serveur vsftpd est que tout passe en clair. Il faudra donc installer un certificat ssl qui permet le chiffrement de la connexion au serveur. | La faille majeur d'un serveur vsftpd est que tout passe en clair. Il faudra donc installer un certificat ssl qui permet le chiffrement de la connexion au serveur. | ||
- | ===== Installation et utilisation===== | + | ===== Installation et utilisations===== |
- | ====Installation de vsftpd et de open-ssl ==== | + | ====Installation et configuration basique de vsftpd==== |
===Installation de vsftpd=== | ===Installation de vsftpd=== | ||
<code root>apt-get install vsftpd</code> | <code root>apt-get install vsftpd</code> | ||
Ligne 37: | Ligne 37: | ||
-> C'est ok aussi ! | -> C'est ok aussi ! | ||
- | ===Connexion avec configuration basique=== | + | ===Configuration basique=== |
Attention il faut être derrière un routeur c'est-à-dire en local. | Attention il faut être derrière un routeur c'est-à-dire en local. | ||
* On fait quelques menues modification au fichier de configuration "/etc/vsftpd.conf" | * On fait quelques menues modification au fichier de configuration "/etc/vsftpd.conf" | ||
Ligne 60: | Ligne 60: | ||
ftp> exit | ftp> exit | ||
221 Goodbye.</code> | 221 Goodbye.</code> | ||
+ | |||
+ | > où ''Password'' : est le mot de passe du compte de l'utilisateur "hypathie" sur le système Linux. | ||
+ | |||
+ | Voyons maintenant le détail des options possibles et l'installation d'un certificat ssl pour chiffrer le mot de passe de l'utilisateur. | ||
+ | |||
+ | ====Configuration de vsftpd avec ssl ==== | ||
+ | ===Installation de open-ssl === | ||
+ | <code root>apt-get install openssl</code> | ||
+ | |||
+ | ===Création du certificat=== | ||
+ | Peut importe d'où la commande suivante va être lancé on déplacera le fichier qu'elle va créer. | ||
+ | |||
+ | <code root>openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout vsftpd.pem -out vsftpd.pem</code> | ||
+ | <note>Répondre comme bon vous semblera à toutes les questions sauf :\\ | ||
+ | ''Common Name'' : mettre l'IP du serveur ou le nom de domaine si un DNS en local est installé.</note> | ||
+ | |||
+ | <code root>mv vsftpd.pem /etc/ssl/certs</code> | ||
+ | |||
+ | * Pour sécuriser tout ça : | ||
+ | |||
+ | <code root>chown root:root /etc/ssl/certs/vsftpd.pem</code> | ||
+ | |||
+ | <code root>chmod 600 /etc/ssl/certs/vsftpd.pem</code> | ||
+ | |||
+ | Et voilà !\\ | ||
+ | Il faut maintenant éditer à nouveau le fichier /etc/vsftpd.conf | ||
+ | |||
+ | ===Détail des options par défaut de vsftpd avec ssl=== | ||
+ | Voici les options utilisées et commentées à partir de man vsftpd, histoire de comprendre ce qu'on fait. C'est sûr, c'est long ... | ||
+ | |||
+ | Pour les options qui ne sont pas utilisées dans cette configuration, voir le man ou en ligne ici : [[https://security.appspot.com/vsftpd/vsftpd_conf.html]] | ||
+ | |||
+ | * Éditons à nouveau /etc/vsftpd.conf : | ||
+ | <code root>vim /etc/vsftpd.conf</code> | ||
+ | <code> | ||
+ | # Pour mettre en mode standalone : ce mode permet au service FTP d'avoir | ||
+ | # son propre démon au lieu de fonctionner sous le démon des autres | ||
+ | # service du sytème, le démon xinetd | ||
+ | # | ||
+ | listen=YES | ||
+ | # | ||
+ | # On n'utilisera pas ipv6 | ||
+ | #listen_ipv6=YES | ||
+ | # | ||
+ | # On ne veut pas de connexions en mode anonymous qui permet à quiconque | ||
+ | # de se connecter au serveur | ||
+ | # | ||
+ | anonymous_enable=NO | ||
+ | # | ||
+ | # On veut que les utilisateurs locaux puissent se connecter | ||
+ | local_enable=YES | ||
+ | # | ||
+ | # On veut que les utilisateurs puissent remonter des fichiers sur le serveur | ||
+ | write_enable=YES | ||
+ | # | ||
+ | # Umask par défaut pour les utilisateurs locaux est 077 | ||
+ | # On peut changer cela en 022, si les utilisateurs s'attendent à ce que | ||
+ | # (022 soit utilisé par la plupart des autres serveurs FTP). | ||
+ | local_umask=022 | ||
+ | # | ||
+ | # | ||
+ | # On interdit l’upload anonyme | ||
+ | anon_upload_enable=NO | ||
+ | # | ||
+ | # On interdit l'upload anonyme | ||
+ | anon_mkdir_write_enable=NO | ||
+ | # | ||
+ | # Lorsque cette option est activée, un message apparaît chaque fois | ||
+ | # qu'un utilisateur ouvre un répertoire avec un fichier message. | ||
+ | # Ce message se trouve dans le répertoire qui est ouvert. | ||
+ | # Le nom de ce fichier est spécifié dans la directive | ||
+ | # message_file et part défaut prend la valeur .message. | ||
+ | # man page précise que par défaut la valeur est NO mais qu'une simple | ||
+ | # configuration peut mettre la valeur YES. Cela varie selon les distributions. | ||
+ | dirmessage_enable=NO | ||
+ | # | ||
+ | # Les heures d’enregistrement des fichiers seront affichées à l’heure locale. | ||
+ | use_localtime=YES | ||
+ | # | ||
+ | # Pour que les actions des utilisateurs soient loggées. | ||
+ | xferlog_enable=YES | ||
+ | # | ||
+ | # On vérifie que la demande de port provienne forcément du port 20 | ||
+ | # de la machine cliente. | ||
+ | connect_from_port_20=YES | ||
+ | # | ||
+ | # Lorsque cette option est activée, tous les fichiers téléléchargés | ||
+ | # vers les serveurs par des utilisateurs anonymes deviennent | ||
+ | # la propriété de l'utilisateur spécifié dans la directive chown_username. | ||
+ | chown_uploads=yes | ||
+ | # Spécifie la propriété de fichiers téléchargés anonymement | ||
+ | # vers le serveur si la directive chown_uploads est activée. | ||
+ | chown_username=hypathie | ||
+ | # | ||
+ | # Les logs seront enregistres dans le fichier /var/log/vsftpd.log | ||
+ | xferlog_file=/var/log/vsftpd.log | ||
+ | # | ||
+ | #Lorsque l'option "xferlog_std_format=YES" est activée de concert avec | ||
+ | # xferlog_enable, alors un seul un journal de transfert de fichiers | ||
+ | # compatible avec wu-ftpd est enregistré dans le fichier spécifié | ||
+ | # dans la directive xferlog_file (par défaut /var/log/xferlog). | ||
+ | # Il est important de noter ici que ce fichier journalise seulement | ||
+ | # les transferts de fichiers et n'enregistre pas les connexions au serveur. | ||
+ | # | ||
+ | #Lorsque l'option "xferlog_std_format=NO", on peut ajouter les directives | ||
+ | # "log_ftp_protocol=YES" et "xferlog_enable=YES" | ||
+ | # ainsi toutes les commandes et réponses FTP seront journalisées. | ||
+ | # Cela est très utilise lors d'opérations de débogage. | ||
+ | xferlog_std_format=YES | ||
+ | # | ||
+ | # On declare les valeurs de timeout. Spécifie la durée maximale pouvant | ||
+ | # s'écouler entre des commandes depuis un client distant. | ||
+ | # Une fois cette durée écoulée, la connexion au client distant est fermée. | ||
+ | idle_session_timeout=600 | ||
+ | # | ||
+ | # Spécifie la durée maximale exprimée en secondes, | ||
+ | # pendant laquelle les transferts de données peuvent s'arrêter. | ||
+ | data_connection_timeout=120 | ||
+ | # | ||
+ | #On ajoute une indication sur la durée maximale exprimée en secondes, | ||
+ | # donnée à un client utilisant un mode actif pour répondre | ||
+ | # à une connexion de données. | ||
+ | connect_timeout=60 | ||
+ | #On ajoute une indication sur la durée donnée à un client | ||
+ | # utilisant une connexion passive pour se connecter. | ||
+ | accept_timeout=60 | ||
+ | # Il est recommandé que vous définissez sur votre système un utilisateur | ||
+ | # unique que le serveur FTP peut utiliser comme un utilisateur non | ||
+ | # privilégié et totalement isolé. | ||
+ | # Cela restreint complétement les privilèges d'exécution du processus vsftpd | ||
+ | # non privilégié (lancé au moment de l'attente d'authentification | ||
+ | # puis lors de l'automutilation) en lui dédiant un utilisateur (par défaut | ||
+ | # nobody). Mais il faut de créer cet utilisateur non-privilégié (par | ||
+ | # exemple vsftpd) et de le spécifier par la directive nopriv_user=vsftpd. | ||
+ | # Si on ne crée pas cet utilisateur plus personne peut être accepté. | ||
+ | # man page indique que par défaut la valeur est "Default: nobody". | ||
+ | #nopriv_user=ftpsecure | ||
+ | nopriv_user=nobody | ||
+ | # | ||
+ | # Par sécurité, on interdit la commande ABOR | ||
+ | # Elle permet de stopper un téléchargement asynchrone en cours. | ||
+ | # Elle est considérée comme complexe et inélégante, parce qu’async ABOR | ||
+ | # produit des effets différents en fonction des clients. On l'utilise quand | ||
+ | # on ne sait pas quel type de client est susceptible de se connecter. | ||
+ | async_abor_enable=NO | ||
+ | # | ||
+ | # Les transferts en ASCII sont souvent source de confusions. | ||
+ | ascii_upload_enable=NO | ||
+ | ascii_download_enable=NO | ||
+ | # | ||
+ | # On change la bannière pour reconnaître note serveur et c'est plus joli ! | ||
+ | ftpd_banner=Bienvenue ! | ||
+ | # | ||
+ | # Utile pour prévenir certaines attaques : Lorsque cette option est activée, | ||
+ | # tout utilisateur anonyme employant des mots de passe de messagerie | ||
+ | # spécifiés dans /etc/vsftpd.banned_emails se voit refuser l'accès au serveur. | ||
+ | # Le nom du fichier référencé par cette directive peut être spécifié | ||
+ | # à l'aide de la directive banned_email_file | ||
+ | # On l'utilise avec l'autorisation des connexions anonymes, ce qu'on a refusé. | ||
+ | #deny_email_enable=YES | ||
+ | # (default follows) | ||
+ | #banned_email_file=/etc/vsftpd.banned_emails | ||
+ | # | ||
+ | ### Si on veut limiter les utilisateurs à leur repertoire | ||
+ | chroot_local_user=NO | ||
+ | # | ||
+ | # Mais il est à noter d'abord que : | ||
+ | # 1) Si on a choisi "chroot_local_user=YES" | ||
+ | # alors on doit mettre "chroot_list_enable=NO" | ||
+ | # sinon la liste_enable indique les utilisateurs qui ne sont pas chrootés. | ||
+ | # | ||
+ | # 2) Une mesure de sécurité ajoutée à vsftpd dans sa version 2.3.5, refuse | ||
+ | # de chrooter un client dans un répertoire pour lequel l'utilisateur possède | ||
+ | # les droits d'écriture. Du coup avec :"chroot_local_user=YES" | ||
+ | # un refus de connexion à lieu lorsque un utilisateur tente de se logger : | ||
+ | # "500 OOPS: vsftpd: refusing to run with writable root inside chroot() | ||
+ | #Login failed. | ||
+ | # | ||
+ | # Avec "chroot_local_user=YES" la méthode pour contourner cette sécurité: | ||
+ | #"chroot_local_user=YES" | ||
+ | #"allow_writeable_chroot=YES" | ||
+ | # Et ""chroot_list_enable=NO" | ||
+ | # ne fonctionne pas | ||
+ | # | ||
+ | ### Il en va de même pour l'option "chroot_list_enable=YES" | ||
+ | # (avec "chroot_local_user=NO") qui devrait permettre de fournir | ||
+ | # une liste des utilisateurs locaux dont le répertoire personnel peut | ||
+ | # placé dans un chroot () lors de la connexion. | ||
+ | # Par défaut, le fichier contenant cette liste devrait être | ||
+ | # /etc/vsftpd.chroot_list | ||
+ | # Mais cela ne fonctionne pas. | ||
+ | #chroot_list_file=/etc/vsftpd.chroot_list | ||
+ | # | ||
+ | ## Désactive le listage récursif des répertoires par la commande "ls -R", | ||
+ | # afin d'éviter trop d'appels sur le système de fichier. | ||
+ | # Certain clients FTP comme "ncftp" ou "mirror" réclame l'option "-R" | ||
+ | # pour fonctionner. | ||
+ | # ls_recurse_enable=NO | ||
+ | # | ||
+ | # Customization | ||
+ | # | ||
+ | # Some of vsftpd's settings don't fit the filesystem layout by | ||
+ | # default. | ||
+ | # | ||
+ | # Cette option doit être le nom d'un répertoire qui est vide. | ||
+ | # En outre, le répertoire ne doit pas être accessible en écriture | ||
+ | # par l'utilisateur ftp. | ||
+ | # Ce répertoire est utilisé comme un chroot sécurisé. | ||
+ | # Par exemple pour emprisonner le démon vsftpd : | ||
+ | # "secure_chroot_dir=/var/run/vsftpd". | ||
+ | # Mais tout va bien par défaut, à l'installation /var/run/vsftpd/empty | ||
+ | # possède les bons droits et il est vide. | ||
+ | secure_chroot_dir=/var/run/vsftpd/empty | ||
+ | # | ||
+ | # Spécifie le nom du service PAM pour vsftpd: | ||
+ | # Le PAM est système d'authentification utilisé en standard sous Linux. | ||
+ | # DOC en français : http://www-igm.univ-mlv.fr/~dr/XPOSE2003/augereau/2.html | ||
+ | pam_service_name=vsftpd | ||
+ | # | ||
+ | ###mise en place du chiffrement ssl | ||
+ | # | ||
+ | #Remarque sur l'utilisation de ssl: | ||
+ | #Soit on met certificat et clé privée dans /etc/ssl/private/vstfpd.pem | ||
+ | #Soit on met le certificat (copie) dans | ||
+ | # et dans ce cas, on ajoute la directive | ||
+ | # "rsa_private_key_file=/fichier/clé/privée" | ||
+ | # Cette option spécifie l'emplacement de la clé privée RSA à | ||
+ | # utiliser pour les connexions cryptées SSL. | ||
+ | # emplacement par défaut : Default: (none) | ||
+ | ssl_enable=YES | ||
+ | validate_cert=NO | ||
+ | ssl_ciphers=HIGH | ||
+ | require_ssl_reuse=NO | ||
+ | allow_anon_ssl=NO | ||
+ | force_local_data_ssl=YES | ||
+ | force_local_logins_ssl=YES | ||
+ | ssl_tlsv1=YES | ||
+ | ssl_sslv2=NO | ||
+ | ssl_sslv3=NO | ||
+ | # Emplacement du certificat RSA à utiliser pour les connections SSL. | ||
+ | rsa_cert_file=/etc/ssl/certs/vsftpd.pem | ||
+ | # | ||
+ | pasv_address=192.168.0.10 | ||
+ | </code> | ||
+ | |||
+ | ====Connexion au serveur vsftpd avec ssl==== | ||
+ | ===Installation sur le client de ftp-ssl=== | ||
+ | |||
+ | <code root>apt-get install ftp-ssl</code> | ||
+ | |||
+ | <note imprtant>Cela va désinstaller ftp client !\\ | ||
+ | Donc il faudra forcement passer par ftp-ssl, et on ne pourra plus se connecter au serveur comme dans la première partie du wiki.\\ | ||
+ | Mais ça veut mieux ! | ||
+ | </note> | ||
+ | |||
+ | ===Connexion avec ftp-ssl === | ||
+ | <code user>ftp-ssl 192.168.0.10</code> | ||
+ | >où ''192.168.0.10'' est à remplacer par l'IP de votre serveur vsftpd | ||
+ | |||
+ | <code>Connected to 192.168.0.10. | ||
+ | 220 Bienvenue ! | ||
+ | Name (192.168.0.10:hypathie): hypathie | ||
+ | 234 Proceed with negotiation. | ||
+ | [SSL Cipher AES256-GCM-SHA384] | ||
+ | 331 Please specify the password. | ||
+ | Password: | ||
+ | 230 Login successful. | ||
+ | Remote system type is UNIX. | ||
+ | Using binary mode to transfer files. | ||
+ | ftp> exit | ||
+ | 221 Goodbye.</code> | ||
+ | |||
+ | > où ''Password'' : est le mot de passe du compte de l'utilisateur "hypathie" sur le système Linux. | ||
+ | |||
+ | Et voilà ! | ||
+ | |||