Introduction
Este documento descreve um cenário específico em que o assinante usa aplicativos de taxa livre como Whatsapp, Snapchat etc. com fluxos SSL (Secure Sockets Layer) enquanto bloqueia o tráfego de outros usuários. Este aplicativo específico é executado nos Cisco Aggregated Service Routers (ASR) 5x00 Series. O SSL é um protocolo de rede de computador que gerencia a autenticação do servidor, a autenticação do cliente e a comunicação criptografada entre servidores e clientes.
Problema
Para detectar qualquer aplicativo, você precisa de alguns pacotes iniciais para a análise. Estes dois requisitos contraditórios são cumpridos ao máximo.
a) A detecção deve ocorrer no próprio primeiro pacote
b) A precisão da detecção deve ser de 100%
Se você tentar cumprir os requisitos (a) e marcar todos os aplicativos no primeiro pacote (o que não é praticamente possível), o requisito (b) sobre a precisão da detecção sofre.Para tornar a precisão da detecção boa, você precisa de mais pacotes para analisar vários aplicativos (há aplicativos e fluxos onde o aplicativo é detectado no primeiro pacote propriamente dito). No caso do mesmo aplicativo, pode acontecer que você seja capaz de marcar alguns fluxos no próprio pacote enquanto outros fluxos do mesmo aplicativo precisam de mais pacotes para análise.
Assim, se algum aplicativo for gratuito enquanto bloqueia qualquer outro tráfego, pode acontecer que o pacote inicial do aplicativo não seja detectado, pois ele não transporta informações suficientes. Em particular, no caso de aplicativos baseados em fluxos SSL, o protocolo é marcado usando o campo server-name-reference presente no pacote client-hello ou o nome comum presente no certificado SSL. Como o nome do servidor é opcional, ele nem sempre está presente. Como mostrado nesta imagem, em um fluxo SSL do Whatsapp, após o handshake triplo (TWH), o pacote hello do cliente é enviado pelo aplicativo. Um rastreamento PCAP mostrando nenhum campo SNI (Server Name Indication, indicação de nome do servidor). Também são vistas várias retransmissões de pacotes hello do cliente que eventualmente são descartados.
Além disso, como mostrado nesta imagem, eles são os hex-bytes do pacote client-hello no qual o campo SNI, usado para marcar o Whatsapp, não está presente. Portanto, o pacote client-hello não pode ser marcado como Whatsapp e não é detectado. À medida que esse pacote cai em um grupo de classificação diferente, ele é descartado e, portanto, várias retransmissões do pacote client-hello são vistas (consulte quadro n.o 5449, 5453, 5469). Finalmente, a conexão é encerrada. Vários desses fluxos são vistos na tabela de preços. Essa é a razão pela qual nenhuma atividade útil, por exemplo o carregamento de imagem para o Whatsapp, pode ser feita.
Troubleshoot
1. capture monitor subscriber imsi XXXX with following options
19 - User L3
X - PDU Hexdump
Verbosity level 5
Esses comandos fornecem as estatísticas do analisador para os aplicativos.
# show act analyzer statistics name p2p application snapchat
# show act analyzer statistics name p2p application whatsapp
Para verificar a versão do plug-in:
#show plugin p2p
Wednesday July 29 22:12:07 SAST 2015
plugin p2p
patch-directory /var/opt/lib
base-directory /lib
base-version 1.50.52055
module priority 1 version 1.139.505
Solução
Para evitar, você precisa garantir que os pacotes antes de um aplicativo (diga o que sapp) sejam marcados e passem por ele.
Use esta regra def:
ruledef ssl_clienthello
tcp either-port = 443
tcp payload-length >= 44
tcp payload starts-with hex-signature 16-03
#exit
Nenhum pacote correspondente à régua acima deve ser descartado. A prioridade desta régua deve estar logo acima da régua padrão (ip-any ruledef) que estava correspondendo a este pacote e fazendo com que ele fosse descartado.
Usando essa configuração, somente os pacotes que correspondem às três linhas de regra acima são gratuitos. Eles incluem apenas os pacotes iniciais de handshake no fluxo SSL (como client-hello, server-hello) que são permitidos usando essa régua def, enquanto todos os outros pacotes no fluxo SSL não correspondem a essa régua def. Assim, se houver um fluxo SSL que pertença a algum outro aplicativo (que não o que você deseja liberar), não poderá haver nenhuma transação útil, pois somente os dois ou três pacotes iniciais de um fluxo SSL podem usar esse tipo de regra.
Configuração de exemplo
A régua sugerida precisa ter uma prioridade mais alta que all-ip_004_012_00016 ruledef (ip any-match = TRUE) e
ação de cobrança que permite o tráfego similar ao que sapp ruledef.(sid_040_rg_400_rate_9999/sid_040_rg_400_rate_00032/ sid_040_rg_400_rate_00 0064 com o grupo de classificação 400 e qualquer taxa).
Com essa configuração, o pacote hello do cliente atinge a régua proposta e é permitido em vez de ser redirecionado. Estas são as duas bases de regras em que as regras do What sapp são vistas:
rulebase mbc-internet-rs
action priority 1087 dynamic-only ruledef WhatsApp_P2P_040_400_99999_All_internet charging-action sid_040_rg_400_rate_99999
action priority 1088 dynamic-only ruledef WhatsApp_P2P_040_400_00064_All_internet charging-action sid_040_rg_400_rate_00064
action priority 1089 dynamic-only ruledef WhatsApp_P2P_040_400_00032_All_internet charging-action sid_040_rg_400_rate_00032
action priority [1090-9909] dynamic-only ruledef ssl_clienthello charging-action sid_040_rg_400_rate99999/00064/00032 --> Higher priority than all-ip ruledef and charging action with rating group 400
action priority 9910 dynamic-only ruledef all-ip_004_012_00016_MI_internet charging-action sid_004_rg_012_rate_00016
action priority 9920 dynamic-only ruledef all-ip_004_012_00032_MI_internet charging-action sid_004_rg_012_rate_00032
action priority 9930 dynamic-only ruledef all-ip_004_012_00064_MI_internet charging-action sid_004_rg_012_rate_00064
rulebase mbc-iphone-rs
action priority 1206 dynamic-only ruledef WhatsApp_P2P_040_400_99999_All_iphone charging-action sid_040_rg_400_rate_99999
action priority 1207 dynamic-only ruledef WhatsApp_P2P_040_400_00064_All_iphone charging-action sid_040_rg_400_rate_00064
action priority 1208 dynamic-only ruledef WhatsApp_P2P_040_400_00032_All_iphone charging-action sid_040_rg_400_rate_00032
action priority [1209-8999] dynamic-only ruledef ssl_clienthello charging-action sid_040_rg_400_rate99999/00064/00032 --> Higher priority than all-ip ruledef and charging action with rating group 400
action priority 9000 dynamic-only ruledef all-ip_015_150_00016_ALL_iphone charging-action sid_015_rg_150_rate_00016
action priority 9010 dynamic-only ruledef all-ip_015_150_00032_ALL_iphone charging-action sid_015_rg_150_rate_00032
action priority 9020 dynamic-only ruledef all-ip_015_150_00064_ALL_iphone charging-action sid_015_rg_150_rate_00064
action priority 9030 dynamic-only ruledef all-ip_015_150_99999_ALL_iphone charging-action sid_015_rg_150_rate_99999
charging-action sid_040_rg_400_rate_99999
content-id 400
service-identifier 40
billing-action egcdr
cca charging credit
exit
ruledef ssl_clienthello
tcp either-port = 443
tcp payload-length >= 44
tcp payload starts-with hex-signature 16-03
exit