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

PARTIE 2 - Sécuriser l’accès à AWS SFTP

Comme vu dans le 1er article ‘Déployer un SFTP managé sur le cloud AWS’, AWS Transfer Family ne permet pas de customiser le port exposé du SFTP.  Un système de NLB, Target Group & endpoints a été nécessaire pour pouvoir exposer un port autre que le 22.

En plus du username/password, nous voulions sécuriser l’accès avec du whitelisting d’IP.

Mais plusieurs problèmes surviennent pour sécuriser l’accès au SFTP en filtrant les IPs des partenaires.

  • Avec une redirection d’IP via NLB, on peut choisir de conserver les IPs sources mais le service managé SFTP ne permet pas encore cette fonctionnalité en fonctionnant avec un NLB.
  • D'autre part, on ne peut pas mettre de security groups sur un NLB.

Comment alors sécuriser le port 4422 en filtrant les IPs ?

→ En première idée, les NACL (Network Access List) semblent pertinents pour bloquer l’accès au port 4422 avec du filtre d’IP. Une NACL est une couche de sécurité qui agit comme un pare-feu (firewall) pour contrôler le trafic entrant et sortant d'un sous-réseau (subnet).

Mais à grande échelle cette solution n’est pas envisageable car une NACL est limitée à 20 règles par liste ACL réseau et peut être augmentée jusqu’à 40 au maximum pour un subnet sur AWS.

La solution choisie est alors le service AWS Network Firewall qui permet de faire du filtrage sur des ports sur tout un VPC.

AWS Network Firewall

AWS Network Firewall est un service AWS qui permet de filtrer le trafic réseau au niveau d’un VPC. C’est un pare-feu réseau managé ainsi qu'un service de détection et de prévention des intrusions sur le VPC.

AWS Network Firewall permet de mettre en place du filtrage sur le trafic entrant et venant d'une passerelle Internet (Internet gateway), d'une passerelle NAT (NAT Gateway) ou encore via VPN ou AWS Direct Connect. Le pare-feu réseau utilise le système de prévention des intrusions (IPS) open-source, Suricata.

Il y a 3 types de ressources AWS pour AWS Network Firewall:

  • un Firewall = qui définit les FirewallPolicies, les subnets ainsi que le VPC
  • des FirewallPolicies = qui définissent des règles (RuleGroup) et autres paramètres pour le filtrage du trafic d’un VPC.
  • des RuleGroup = qui sont un ensemble de règles pour le filtrage du réseau d’un VPC et les actions correspondantes. AWS Network Firewall utilise deux types de groupes de règles: sans état ou avec état (stateless et stateful).

AWS Network Firewall protège les sous-réseaux publics (public subnets) au sein d’un VPC en filtrant le trafic passant entre les sous-réseaux publics (public subnets) et l'extérieur du VPC.

L'exemple ci-dessous présente l’architecture d'un Firewall avec 2 subnets publics:

  • Une Internet Gateway Route Table qui dirige le trafic destiné au subnet public du VPC (10.0.2.0/24 & 10.0.3.0/24) vers le Firewall subnet (vpce-xxx) de la même Zone (AZ).
  • Deux Firewall subnets & Route Table qui dirigent le trafic destiné pour n’importe où dans la VPC (10.0.0.0/16) vers ‘local address’ et dirigent le trafic destiné à n’importe où (0.0.0.0/0) vers l’Internet Gateway (igw).
  • Un Firewall Endpoint (vpce-xxx) par Firewall subnet (par AZ).
  • Les Subnet public du VPC & leur Route Table qui dirigent le trafic destiné pour n’importe où dans la VPC (10.0.0.0/16) vers ‘local address’ et dirigent le trafic destiné à n’importe où (0.0.0.0/0) vers les Firewall subnets de la même Zone (AZ) .

Dans notre cas, nous avons créé un Firewall sur notre VPC pour 3 subnets publics (chacun dans une AZ différente) avec le routage nécessaire. Le Network Firewall avait donc une ‘RuleGroup’ nommée ‘sftp’ avec toutes les IPs en whitelist comme rule ‘pass’ sur le port 4422 et par défaut le port 4422 bloqué.

Un paramètre à prendre en compte dans cette solution est le coût. En effet, le coût d’un Firewall peut vite être élevé.

Si on a plusieurs zones, alors il faut un Network Firewall Endpoint par zone au sein de notre région AWS. Ci-dessous, voici les prix pour un Network Firewall Endpoint et pour le trafic passant par le Firewall sur AWS:

Network Firewall Endpoint

$0.395/hr

Network Firewall Traffic Processing

$0.065/GB


Mais ce service complet permet d’avoir une gestion d’un Firewall sur tout un VPC.

Par ailleurs, le déploiement de cette architecture est possible en Infra As Code. Nous avons déployé via l’outil CDK d’AWS mais Terraform propose aussi les ressources nécessaires pour déployer AWS Transfer Family.

Après avoir sécurisé l’accès: le port, le login vers notre SFTP managé avec stockage sur S3. Nous allons voir dans une troisième partie comment sécuriser le contenu des fichiers déposés sur le SFTP.