Un serveur sur Internet reçoit des milliers de tentatives d'entrée par jour. Ce ne sont pas des pirates qui vous visent : ce sont des programmes automatiques qui parcourent toutes les adresses d'Internet en essayant les portes. S'ils en trouvent une ouverte, ils essaient des mots de passe ; s'ils trouvent un programme ancien, ils essaient des failles connues. Chaque port ouvert dont vous n'avez pas besoin est une porte de plus pour ces programmes, et la fermer ne coûte rien.
La plupart des machines que voit Simplio ont le port 22 (celui de l'administration) ouvert au monde entier depuis le jour de leur création, parce que c'est le réglage par défaut. C'est comme laisser la porte du local technique ouverte sur la rue. Ce guide vous apprend à regarder quelles portes votre machine a d'ouvertes, à fermer celles qui sont en trop et à n'ouvrir celle de l'administration que depuis votre bureau et seulement pendant que vous l'utilisez.
Avant de commencer : ce que signifie chaque chose
- Port
- L'une des « portes » numérotées (de 1 à 65535) par lesquelles un serveur répond aux requêtes. Chaque service écoute sur l'une d'elles : le web sur la 80 et la 443, l'administration sur la 22. Un port ouvert dans le pare-feu est une porte à laquelle n'importe qui peut frapper.
- Pare-feu
- Le filtre qui décide quels ports sont ouverts et depuis quelles adresses. Dans Lightsail, il s'appelle pare-feu ; dans EC2, groupe de sécurité. Ce qui n'est pas dans la liste est fermé.
- Groupe de sécurité
- Le pare-feu d'EC2. Une liste de règles qui peut s'appliquer à plusieurs machines à la fois. Chaque machine en a au moins un.
- Adresse IP
- Le numéro qui identifie votre connexion sur Internet, par exemple 83.45.120.7. Votre bureau en a une (ou plusieurs) ; depuis chez vous, vous en aurez une autre. C'est ce que le pare-feu utilise pour dire « celui-ci oui, les autres non ».
- 0.0.0.0/0
- C'est ainsi qu'AWS écrit « tout Internet ». Une règle avec la source 0.0.0.0/0 est ouverte au monde entier. Pour IPv6, c'est ::/0.
- SSH (port 22)
- La façon d'administrer une machine Linux depuis un terminal. Avec un mot de passe ou avec une clé. C'est ce que les robots attaquent sans relâche.
- RDP (port 3389)
- Le bureau à distance de Windows. L'équivalent du 22 sur les machines Windows, tout aussi attaqué.
- Session Manager
- Une façon d'ouvrir un terminal sur une machine EC2 depuis la console AWS sans aucun port ouvert. La machine sort vers AWS au lieu d'attendre que vous entriez.
Pas à pas
Décidez de quels ports votre machine a vraiment besoin
Pour un site web, la liste est courte : 80 (HTTP, pour rediriger vers HTTPS) et 443 (HTTPS). Rien de plus. Tout le reste sert à administrer, et c'est vous qui administrez, pas le monde entier.
Ports qui ne devraient jamais être ouverts à tout Internet :
- 22 (SSH) et 3389 (bureau à distance de Windows) : administration. Seulement à votre IP, et de préférence seulement quand vous l'utilisez.
- 3306 (MySQL/MariaDB) et 5432 (PostgreSQL) : la base de données. Si le site est sur la même machine, le port n'a pas du tout besoin d'être ouvert vers l'extérieur. Si une autre machine s'y connecte, ouvrez-le seulement à l'IP de cette machine.
- 21 (FTP) : il envoie des fichiers sans chiffrement. Si vous devez envoyer des fichiers, utilisez SFTP, qui passe par le 22.
- 10000 (Webmin), 8080 et 8443 (panneaux et environnements de test), 9090, 5000 : des panneaux d'administration qui ont souvent des mots de passe faibles ou des versions anciennes.
- 25 (courrier sortant) : AWS le limite par défaut et presque aucun site n'a besoin qu'il soit ouvert vers l'intérieur.
Si votre pare-feu contient un port dont vous ne savez pas à quoi il sert, la bonne réponse est de le fermer et de voir si quelque chose cesse de fonctionner. En général, rien.
Vérifiez le pare-feu d'une machine Lightsail
Entrez dans Lightsail, cliquez sur le nom de la machine et ouvrez l'onglet Mise en réseau. Dans Pare-feu IPv4 se trouve la liste des règles, chacune avec l'application, le protocole, le port et la colonne Restreint à. Si cette colonne indique « Toute adresse IPv4 », ce port est ouvert au monde entier.
Ce qui devrait rester :
- HTTP, TCP, 80, toute adresse.
- HTTPS, TCP, 443, toute adresse.
- SSH, TCP, 22, restreint à votre IP (étape 4), ou carrément sans règle quand vous ne l'utilisez pas.
Pour supprimer une règle, cliquez sur l'icône de corbeille à droite. Pour la modifier, le crayon. Les changements s'appliquent immédiatement, sans redémarrage. Si vous avez activé IPv6, recommencez dans le bloc Pare-feu IPv6 : c'est une liste à part et on l'oublie souvent.
Faites-le sur chaque machine : le pare-feu de Lightsail est par instance et ne se partage pas.
Vérifiez les groupes de sécurité d'une machine EC2
Entrez dans EC2, Instances, cliquez sur la machine et ouvrez l'onglet Sécurité. Vous verrez les groupes de sécurité qui lui sont attribués (il peut y en avoir plusieurs ; leurs règles s'additionnent) et, en dessous, les Règles entrantes combinées. Regardez la colonne Source :
0.0.0.0/0ou::/0signifie ouvert au monde entier.Pour modifier quelque chose, cliquez sur le nom du groupe, onglet Règles entrantes, bouton Modifier les règles entrantes. Supprimez celles qui sont en trop avec Supprimer et cliquez sur Enregistrer les règles. Laissez les règles sortantes telles quelles : par défaut elles autorisent tout vers l'extérieur et c'est normal.
Deux choses qui arrivent souvent dans EC2 :
- Un groupe appelé
launch-wizard-3ou similaire, créé à la volée au lancement de la machine, avec le 22 ouvert à tous. C'est celui qu'il faut corriger. - Un même groupe attribué au site web et à la base de données. La base de données a alors le 80 ouvert et le site le 3306. Faites un groupe par fonction :
webavec 80 et 443,bbddavec 3306 seulement depuis le groupeweb(dans Source, vous pouvez écrire l'identifiant d'un autre groupe au lieu d'une IP).
Regardez aussi Groupes de sécurité dans le menu de gauche : il y a souvent d'anciens groupes sans aucune machine attribuée. Supprimez-les pour ne pas vous y perdre.
- Un groupe appelé
Ouvrez le 22 seulement à votre IP, et seulement pendant que vous l'utilisez
Trouvez votre IP publique en cherchant « quelle est mon IP » dans le navigateur depuis le réseau sur lequel vous allez travailler. Dans Lightsail, onglet Mise en réseau, sur la règle SSH cliquez sur le crayon, cochez Restreindre à l'adresse IP et écrivez la vôtre. Dans EC2, en modifiant la règle du 22, dans Source choisissez Mon IP et AWS la remplit toute seule.
Si vous travaillez depuis plusieurs endroits (bureau et domicile), ajoutez une règle par endroit, pas une règle ouverte à tous. Et si votre connexion change souvent d'IP (c'est courant avec la fibre domestique et toujours avec les données mobiles), attendez-vous à devoir la mettre à jour de temps en temps : c'est l'affaire d'une minute.
La vraie bonne habitude : supprimez la règle du 22 quand vous avez terminé. Vous entrez dans la machine quelques fois par mois ; le reste du temps, cette porte peut ne pas exister. Quand vous en avez besoin, vous l'ajoutez avec votre IP, vous travaillez et vous la retirez. Sans port 22, pas d'attaques par mot de passe en SSH, pas de programmes supplémentaires à surveiller.
Vérifiez depuis l'extérieur qu'il ne reste rien d'ouvert
Faites confiance, mais vérifiez. Depuis un terminal de votre ordinateur (sous Windows, PowerShell), exécutez contre l'IP de votre machine :
Test-NetConnection 83.45.120.7 -Port 3306Sur Mac ou Linux,
nc -zv 83.45.120.7 3306. Si la réponse indique que la connexion a réussi, le port est ouvert vers l'extérieur et il faut revoir l'étape précédente. Faites le test avec 22, 3306, 3389, 10000 et 8080. Il existe aussi des pages qui le vérifient pour vous (cherchez « vérifier ports ouverts ») ; essayez de le faire depuis un réseau différent de celui qui a le 22 autorisé, par exemple avec le téléphone.Même si un port est ouvert dans le pare-feu, le programme derrière peut ne pas répondre (MySQL n'écoute en général qu'en local). Ne comptez pas dessus : fermez-le dans le pare-feu quand même.
Alternatives pour ne jamais avoir le 22 ouvert
Si vous entrez souvent dans la machine, il existe des façons de le faire sans aucun port ouvert :
- Terminal dans le navigateur de Lightsail : bouton Se connecter à l'aide de SSH sur la page de la machine. Lightsail se connecte de son côté même si vous avez supprimé la règle du 22 du pare-feu ; il le fait par une voie interne d'AWS. Pour des tâches ponctuelles, c'est suffisant.
- Session Manager dans EC2 : sur la machine, bouton Se connecter, onglet Session Manager. Il faut que la machine ait l'agent SSM (il est inclus dans les images Amazon Linux et Ubuntu d'AWS) et un rôle avec la stratégie AmazonSSMManagedInstanceCore. En échange, zéro port ouvert, et chaque session est enregistrée dans CloudTrail avec qui est entré.
- EC2 Instance Connect : l'onglet Client EC2 Instance Connect dans le même bouton Se connecter. Il a toujours besoin du 22 ouvert, mais seulement à la plage d'IP qu'AWS publie pour votre région, pas à tout Internet.
Avec n'importe laquelle d'entre elles, le 22 ouvert au monde entier n'a plus d'excuse.
Ce qui peut mal tourner
J'ai fermé le 22 et maintenant je ne peux plus entrer
C'est attendu : vous l'avez fermé. Rajoutez la règle avec votre IP actuelle (elle a pu changer depuis la dernière fois) et entrez. Dans Lightsail, le bouton Se connecter à l'aide de SSH fonctionne même sans règle. Dans EC2, si vous n'avez même pas Session Manager, ajoutez la règle du 22 avec Mon IP dans le groupe de sécurité ; le changement est immédiat.
Le site ne se charge plus après la fermeture des ports
Vérifiez que 80 et 443 sont toujours dans la liste avec la source « toute adresse ». Si seul HTTPS échoue, il manque le 443. Si ça échoue depuis le téléphone mais pas depuis le bureau, vous avez probablement laissé 80 ou 443 restreints à votre IP par erreur. Et si le site utilise un autre port (par exemple un panneau sur le 8443 dont vous avez vraiment besoin en public), ouvrez-le, mais mettez alors un mot de passe fort et maintenez-le à jour : c'est désormais une porte de plus.
Une application d'une autre machine ne se connecte plus à la base de données
Vous avez fermé le 3306 (ou le 5432) et cette application passait par là. Ne le rouvrez pas à tous : ouvrez-le seulement à la bonne source. Dans EC2, écrivez dans Source l'identifiant du groupe de sécurité de la machine qui se connecte. Dans Lightsail, l'IP de cette machine. Si les deux sont dans Lightsail dans la même région, utilisez leurs IP privées (172.26.x.x), qui ne sortent pas sur Internet.
Mon IP change tous les quelques jours et j'en ai assez de la mettre à jour
Trois solutions. Un, demandez à votre fournisseur une IP fixe pour le bureau (cela coûte en général peu). Deux, cessez d'utiliser le 22 et passez au terminal du navigateur ou à Session Manager, qui ne dépendent pas de votre IP. Trois, prenez l'habitude de la routine « ouvrir avec mon IP, travailler, fermer » : comme vous créez la règle à chaque fois, elle n'est jamais périmée.
Dans Simplio
Dans Simplio, le pare-feu de chaque machine (Lightsail ou EC2) se voit dans une liste où les ports ouverts à tout Internet apparaissent signalés. Fermer un port est un clic, et pour le 22 il y a un bouton ajouter mon IP qui crée la règle avec l'adresse depuis laquelle vous êtes connecté, sans aller la chercher. Quand vous avez fini, un autre clic la retire. Qui peut toucher au pare-feu de quelle machine se décide utilisateur par utilisateur.
Et pour ne presque jamais avoir à ouvrir le 22, Simplio a un terminal dans le navigateur : vous ouvrez la machine, vous tapez, vous fermez. Chaque accès au pare-feu et au terminal reste dans le journal d'activité avec qui, quand et depuis où, et si vous le souhaitez, vous recevez un avis par e-mail quand quelqu'un ouvre un port à tout Internet.
La même chose, dans AWS et dans Simplio
| Dans la console AWS | Dans Simplio | |
|---|---|---|
| Voir quels ports chaque machine a d'ouverts | Entrer machine par machine dans Lightsail et dans chaque groupe de sécurité d'EC2 | Liste de toutes les machines avec les ports ouverts au monde signalés |
| Ouvrir le 22 à votre IP | Chercher votre IP, modifier la règle, l'écrire à la main | Bouton « ajouter mon IP » |
| Fermer un port | Modifier les règles, supprimer, enregistrer | Un clic |
| Entrer dans la machine sans ouvrir de ports | Se connecter à l'aide de SSH (Lightsail) ou Session Manager avec rôle et agent (EC2) | Terminal dans le navigateur, avec l'accès enregistré |