Mise en place d’un socle FTP sécurisé dans le cloud (1/3)

De nombreuses entreprises, que ce soient des PME, des industries, des hôpitaux ou des banques, ont besoin d’échanger des fichiers avec leurs partenaires ou même à l’intérieur de leur organisation. Nous avons tous entendu parler de ces cyber-attaques visant à perturber l’activité de ces entreprises ou à voler leurs données. Mettre en place une solution fiable et sécurisée pour le transfert de fichiers est, de nos jours, indispensable pour ces entreprises.

Même si le net regorge d’articles autour de ce sujet, nous vous proposons d’illustrer, dans cette série d’articles, la démarche que nous avons suivie chez l’un de nos clients, pour installer “SFTP” sur un cloud public tel qu’AWS, et de renforcer cette installation par la mise en place d’un antivirus comme MetaDefender.

Avant de commencer, présentons rapidement SFTP : SFTP (ou Secure Shell File Transfer Protocol) est un protocole de transfert et de gestion de fichiers, habituellement déployé sur le port SSH (22). Cet outil prend en charge à la fois, l’authentification (login/mot de passe, par échange de clé ssh), le chiffrement et le transfert des fichiers à travers le réseau.

A noter qu’il existe le “FTPS” (File Transfer Protocol Secure), qui peut être utilisé en mode “Connexion SSL/TLS” explicite ou “Connexion SSL/TLS implicite”. Le mode “implicite” dédie un port de communication spécifique (990 par défaut), pour l'authentification et l’établissement de la connexion SSL.

A noter, que son semblable non sécurisé "FTP" est absolument à proscrire car il constitue une cible privilégiée des hackers.

Le sujet sera découpé en une série de trois articles

  • Déployer un SFTP managé sur le cloud AWS
  • Sécuriser l’accès à AWS SFTP
  • Sécuriser le stockage de fichiers

PARTIE 1 - Déployer un SFTP managé sur le cloud AWS

AWS Transfer Family est le service managé du provider cloud AWS pour les protocoles SFTP, FTP et FTPS.

Ce service managé d’AWS offre la possibilité d'avoir un serveur SFTP, FTP et FTPS entièrement administré pour les transferts de fichiers. Le service est sorti fin 2018 sur toutes les régions AWS.

AWS Transfer Family fonctionne avec Amazon S3 ou Amazon EFS pour le stockage des fichiers.

L'intérêt de passer en service managé est de se décharger de l’entretien d’une infrastructure pour un serveur SFTP. AWS prend en charge les problématiques d’infrastructure, de scalabilité et de disponibilité (multi-AZ disponible).

Mise en place de AWS SFTP (avec Amazon S3)

  1. Créer un Bucket S3 ainsi qu’un rôle IAM qui autorise AWS Transfer à accéder au bucket S3.
  2. Créer un serveur Transfer Family en choisissant le protocole SFTP et  le stockage de type S3
  3. Choisir son ‘Identity Provider’ : Vous avez le choix entre le service managé (username & clés), soit un Active Directory (AWS Directory Service directory) ou un service personnalisé implémenté par vous.
  4. Choisir l’endpoint du SFTP et son type : public ou privé
  5. Configurer les logs avec Cloudwatch (création d’un log groupe et d’un rôle IAM)

Par le choix du type d’endpoint (public ou privé), on peut choisir d’implémenter un SFTP externe : exposé sur internet ou un SFTP interne : exposé au sein d’un VPC.

Dans notre cas, nous avons besoin d’un SFTP interne mais également exposé à des partenaires externes. Nous avons donc choisi un SFTP interne avec un endpoint VPC. Un endpoint VPC est une connexion, un point d’accès entre un cloud privé virtuel (VPC) et un service AWS.

Pour exposer le SFTP à des partenaires externes, nous avons mis en place un Load Balancer (Network Load Balancer) sur les subnets publics de notre VPC (‘internet facing’) qui pointe sur le serveur SFTP. De plus, dans notre cas, le SFTP avait pour contrainte d’être sur le port 4422, alors que le service SFTP d’AWS propose seulement le port 22. Le NLB permet alors d’exposer en extérieur le SFTP mais également d’installer une redirection de port du port 4422 vers le port 22. L’utilisation du Load Balancer (Network Load Balancer) est présentée par le schéma suivant :

L’accès au serveur AWS SFTP est sécurisé via un security group pour filtrer les IPs.

Mais attention, si on utilise un NLB avec du forward d’IP alors le security group ne fonctionnera plus car le ‘forward d’IPs’ ne fonctionne pas via les NLB sur AWS avec le service AWS Transfer Family.

Dans ce cas de figure, toute personne externe qui passerait via le NLB arriverait sur le SFTP avec une IP interne et privée à notre VPC sur AWS. Le security group ne pourrait donc plus exercer son travail de filtrage.

En 2021, AWS a prévu dans sa roadmap d’ajouter la possibilité d'avoir un autre port que le 22 sur un serveur SFTP sur AWS Transfer Family.

En attendant, nous avons mis en place le service AWS Network Firewall qui permet de mettre en place un firewall général sur tout un VPC et ses accès externes. Cette solution est expliquée dans la partie 2 de cette suite d'articles.

L’exposition du SFTP est alors :

Exposition

Port

Accessibilité / Whitelisting 

Interne à la VPC

22

Ouvert aux IPs de la VPC (à activer via le security group)

Externe via Internet

4422

Ouvert aux IPs autorisées via le Network Firewall

Pour l’authentification, AWS Transfer propose seulement une authentification avec clés mais nous souhaitions aussi avoir une authentification possible avec login et mot de passe.

Pour customiser l’authentification avec nom d’utilisateur et mot de passe, nous avons suivi ce tuto :

https://aws.amazon.com/fr/blogs/storage/enable-password-authentication-for-aws-transfer-for-sftp-using-aws-secrets-manager/

Après installation de l’authentification nom d’utilisateur et mot de passe, notre architecture de SFTP est alors la suivante :

Après avoir déployé un serveur SFTP sur AWS dans cette première partie, nous allons voir dans une deuxième partie comment sécuriser l’accès à ce SFTP.