Activation du mode routeur sur la Freebox

Cette étape n'est pas strictement indispensable, mais il me semble préférable d'utiliser la Freebox en mode routeur. Par défaut, la Freebox est en mode bridge : elle a la même adresse IP que l'ordinateur auquel elle donne accès à Internet. Elle renvoie donc au poste local toutes les tentatives de connexion. Seul le pare-feu installé sur le poste local le protège des accès non autorisés.

En mode routeur, la Freebox a une adresse IP publique, alors que l'ordinateur du réseau local a une adresse privée non routable, définie manuellement ou par DHCP. La Freebox route et filtre (NAT) les communications entre Internet et le réseau local. Elle bloque par défaut toutes les tentatives de connexion en provenance d'Internet. Les ports sur lequels des connexions seront autorisées devront donc être ouverts et transférés (port forwarding) vers un poste du réseau local.

Sur le site de Free, connectez-vous à votre compte (http://subscribe.free.fr/login/) en saisissant un identifiant (numéro de téléphone fixe, en général) et un mot de passe. Cliquez sur Internet, puis sur Configurer mon routeur Freebox.

Dans la fenêtre Configuration de ma Freebox :

1. Cochez la case Vous souhaitez activer ce service pour passer la Freebox en mode routeur.

2. On peut laisser cochée la case DHCP activée. Il faudra alors fixer l'adresse du futur serveur FTP dans la zone Baux DHCP permanents en bas de la fenêtre (voir ci-dessous). On peut également désactiver cette case et définir manuellement les adresses IP du réseau privé.

3. Désactivez Réponse au ping et UPNP activé.

4. Dans la zone Redirection de ports, redirigez au moins deux ports du routeur vers le futur serveur. Le protocole FTP utilise deux ports, l'un pour les commandes et l'autre pour l'échange de données. En mode passif, le client ouvre une session sur le port de contrôle du serveur, puis active une connexion sur le port de données pour échanger des fichiers.

Le serveur n'étant pas public, j'ai sélectionné des ports non standard. Port de contrôle :

Port (sur la Freebox) : 500
Protocole : TCP
Destination : 192.168.0.10 (adresse IP du serveur)
Port (sur le futur serveur) : 500

On fait la même chose pour le port de données :

Port (sur la Freebox) : 56000
Protocole : TCP
Destination : 192.168.0.10 (adresse IP du serveur)
Port (sur le futur serveur) : 56000

Cliquez sur Ajouter pour que les données soient bien enregistrées.

Si vous pensez avoir plusieurs connexions simultanées sur le serveur FTP, vous devrez probablement déclarer plusieurs ports de données (voir les champs Redirections de plages de ports).

5. Dans la zone Baux DHCP permanents, fixez l'adresse IP du futur serveur, si les adresses IP des ordinateurs du réseau local sont définies automatiquement par la Freebox grâce au protocole DHCP :

IP : 192.168.0.10 (adresse IP du futur serveur)
Adresse MAC : adresse matérielle de la carte réseau 
du serveur, au format xx:xx:xx:xx:xx:xx.

Pour connaître l'adresse MAC de la carte ou du composant réseau du serveur, exécutez la commande ifconfig / all dans une fenêtre de terminal (sur le serveur) et cherchez la ligne Adresse matérielle.

En bas de la page, cliquez sur Envoyer et redémarrez (débranchez/rebranchez) la Freebox pour que les paramètres soient pris en compte.

Après redémarrage de la Freebox, vous pouvez réexécuter ifconfig / all sur le serveur pour vérifier que son adresse IP est bien 192.168.0.10.

Ouverture des ports dans le pare-feu de Windows Vista

A ce stade, les ports 500 et 56000 (dans notre exemple) sont renvoyés vers le serveur, mais le pare-feu de Vista ne devrait pas autoriser les connections entrantes. Pour vérifier, consultez un site de tests des ports, comme Online Port Scanner. Profitez-en pour tester les ports les plus courants. Si vous n'avez pas d'autres serveurs sur le poste Vista, aucun port ne devrait répondre.

Choisissez Panneau de configuration > Pare-feu Windows > Modifier les paramètres > onglet Exceptions. Cliquez sur Ajouter un port. Dans la fenêtre qui apparaît, saisissez par exemple FileZilla - Port de contrôle dans le champ Nom, et 500 dans le champ Numéro de port. Dans le champ Protocole, sélectionner TCP. Cliquez sur OK. Faites la même opération pour définir le port de données, 56000.

Pour le moment, les adresses IP autorisées à ouvrir une connexion sur le serveur ne sont pas limitées. Retournez sur le site du testeur de port et vérifiez que les deux ports ouverts répondent aux tentatives de connexion. Les autres ports ne doivent pas répondre.

On peut maintenant sécuriser un peu en filtrant les adresses IP autorisées à traverser le pare-feu. Dans la liste Programme ou port de l'onglet Exceptions, sélectionnez l'un des ports créés et cliquez sur Propriétés. Dans la fenêtre Modifier un port, cliquez sur Modifier l'étendue. Dans la fenêtre qui apparaît, saisissez des adresses IP dans le champ Liste personnalisée. Seules les ordinateurs associés à ces adresses pourront se connecter au serveur FTP. Cliquez sur OK et renouvelez l'opération pour le deuxième port.

Si vous utilisez un autre pare-feu que celui de Vista, le principe est le même : ouvrir des ports (le moins possible) et limiter (le plus possible) les adresses IP autorisées à se connecter à ces derniers.

Paramétrage du serveur FTP FileZilla.

Téléchargez FileZilla Server sur le site du projet et installez-le sur le poste Vista. Pendant l'installation, j'ai choisi d'installer le serveur comme service Windows avec démarrage automatique. En ce qui concerne l'interface d'administration, je préfère un démarrage manuel. J'ai installé la version 0.9.34.

Lancez l'outil d'administration (FileZilla Server Interface). Dans le menu Edit, choisissez Settings pour paramétrer le serveur. Nous allons n'autoriser que les connexions chiffrées (FTP sur SSL) et limiter les adresses habilitées à se connecter au serveur.

General Settings :

  • Connexion Settings - Listen on these ports : ne rien indiquer (on supprime le port par défaut, 22).
  • IP bindings : l'adresse IP du serveur Vista (192.168.0.10) et l'adresse locale (127.0.0.1).
  • IP Filter : adresses non autorisées (premier champ) : *
  • IP Filter : adresses autorisées (deuxième champ) : 127.0.0.1, réseau local éventuellement et adresses IP des ordinateurs autorisés à se connecter (même principe qu'au niveau du pare-feu : on interdit tout, puis on autorise certaines adresses IP).

Passive mode settings :

  • Use the following IP : adresse IP publique (fixe) de la Freebox. Pour la connaître, consultez ce site ou l'équivalent.
  • Use custom port range : cochez la case et saisissez 56000 (ou une plage de ports) dans le champ.

Security settings :

  • J'ai conservé les valeurs par défaut (désactivation des échanges entre serveurs FTP).

Admin Interface settings :

  • Choisissez les ordinateurs qui peuvent administrer le serveur FTP. Le poste local (127.0.0.1) est autorisé par défaut. On peut autoriser d'autres postes du réseau local. Il me semble préférable de ne pas activer l'administration à distance via Internet.

Logging :

  • Enable logging to file : cochez la case pour activer l'enregistrement d'informations dans un fichier journal. C'est toujours utile pour savoir ce qui se passe sur le serveur.

GSS Settings :

  • Pas pertinent pour moi (authentification Kerberos).

Speed Limits :

  • Pas pertinent pour moi. Si le serveur est chargé, peut être utile pour limiter la bande passante consommée.

Filetransfer compression :

SSL/TLS settings :

  • Enable FTP over SSL/TLS (FTPS) : cochez la case.
  • Cliquez sur Generate new certificate en bas de la fenêtre pour créer un certificat numérique. Dans la fenêtre qui apparaît, remplissez les champs (les infos indiquées seront visibles dans le certificat). Dans le champ Common name, si aucun nom de domaine n'est associé au serveur, indiquez son adresse IP publique. Après génération du certificat, le chemin complet du fichier correspondant est indiqué dans les champs Private key file et Certificate file.
  • Le protocole FTP sur SSL existe en deux parfums : implicite (FTPS) et explicite (FTPES). En mode implicite, le client se connecte directement en SSL sur un port réservé aux connexions sécurisées. En mode explicite, le client se connecte en clair sur le port FTP de base (22 par défaut), puis passe en mode sécurisé. J'ai choisi de n'autoriser que les connexions implicites, chiffrées de bout en bout. La case Allow explicit FTP over TLS n'est donc pas cochée. Ensuite, activez l'option Force PROP P to encrypt file transfers in SSL/TLS mode pour chiffrer les échanges de fichier, et pas seulement les ouvertures de connexion. Enfin, dans le champ Listen for implicit SSL/TLS connections, indiquez le port défini précédemment, 500 dans notre exemple.

Autoban :

  • L'option Enable automatic bans permet d'interdire automatiquement l'adresse IP des ordinateurs dont les tentatives de connexion ont échoué plusieurs fois de suite, afin de compliquer les tentatives d'intrusion sur le serveur.

Le paramétrage du serveur FTP est terminé. Pour définir les comptes des utilisateurs, choisissez Edit > Users. Saisissez un nom et un mot de passe. Cochez l'option Force SSL for user login. C'est redondant, puisque de toute façon on n'écoute pas sur les autres ports, mais ça ne peut pas faire de mal. Dans la zone Shared folders, définissez les répertoires auquel l'utilisateur aura accès (attention aux autorisations en lecture/écriture/etc. dans les listes Files et Directories). Sur l'onglet IP Filter, vous pouvez de nouveau limiter les adresses IP autorisées à se connecter au serveur.

Tests

Testez l'accès au serveur FTP avec un client FTP comme FileZilla (téléchargeable sur le même site que le serveur). Dans le client :

  • Comme port de connexion, indiquez le port de contrôle (500 dans notre exemple).
  • Comme type de serveur, choisissez FTPS - FTP plus implicite (TLS/SSL).
  • Dans les paramètres de transfert, activez le mode passif (le mode actif ne fonctionne pas si le client est derrière un pare-feu).

L'idéal est de tester :

  • Sur le poste local (adresse 127.0.0.1), pour vérifier que le serveur répond bien.
  • A partir d'un autre ordinateur du réseau local (adresse 192.168.0.10), pour vérifier que le pare-feu est bien paramétré.
  • A partir d'Internet, pour vérifier que les ports sont bien transférés par la Freebox. Vous pouvez notamment utiliser le site ftptest.net.

En cas de problème de connexion ou d'échange de données, vérifiez les points suivants :

  • Les ports ouverts sont bien définis sur la Freebox.
  • Les ports ouverts sont bien définis dans le pare-feu de Vista.
  • L'adresse IP du client est autorisée dans le pare-feu de Vista.
  • L'adresse IP du client est autorisée dans le paramétrage du serveur.
  • Le client et le serveur utilisent le même paramétrage SSL.
  • Le client a un compte sur le serveur.
  • Le compte du client est autorisé à accéder (lecture et/ou écriture) au répertoire cible.

Documentation