Protection du trafic TCP (Range)
La fonctionnalité Range apporte la protection DDoS, l'équilibrage de charge et l'accélération de contenu à tout protocole basé sur TCP. La fonctionnalité Range est un proxy TCP global exécuté sur les noeuds périphériques d'IBM Cloud® Internet Services (Cloudflare).
La fonctionnalité Range peut être utilisée pour :
- Protéger vos ports et protocoles TCP contre les attaques DDoS des couches 3 et 4.
- Protéger votre application HTTP(S) avec des règles de pare-feu de couche 7.
- Réduire la capacité des attaquants à espionner et à dérober des données sensibles en activant le chiffrement TLS.
- Intégrer le pare-feu IP de CIS, ce qui vous permet d'empêcher ou de défier les adresses IP, ou des plages d'IP entières, d'atteindre vos services TCP.
- Configurer des équilibreurs de charge avec des contrôles de santé TCP, le basculement et des règles de pilotage pour déterminer le flux du trafic.
La fonctionnalité Range n'est disponible que pour les clients Enterprise moyennant un coût supplémentaire et son prix dépend de l'utilisation de la bande passante.
Limitations de Range
Vous pouvez créer un maximum de 10 applications Range avec des origines uniques. Une adresse IP unique doit être allouée à chaque application Range avec une origine unique et les adresses IP sont une ressource limitée. Si vous avez besoin de plus de 10 applications de gamme, ouvrez un dossier de support IBM. Les cas de support permettant d'ajouter d'autres applications de gamme nécessitent une révision du cas d'utilisation, et le processus peut prendre quelques jours.
Vous pouvez créer plus de 10 applications si elles réutilisent une origine existante, mais utilisent des ports différents.
Pour les applications Range TCP, seules les règles IP s'appliquent. En effet, les règles IP sont appliquées à la couche 3 et à la couche 4 de l'interconnexion de systèmes ouverts (OSI). Toutefois, les applications de gamme HTTP (S) fonctionnent avec les règles de pare-feu et les règles de propriété intellectuelle. En général, les règles de pare-feu sont conçues pour les propriétés exposées dans OSI couche 7 (HTTP), telles que les caractéristiques du contenu des corps et en-têtes de demande.
Ajout d'une application à l'aide de la console
Procédez comme suit pour ajouter une application à l'aide de l'interface utilisateur.
- Accédez à Sécurité > Range.
- Cliquez sur Créer.
- Sélectionnez un type d'application dans le menu de liste. Vous pouvez choisir TCP, UDP, HTTP, HTTPS, RDP, SSH ou Minecraft.
- Entrez le nom de l'application. Votre application est associée à un nom DNS sur votre domaine CIS.
- Entrez le port edge. CIS écoute les connexions entrantes à ces adresses sur ce port. Les connexions à ces adresses sont transmises par proxy à votre origine. Vous pouvez entrer une plage de ports (par exemple:
8080-8090
), mais l'origine doit avoir la même quantité de ports spécifiés dans une plage consécutive. - Sélectionnez la connectivité de l'arête IP.
- Dans la section Origine, entrez l'adresse IP d'origine et le port de votre application TCP. Vous pouvez également sélectionner un équilibreur de charge existant et son port.
- Activer un pare-feu IP (facultatif). Lorsque cette option est activée, les règles d'accès IP avec une action "block" ou "allowlist" sont appliquées pour l'application.
- Activer l'arrêt edge TLS (facultatif). Lorsque cette option est activée, sélectionnez le type d'arrêt TLS que vous souhaitez utiliser dans le menu de liste.
- Sélectionnez un protocole PROXY si vous avez un proxy en ligne qui prend en charge le protocole PROXY (facultatif). Cette fonctionnalité est utile si vous exécutez un service nécessitant
une connaissance de la véritable adresse IP du client. Dans la plupart des cas, ce paramètre reste
off
. - Cliquez sur Créer.
La mise à disposition d'une application Range entraîne des coûts supplémentaires, en fonction de la quantité de bande passante utilisée par application.
Votre application est maintenant visible dans une vue de mosaïque ou de table avec les propriétés suivantes:
- Nom de l'application
- Type d'application
- Port de périphérie
- Terminaison de périphérie TLS
- Protocole de proxy
- Origine
- Connexions de l'heure écoulée (interrogées toutes les minutes)
- Débit de l'heure écoulée (interrogé toutes les minutes)
- Le menu Actions
(coin supérieur droit) propose les options suivantes :
- Modifier l'application
- Afficher les métriques pour l'application spécifiée
- Supprimer l'application
Lorsqu'une application Range est créée, une adresse IPv4 et IPv6 unique lui est attribuée. Ces adresses IP ne sont pas statiques et peuvent être modifiées. Vous pouvez déterminer l'adresse IP attribuée à l'aide de DNS. Le nom DNS renvoie toujours l'adresse IP attribuée à l'application.
Affichage des mesures
Votre application est maintenant prête à utiliser le trafic TCP par proxy via CIS (Cloudflare).
Accédez à Métriques > Range pour afficher le nombre de connexions aux applications et le trafic à haut débit. Les graphiques montrent les métriques pour un maximum de 10 applications.
Pour activer ou désactiver les métriques d'application, utilisez la touche Graphique ou cliquez sur le bouton Sélectionner des applications. Pour modifier le délai des données de métrique, utilisez le menu de liste.
Application de la plage de visualisation
Après avoir créé des applications de portée, la page Sécurité > Portée est remplie de tuiles (ou d'une option permettant de passer à une vue en tableau si l'on préfère) contenant les informations suivantes :
- Nom de l'application
- Protocole de proxy
- Port de périphérie
- Origine et port
- Connexions de l'heure écoulée (interrogées toutes les minutes)
- Débit de l'heure écoulée (interrogé toutes les minutes)
- Terminaison TLS (pour les applications concernées)
La liste des applications contient également un menu Actions qui permet aux utilisateurs d'effectuer les tâches suivantes :
- Modifier l'application
- Afficher les métriques pour l'application spécifiée
- L'utilisateur accède alors à la page Métriques > Plage, qui affiche les métriques pour cette application uniquement.
- Supprimer l'application
Exemples d'utilisation de l'API
Il s'agit d'exemples pour créer et répertorier des applications en utilisant Range.
Création d'une application Range
Il y a deux façons de désigner une origine dans une application Gamme.
- Adresse IP d'origine - Utiliser le paramètre
origin_direct
- Equilibreur de charge - Utiliser les paramètres
origin_dns
etorigin_port
Pour la demande d'origine IP :
curl -X POST \
https://api.cis.cloud.ibm.com/v1/<url-encoded-crn>/zones/<zone-d>/range/apps \
-H 'X-Auth-User-Token: <token>' \
-d '{"protocol":"tcp/22","dns":{"type":"CNAME","name":"ssh.example.com"},"origin_direct":["tcp://172.0.2.1:22"],"proxy_protocol":true,"ip_firewall":true}'
La réponse est la suivante :
{
"result": {
"id": "4f70c3d4f20576b79135b898295e8093",
"protocol": "tcp/22",
"dns": {
"type": "CNAME",
"name": "ssh.example.com"
},
"origin_direct": [
"tcp://172.0.2.1:22"
],
"ip_firewall": true,
"proxy_protocol": true,
"created_on": "2019-01-09T17:33:09.190606Z",
"modified_on": "2019-01-09T17:33:09.190606Z"
},
"success": true,
"errors": [],
"messages": []
}
Pour une demande d'équilibrage de charge :
curl -X POST \
https://api.cis.cloud.ibm.com/v1/<url-encoded-crn>/zones/<zone-d>/range/apps \
-H 'X-Auth-User-Token: <token>' \
-d '{"protocol":"tcp/22","dns":{"type":"CNAME","name":"ssh.example.com"},"origin_dns": {"name": "test"},"proxy_protocol":true,"ip_firewall":true, "origin_port": 43}'
La réponse est la suivante :
{
"result": {
"id": "4f70c3d4f20576b79135b898295e8093",
"protocol": "tcp/22",
"dns": {
"type": "CNAME",
"name": "ssh.example.com"
},
"origin_dns": {
"name": "test"
},
"origin_port": 43,
"ip_firewall": true,
"proxy_protocol": true,
"created_on": "2019-01-09T17:39:09.190606Z",
"modified_on": "2019-01-09T17:39:09.190606Z"
},
"success": true,
"errors": [],
"messages": []
}
- Nom DNS : votre application est associée à un nom DNS sur votre domaine.
- Protocole/port de périphérie : port sur lequel votre application est en cours d'exécution. Les connexions à ces adresses sont transmises par proxy à votre origine.
- Origine directe : adresse IP sur laquelle votre application est exécutée et port sur lequel vous souhaitez que le trafic circule de la périphérie vers votre origine.
- Pare-feu IP : si cette option est activée, les règles de pare-feu avec une action de blocage sont appliquées pour cette application Range.
- Protocole PROXY : activez le protocole PROXY si un proxy en ligne prend en charge PROXY Protocol v1. Dans la plupart des cas, ce paramètre reste désactivé.
- DNS d'origine : nom de l'équilibreur de charge que vous souhaitez définir comme origine.
- Port d'origine : port de votre service.
Liste de toutes les applications Range
Utilisez la demande suivante pour répertorier toutes les applications de gamme :
curl -X GET \
https://api.cis.cloud.ibm.com/v1/<url-encoded-crn>/zones/<zone-d>/range/apps
La réponse est la suivante :
{
"result": [
{
"id": "4f70c3d4f20546b79135b898295e8093",
"protocol": "tcp/22",
"dns": {
"type": "CNAME",
"name": "ssh.example.com"
},
"origin_direct": [
"tcp://172.0.2.1:22"
],
"ip_firewall": true,
"proxy_protocol": true,
"created_on": "2019-01-09T17:33:09.190606Z",
"modified_on": "2019-01-09T17:33:09.190606Z"
}
],
"success": true,
"errors": [],
"messages": []
}
Affichage d'une application de gamme spécifique
Utilisez la demande suivante pour répertorier une application de gamme spécifique :
curl -X GET \
https://api.cis.cloud.ibm.com/v1/<url-encoded-crn>/zones/<zone-d>/range/apps/4f70c3d4f20546b79135b898295e8093
La réponse est la suivante :
-
Application utilisant l'adresse IP d'origine
{ "result": { "id": "4f70c3d4f20546b79135b898295e8093", "protocol": "tcp/22", "dns": { "type": "CNAME", "name": "ssh.example.com" }, "origin_direct": [ "tcp://172.0.2.1:22" ], "ip_firewall": true, "proxy_protocol": true, "created_on": "2019-01-09T17:33:09.190606Z", "modified_on": "2019-01-09T17:33:09.190606Z" }, "success": true, "errors": [], "messages": [] }
-
Application utilisant un équilibreur de charge
{ "result": { "id": "555359036e7f4acc82d69b916f62caba", "protocol": "tcp/22", "dns": { "type": "CNAME", "name": "ssh.example.com" }, "origin_dns": { "name": "test_update" }, "origin_port": 76, "ip_firewall": true, "proxy_protocol": true, "created_on": "2019-01-10T22:26:47.167008Z", "modified_on": "2019-01-10T22:26:47.167008Z" }, "success": true, "errors": [], "messages": [] }