Le groupe de sécurité est le pare-feu qui va protéger les instances en gérant les autorisations d’accès au réseau.
Le groupe de sécurité - security group - par défaut autorise toutes les communications sortantes mais aucune communication entrante.
Les règles de groupe ne sont pas figées et peuvent donc être modifiées à tout moment : soit en supprimant, soit en ajoutant de nouvelles règles.
Les groupes de securités peuvent être utilisés séparément ou de manière cumulée.
Vous pouvez lister les groupes existants dans le projet avec openstack security group list
.
openstack security group list
+--------------------------------------+-----------------+------------------------+----------------------------------+------+
| ID | Name | Description | Project | Tags |
+--------------------------------------+-----------------+------------------------+----------------------------------+------+
| 2d9d1210-78f9-47e4-87a5-68851cc9f5ec | nbgrader | | 88ddbfbb9b7f4fe981ce214be524d401 | [] |
| ea78016d-725c-4e7a-9a80-8f9ab3dd0db2 | default | Default security group | 88ddbfbb9b7f4fe981ce214be524d401 | [] |
| ee67a987-6e4e-4228-baac-0c5541e62631 | jupyterhub-test | | 88ddbfbb9b7f4fe981ce214be524d401 | [] |
+--------------------------------------+-----------------+------------------------+----------------------------------+------+
Il est également possible de voir en détail les règles définies dans un groupe de sécurité avec la commande openstack security group rule list <groupname>
.
openstack security group rule list my-security-group
+--------------------------------------+-------------+-----------+------------+-----------------------+
| ID | IP Protocol | IP Range | Port Range | Remote Security Group |
+--------------------------------------+-------------+-----------+------------+-----------------------+
| 01e07f78-264d-478c-b100-fed022cc72ed | None | None | | None |
| 22d0ff13-360b-4fbb-8a3a-82d3235cfe34 | tcp | 0.0.0.0/0 | 22:22 | None |
| 45d6f8d3-ebca-485b-973f-62586c6859fc | None | None | | None |
| ac5211e7-62c3-4e6c-af02-d09a60878f99 | tcp | 0.0.0.0/0 | 80:80 | None |
| fd0fc114-421a-4686-8ae2-2ca44fcdfdfd | tcp | 0.0.0.0/0 | 443:443 | None |
+--------------------------------------+-------------+-----------+------------+-----------------------+
Vous pouvez créer un nouveau groupe de sécurité avec openstack security group create <groupname>
.
Par exemple : on crée un nouveau groupe appelé my-security-group.
openstack security group create my-security-group
À sa création, le nouveau groupe n’a pas de règles de filtrage particulières, il faut donc les ajouter en fonction des besoins d’accès à l’instance.
Pour lister les règles d’un groupe de sécurité, utilisez la commande openstack security group rule list <groupname>
.
Les nouveaux filtres sont ajoutés avec openstack security group rule create
.
Par exemple, on souhaite ajouter un filtre pour pouvoir se connecter en ssh à la machine.
Dans un premier cas, on autorise seulement une plage d’adresses ip donnée
openstack security group rule create my-security-group \
--remote-ip 152.77.223.66/32 \
--ingress \
--dst-port 22 \
--protocol tcp
Dans le deuxième cas, on autorise l’accès à partir d’adresses ip provenant d’un autre groupe de sécurité appelé other-security-group.
openstack security group rule create my-security-group \
--protocol tcp \
--dst-port 22 \
--remote-group other-security-group
Grace aux règles de filtrage, on choisit quels protocoles sont autorisés et quels ports sont ouverts et disponibles : on limite ainsi la visibilité des instances au reste du monde.
Dans cette partie on donne quelques exemples de protocoles et de ports à ouvrir pour autoriser différentes connexions. Les filtres sont appliqués à toutes les adresses ip du sous-réseau: 0.0.0.0/0.
Afin de pouvoir se connecter en ssh à une instance, il faut que le groupe de securité autorise le protole TCP avec le port 22 ouvert.
openstack security group rule create my-security-group \
--protocol tcp \
--dst-port 22 \
--remote-ip 0.0.0.0/0
La communication en HTTP n’est possible qu’en autorisant le protocole TCP et en ouvrant le port 80.
openstack security group rule create my-security-group \
--protocol tcp \
--dst-port 80 \
--remote-ip 0.0.0.0/0
La version securisée de HTTP communique elle aussi via le protocole TCP et en utilisant le port 443.
openstack security group rule create my-security-group \
--protocol tcp \
--dst-port 443 \
--remote-ip 0.0.0.0/0
Il est également possible d’ouvrir une plage de ports.
Par exemple, pour NetBIOS, on ouvre les ports 137 à 139.
openstack security group rule create my-security-group \
--protocol tcp \
--dst-port 137:139 \
--remote-ip 0.0.0.0/0
Pour d’autre type de connexion TCP : voir la liste complète des ports TCP.
Pour autoriser un ping des instances, il faut permettre l’accès au trafic ICMP :
openstack security group rule create my-security-group \
--protocol icmp \
openstack security group rule delete RULE_ID