IBM Cloud Docs
Protegendo o tráfego TCP (Range)

Protegendo o tráfego TCP (Range)

O recurso Range traz proteção DDoS, balanceamento de carga e aceleração de conteúdo para qualquer protocolo baseado em TCP. O Range é um proxy TCP global em execução em nós de borda do IBM Cloud® Internet Services (Cloudflare).

O intervalo pode ser usado para:

  • Proteger suas portas TCP e os protocolos contra ataques de DDoS da Camada 3 e da Camada 4.
  • Proteger seu app Range do HTTP(S) com regras de firewall da Camada 7.
  • Reduzir a capacidade dos invasores de espiar e roubar dados sensíveis ao ativar a criptografia TLS.
  • Integrar-se ao firewall de IP do CIS, que permite bloquear ou desafiar endereços IP, ou intervalos de IP inteiros, do alcance de seus serviços TCP.
  • Configurar balanceadores de carga com verificações de funcionamento do TCP, failover e políticas de direção para ditar onde o tráfego flui.

O Range está disponível somente para clientes Enterprise por um custo adicional e é precificado por uso de largura da banda.

Limitações do Range

É possível criar um máximo de 10 aplicativos Range com origens exclusivas. Cada aplicativo Range com uma origem exclusiva deve ter um endereço IP exclusivo alocado e os endereços IP são um recurso limitado. Se você precisar de mais de 10 aplicativos Range, abra um caso de suporte IBM. Casos de suporte para adicionar mais aplicativos Range exigem uma revisão do caso de uso e o processo pode levar alguns dias.

Será possível criar mais de 10 aplicativos se eles reutilizarem uma origem existente, mas usarem portas diferentes.

Para apps Range do TCP, somente as regras de IP se aplicam. Isso porque as regras de IP são aplicadas em OSI Layer 3 e Layer 4. No entanto, os aplicativos de intervalo HTTP(S) funcionam com regras de firewall e regras de IP. Em geral, as regras de firewall são projetadas para propriedades expostas na Camada 7 do OSI (HTTP), como cabeçalhos de solicitação e características de conteúdo do corpo.

Incluindo um aplicativo usando o console

Siga estas etapas para incluir um aplicativo usando a IU.

  1. Navegue para Segurança > Range.
  2. Clique em Criar.
  3. Selecione um tipo de aplicativo no menu de listagem. É possível escolher TCP, UDP, HTTP, HTTPS, RDP, SSH ou Minecraft.
  4. Insira o nome do aplicativo. Seu aplicativo se torna associado a um nome DNS em seu domínio do CIS.
  5. Insira a porta de borda. O CIS atende as conexões recebidas para esses endereços nesta porta. As conexões com esses endereços são roteadas por proxy para a sua origem É possível inserir um intervalo de portas (por exemplo: 8080-8090), mas a origem deve ter a mesma quantidade de portas especificada em uma faixa consecutiva.
  6. Selecione a conectividade de IP de borda.
  7. Na seção Origem, insira o IP de origem e a porta de seu aplicativo TCP. Também é possível selecionar um balanceador de carga existente e sua porta.
  8. Habilite um firewall IP (opcional). Quando ativadas, as regras de acesso IP com uma ação de "bloqueio" ou "lista de permissões" são aplicadas ao aplicativo.
  9. Ativar a finalização TLS de borda (opcional). Quando ativado, selecione o tipo de finalização TLS que você deseja usar no menu de listagem.
  10. Selecione um PROXY Protocol se você tiver um proxy em linha que ofereça suporte ao PROXY Protocol (opcional). Esse recurso é útil se você está executando um serviço que requer conhecimento do verdadeiro IP do cliente. Na maioria dos casos, essa configuração permanece off.
  11. Clique em Criar.

O provisionamento de um aplicativo Range incorre em custos adicionais, com base na quantidade de largura de banda usada por aplicativo.

O seu aplicativo agora é visível em um tile ou uma visualização de tabela com as propriedades a seguir:

  • Nome do aplicativo
  • Tipo de aplicativo
  • Porta de borda
  • Finalização de borda TLS
  • Protocolo proxy
  • Origem
  • Conexões da última hora (pesquisadas a cada minuto)
  • Rendimento da última hora (pesquisado a cada minuto)
  • O menu Actions (Ações) ' Ícone de ações (canto superior direito) tem as seguintes opções:
    • Editar o aplicativo
    • Visualizar métricas para o aplicativo especificado
    • Excluir o aplicativo

Quando um aplicativo Range é criado, ele é designado a um endereço IPv4 e IPv6 exclusivo. Esses endereços IP não são estáticos e podem estar sujeitos a mudanças. É possível determinar o endereço IP designado usando o DNS. O nome de DNS sempre retorna o endereço IP designado ao aplicativo.

Visualizando as métricas

Seu aplicativo agora está pronto para colocar em proxy o tráfego TCP por meio do CIS (Cloudflare).

Navegue para Métricas > Range para visualizar seu número de conexões com aplicativos e o tráfego de rendimento. Os gráficos mostram métricas para até 10 aplicativos.

Para alternar as métricas do aplicativo, use a chave de Gráfico ou clique no botão Selecionar aplicativos. Para mudar o intervalo de data e hora de Métricas, use o menu de listagem.

Aplicativo Viewing Range

Depois de criar aplicativos de intervalo, a página Segurança > Intervalo é preenchida com blocos (ou uma opção para alternar para uma exibição de tabela, se preferir) contendo as seguintes informações:

  • Nome do aplicativo
  • Protocolo proxy
  • Porta de borda
  • Origem e porta
  • Conexões da última hora (pesquisadas a cada minuto)
  • Rendimento da última hora (pesquisado a cada minuto)
  • Terminação de borda TLS (para aplicativos relevantes)

A lista de aplicativos também contém um menu Actions (Ações) ' Ícone de ações que permite que os usuários executem as seguintes tarefas:

  • Editar o aplicativo
  • Visualizar métricas para o aplicativo especificado
    • Isso leva o usuário à página Metrics > Range (Métricas > Intervalo ), que exibe as métricas apenas para esse aplicativo.
  • Excluir o aplicativo

Exemplos de uso da API

Esses são exemplos para criar e listar aplicativos usando o Range.

Criando um app Range

Há duas maneiras de designar uma origem em um aplicativo Range.

  1. IP de origem - use o parâmetro origin_direct
  2. Balanceador de carga - use os parâmetros origin_dns e origin_port

Para a solicitação de IP de origem:

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}'

A resposta é a seguinte:

{
    "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": []
}

Para uma solicitação de balanceador de carga:

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}'

A resposta é a seguinte:

{
    "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": []
}
  • Nome de DNS - Seu aplicativo está associado a um nome de DNS em seu domínio.
  • Protocolo/Porta de borda - Porta na qual seu aplicativo está em execução. As conexões com esses endereços são roteadas por proxy para a sua origem
  • Origem direta - O IP no qual seu aplicativo está em execução e a porta pela qual você deseja que o tráfego flua da borda para a sua origem.
  • Firewall de IP - Se ativado, as regras de firewall com uma ação Bloquear serão cumpridas para esse aplicativo Range.
  • PROXY Protocol - Ative se você tiver um proxy sequencial que suporta o PROXY Protocol v1. Na maioria dos casos, essa configuração permanece desativada.
  • DNS de origem - O nome do balanceador de carga que você deseja configurar como sua origem.
  • Porta de origem: - A porta de seu serviço.

Listando todos os apps Range

Utilize a seguinte solicitação para listar todos os apps do Range:

curl -X GET \
  https://api.cis.cloud.ibm.com/v1/<url-encoded-crn>/zones/<zone-d>/range/apps

A resposta é a seguinte:

{
    "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": []
}

Listando um app de Range específico

Use a seguinte solicitação para listar um app de Intervalo específico:

curl -X GET \
  https://api.cis.cloud.ibm.com/v1/<url-encoded-crn>/zones/<zone-d>/range/apps/4f70c3d4f20546b79135b898295e8093

A resposta é a seguinte:

  • App usando o IP de origem

    {
        "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": []
    }
    
  • App usando um balanceador de carga

    {
        "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": []
    }