Ftp

Élément important dans un serveur, le serveur Ftp !

Grâce à lui vous pourrez accéder à vos données depuis n’importe où, et de manière sécurisée.

Pour se faire, j’ai opté pour la solution VSFTP, soit Very Secure File Transfer Protocol. Simple d’utilisation et de configuration.

 

# dnf install vsftpd

 

Comme tout démon, on retrouve le D dans le nom du paquet.

Une fois le tout installé, suffit de faire une copie de votre fichier de configuration.

 

# cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak

 

Allez direction la configuration !

 

# nano /etc/vsftpd/vsftpd.conf

# Example config file /etc/vsftpd/vsftpd.conf
#
# The default compiled in settings are fairly paranoid. This sample file
# loosens things up a bit, to make the ftp daemon more usable.
# Please see vsftpd.conf.5 for all compiled in defaults.
#
# READ THIS: This example file is NOT an exhaustive list of vsftpd options.
# Please read the vsftpd.conf.5 manual page to get a full idea of vsftpd’s
# capabilities.
#
# Allow anonymous FTP? (Beware – allowed by default if you comment this out).
anonymous_enable=no
#
# Uncomment this to allow local users to log in.
local_enable=YES
#
# Uncomment this to enable any form of FTP write command.
write_enable=YES
#
# Default umask for local users is 077. You may wish to change this to 022,
# if your users expect that (022 is used by most other ftpd’s)
local_umask=022
#
# Uncomment this to allow the anonymous FTP user to upload files. This only
# has an effect if the above global write enable is activated. Also, you will
# obviously need to create a directory writable by the FTP user.
anon_upload_enable=no
#
# Uncomment this if you want the anonymous FTP user to be able to create
# new directories.
anon_mkdir_write_enable=NO
#
# Activate directory messages – messages given to remote users when they
# go into a certain directory.
#dirmessage_enable=YES
#
# Activate logging of uploads/downloads.
xferlog_enable=YES
# You may change the default value for timing out an idle session.
#idle_session_timeout=600
#
# You may change the default value for timing out a data connection.
#data_connection_timeout=120
#
# It is recommended that you define on your system a unique user which the
# ftp server can use as a totally isolated and unprivileged user.
#nopriv_user=ftpsecure
#
# Enable this and the server will recognise asynchronous ABOR requests. Not
# recommended for security (the code is non-trivial). Not enabling it,
# however, may confuse older FTP clients.
#async_abor_enable=YES
#
# By default the server will pretend to allow ASCII mode but in fact ignore
# the request. Turn on the below options to have the server actually do ASCII
# mangling on files when in ASCII mode.
# Beware that on some FTP servers, ASCII support allows a denial of service
# attack (DoS) via the command « SIZE /big/file » in ASCII mode. vsftpd
# predicted this attack and has always been safe, reporting the size of the
# raw file.
# ASCII mangling is a horrible feature of the protocol.
#ascii_upload_enable=YES
#ascii_download_enable=YES
#
# You may fully customise the login banner string:
ftpd_banner=Salut les pirates ! Servez-vous c’est porte ouverte!.
#
# You may specify a file of disallowed anonymous e-mail addresses. Apparently
# useful for combatting certain DoS attacks.
#deny_email_enable=YES
# (default follows)
#banned_email_file=/etc/vsftpd/banned_emails
#
# You may specify an explicit list of local users to chroot() to their home
# directory. If chroot_local_user is YES, then this list becomes a list of
# users to NOT chroot().
#chroot_local_user=YES
#chroot_list_enable=NO
# (default follows)
#chroot_list_file=/etc/vsftpd/chroot_list
#
# You may activate the « -R » option to the builtin ls. This is disabled by
# default to avoid remote users being able to cause excessive I/O on large
# sites. However, some broken FTP clients such as « ncftp » and « mirror » assume
# the presence of the « -R » option, so there is a strong case for enabling it.
#ls_recurse_enable=YES
#
# When « listen » directive is enabled, vsftpd runs in standalone mode and
# listens on IPv4 sockets. This directive cannot be used in conjunction
# with the listen_ipv6 directive.
listen=YES
#
# This directive enables listening on IPv6 sockets. To listen on IPv4 and IPv6
# sockets, you must run two copies of vsftpd whith two configuration files.
# Make sure, that one of the listen options is commented !!
#listen_ipv6=YES

pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES

pasv_enable=yes
pasv_promiscuous=NO
pasv_min_port=50000
pasv_max_port=50001

 

Voici mon fichier de conf, et comme à l’accoutumé 2/3 changements à effectuer !

Allez on y go :

  • Allow anonymous FTP? : A votre avis ? Sauf si vous voulez autoriser l’accès aux invités je ne vous conseille pas ! Mettez anonymous_enable=no
  • write_enable=YES : Si vous voulez autoriser l’écriture, en autre uploader des fichiers, mettez YES
  • local_umask=022 : Umask, très intéressant. Place à la définition.

 

UMASK : Masque de création de fichier. Le umask définit les permissions par défaut d’un répertoire ou d’un fichier créé. En fait c’est tout simple, cette commande fixe les droits pour tout nouveau fichier sur le système. Création de fichier bien sur, mais upload de fichier par Ftp par exemple.

Nous avons abordé dans un précédent chapitre les droits sur les fichiers. Quand on crée un fichier, quel droit a-t-il ? Par défaut le propriétaire peut le modifier, l’exécuter, mais quand est-il du groupe, des autres ? Umask est là pour formaliser tout cela.

Si vous avez déjà fait du réseau, calculer un masque de sous réseau peut s’avérer compliquer au premier abord. Ici c’est un peu pareil.

Le système donne, par défaut (sécurité), certains droits à tout fichier ou répertoire, dès sa création; droits, avant filtrage, dits droits maximums.

Conséquence : il n’ y a pas création sans permissions accordées par défaut.

usmask est un masque (de bits) , la notation est donc différente des permissions ( chmod par exemple)

Il retranche. et distingue fichiers (droits maximums 666 ) et répertoire (droits maximums 777 )

Il faut partir des droits maximums et retrancher la valeur de umask pour obtenir les permissions accordées.

Droits réels accordés = droits maximums – (droits enlevés par UMASK).

Soit : 644 – 022 = 622 soit rw-r–r–

Ce sont les droits par défaut, ne vous en privez pas !

  • anon_upload_enable=no : Anonymes peuvent uploader. Et tu as pas 100 balles et un mars ? ^^
  • anon_mkdir_write_enable=no Anonymes peuvent créer des répertoires. Et tu as pas 200 balles et 2 mars ? ^^
  • ftpd_banner=Salut les pirates ! Servez-vous c’est porte ouverte!. Comme son nom l’indique, customiser le message de bienvenue !
  • listen=YES : Mieux vaut que le serveur écoute sur le port en IPV4, sinon je vous laisse arracher les cheveux pour le faire fonctionner ^^
  • userlist_enable=YES : Mettez yes pour gérer quels utilisateurs locaux vous voulez.
  • pasv_enable=yes : Pour mettre votre Ftp en mode passif.
  • pasv_min_port=50000 & pasv_max_port=50001 : choisissez les ports de votre mode passif.

 

Définition :

  1. Ftp en mode actif : c’est le client Ftp qui détermine automatiquement le port de connexion (par défaut)
  2. Ftp en mode passif : c’est le serveur Ftp qui détermine les ports de connexion, à configurer.

 

A vous de choisir ce qu’il vous convient !

Sauvegarder votre fichier de configuration.

Si vous suivez attentivement ce tuto, il nous reste 2 choses à faire. La première est de créer l’userlist, c’est à dire la liste des utilisateurs autorisés à se connecter en Ftp.

 

# nano /etc/vsftpd/user_list

 

La ça ne fonctionne pas comme les fichiers de conf, il faut commenter pour autoriser un utilisateur.Par défaut, bin, daemon n’a pas accès à mon serveur Ftp.

Une fois les utilisateurs choisis, démarrez le service vsftpd :

 

# systemctl start vsftpd

 

Avant de tester votre serveur Ftp, on va ouvrir les ports Ftp !

Direction Iptables :

 

# iptables -A INPUT -p tcp -i eth0 –dport 20 –state NEW -j LOG –log-prefix « forward »
# iptables -A INPUT -p tcp -i eth0 –dport 20 -j ACCEPT
# iptables -A INPUT -p tcp -i eth0 –dport 21 –state NEW -j LOG –log-prefix « forward »
# iptables -A INPUT -p tcp -i eth0 –dport 21 -j ACCEPT
# iptables -A INPUT -p tcp -i eth0 –dport 50000:500001 -j ACCEPT

 

ou Firewalld :

 

#firewalld-cmd –zone=FedoraWorkstation –add-service=ftp –permanent

#firewalld-cmd –zone=FedoraWorkstation –add-port=50000:500001 –permanent


Sachez que le Ftp nécessite 2 ports, le 20 & 21.

  • Le 21 pour les commandes du client au serveur.
  • Le 20 pour le mode passif, c’est le serveur qui discute avec le client par ce port.

 

A noter que si vous désirez atteindre votre Ftp depuis Internet, n’oubliez pas de rediriger ces mêmes ports sur votre routeur/box.

 

Bon ben reste plus qu’à tester, télécharger Filezilla client

Et rentrer les informations nécessaires pour atteindre votre serveur Ftp

  1. host : Ip local de votre serveur
  2. username : utilisateur commenté dans user_list
  3. password : le password de cet utilisateur, défini lors que la création de cet utilisateur via useradd

Et là ô joie vous devriez avoir :

 

Status: Resolving address of ftp.samn0.fr
Status: Connecting to 192.168.0.241:21…
Status: Connection established, waiting for welcome message…
Response: 220 Salut les pirates ! Servez-vous c’est porte ouverte!.
Command: USER mouah
Response: 331 Please specify the password.
Command: PASS *************
Response: 230 Login successful.
Status: Connected
Status: Retrieving directory listing…
Command: CWD /home/mouah
Response: 250 Directory successfully changed.
Command: PASV
Response: 227 Entering Passive Mode.
Command: LIST

 

Et là c’est gagné !

Sachez que vous pouvez chrooté vos utilisateurs, en d’autres termes vous pouvez leur assigner que leurs homes. C’est à dire si l’utlisateur mouah est chrooté, je pourrais naviguer que dans les répertoires /home/mouah et je ne pourrais pas remonter l’arborescence.

Pratique lorsque l’on a beaucoup d’utilisateurs et évitez qu’ils aillent fouiner là ou ils ne doivent pas aller.

Décommentez ceci dans /etc/vsftpd/vsftpd.conf : chroot_local_user=YES

Vous pouvez le constater, rien de bien affolant pour monter un serveur Ftp.

En espérant vous avoir aidé 🙂

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.