Nous avons plusieurs applications web (B2B, B2C eCommerce) auxquelles les développeurs ont accès pour télécharger des fichiers.
Je dois m'assurer que la partie FTP est bien sécurisée.
Quelle est la meilleure façon de procéder?
Actuellement, j'ai:
Est-ce suffisant pour sécuriser l'accès FTP?
bien que @ mahbubut-r-aaman le mentionne en passant, j'ai pensé que je développerais un peu la SSH. La réponse que je dirais pour sécuriser FTP est de ne pas utiliser FTP. La raison étant qu'il (par défaut) envoie les noms d'utilisateur et les mots de passe en clair, ce qui n'est pas considéré comme une approche très sécurisée.
Au lieu de cela, vous pouvez regarder SFTP (qui utilise le protocole SSH) ou FTP (S) qui utilise le protocole FTP avec SSL pour le cryptage.
De plus, je suggère de rechercher une solution comme fail2ban pour aider à bloquer les tentatives de devinette de mot de passe.
changer le port sur lequel il écoute est un peu utile pour éviter le bruit dans vos journaux d'attaques aléatoires, mais vous ne devriez pas vous y fier.
verrouiller l'accès à des adresses IP source spécifiques est une bonne idée si c'est pratique car cela limitera les personnes qui peuvent tenter d'accéder au site.
Le protocole FTP standard n'est pas sécurisé. N'importe qui sur le réseau (n'importe quel "homme au milieu", comme on l'appelle, qui peut lire et/ou modifier les données sur la connexion) peut voir ce que vous envoyez et modifier les données envoyées. Une connexion FTP typique se présente comme suit:
* TCP connection is made to the server
220 Welcome to this FTP server!
USER <username>
331 Password required for <username>
PASS <password>
<a positive or negative response>
Comme vous pouvez le voir, il n'y a aucune protection du mot de passe. Comme n'importe qui sur le réseau peut lire ceci, un attaquant peut facilement se connecter avec un nom d'utilisateur et un mot de passe volés.
Il existe plusieurs façons de résoudre ce problème. Vous pouvez utiliser autre chose que FTP, mais comme c'est hors sujet ici, je n'entrerai pas dans les détails. FTP lui-même connaît deux versions sécurisées populaires: FTPS et SFTP. Vous pouvez les séparer comme suit: FTPS a un S à la fin, tout comme HTTPS. Et en effet, cela fonctionne exactement de la même manière que HTTPS, qui est par le protocole SSL/TLS. SFTP, avec un S préfixé, utilise SSH pour se connecter et est plus populaire sur les serveurs Linux.
Dans cet article, je me concentrerai sur FTPS.
Tout d'abord, c'est une bonne chose que vous cherchiez activement à sécuriser cela. Beaucoup de gens s'en moqueraient tout simplement!
Modification du numéro de port
Cela aide de deux manières, bien que les deux n'en valent pas vraiment la peine.
Le téléchargement peut être effectué à partir d'une IP fixe (notre local)
Cela aide un peu plus, mais cela vous limite également. Si vous êtes à la maison et que vous remarquez une énorme faille de sécurité dans votre site Web, vous devrez conduire. Avec un mot de passe décent, la limitation de l'IP ne devrait pas être nécessaire, surtout si vous avez un serveur qui prend en charge l'interdiction automatique après trop de tentatives de connexion invalides.
Vous pouvez configurer un VPN pour éviter d'avoir à conduire, mais à quoi bon si vous pouvez simplement choisir un mot de passe FTP fort?
Puisque vous ne l'avez pas mentionné, je suppose que vous êtes ouvert à toute implémentation de client et serveur FTP disponible pour n'importe quel système d'exploitation.
Bien que je n'ai pas testé de nombreux serveurs FTP, FileZilla Server fonctionne bien pour mes besoins, et je suppose que cela fonctionnerait bien pour toute petite organisation. Les fonctionnalités incluent:
Si vous utilisez un serveur Linux, vous pouvez rechercher des serveurs FTP avec des options similaires. La fonction de loin la plus importante à rechercher dans un serveur est FTPS ou SFTP, et la possibilité de forcer cela pour que personne ne puisse se connecter accidentellement sans cryptage. En plus de cela, l'autobanning et la journalisation sont plutôt importants.
Alors pour le client, je pense encore une fois que FileZilla est une très bonne option.
Les étapes suivantes vous aideront à sécuriser l'accès FTP
MODIFIER:
EDIT: Exemple d'implémentation
EDIT: J'aime la réponse de @Rory McCune. Belle et grande explication.
Au lieu d'utiliser FTP, mieux vaut regarder SFTP (qui utilise le protocole SSH) ou FTP (S) qui utilise le protocole FTP avec SSL pour le cryptage.
fail2ban est une bonne solution pour aider à bloquer les tentatives de devinette de mot de passe.
Changer le port sur lequel il écoute est un peu utile pour éviter le bruit dans vos journaux d'attaques aléatoires.
EDIT: Je préfère le commentaire de @ Rook
don't use ftp! Your password and your code in in plain text!