Social :  

Captura de pacotes em Firewall ASA/PIX/FWSM via CLI

Salve galera.

Alguns dias atrás me deparei com um problema que todo ‘admin’ odeia, quando você trabalha com SLA, metas, ambiente de produção problemático, tudo que você quer é alguma forma de automatizar o trabalho e facilitar o ‘troubleshooting‘ dos problemas.

O problema é que eu estava em um ambiente com FWSM (Firewall Services Module, módulos de Firewall anexados à Switches Cisco, por exemplo em um Catalyst 6500), e esses módulos são gerenciados através do ASDM (Cisco Adaptive Security Device Manager, interface gráfica para gestão de Firewalls Cisco), até ai tudo bem, porém em um dos contextos de Firewall foi necessário desabilitar o LOG no ASDM para economia de processamento e memória. E surgiu a necessidade de validar se uma determinada estação estava passando pelo firewall para chegar em um WebServer.

É ai que entra a ferramenta Capture, com ela, você pode validar se um fluxo está passando através do Firewall etc, inclusive a captura pode ser salva em arquivo e aberta em um programa terceiro, como Wireshark por exemplo.

Imaginemos o seguinte cenário:

fwsm

Na imagem à cima, nós queremos validar se a estação de trabalho 192.168.50.1 está acessando o servidor web 186.192.82.163.

Para que a captura funcione, precisamos primeiro criar uma access-list , é ela que vai dar ‘match‘ nos IP’s informados e assim o capture conseguirá coletar os dados da forma que queremos:

No nosso cenário, criaremos uma access-list chamada teste-interno,  que irá coletar os pacotes na interface interna enviados pela estação de trabalho com destino ao WebServer, como queremos especificar qual a porta estaremos capturando (http 80) a access-list que iremos usar é do tipo ‘extended’ :

FWSM# conf t
FWSM(config)# access-list teste-interno extended permit tcp host 192.168.50.1 host 186.192.82.163 eq 80
FWSM(config)# access-list teste-interno extended permit tcp host 186.192.82.163 host 192.168.50.1

A access-list acima irá dar match em pacotes enviados do ip 192.168.50.1 com destino 186.192.82.163 na porta 80, e vice-versa, agora iremos aplicar essa access-list à captura:

capture teste-interno access-list teste-interno buffer 2000 interface interna packet-length 1500

Reparem que a captura  da match na access-list “teste-interno” e é aplicada na interface “interna”, poderíamos também criar uma access-list “teste-externa” e aplicarmos uma captura na interface “externa”, porém para os nossos testes não achei necessário.

Vejam agora o output do comando “show capture” no FWSM:

FWSM(config)# show capture
capture teste-interno type raw-data access-list teste-interno buffer 2000 packet-length 1500 interface usuarios[Buffer Full - 1962 bytes]

Vejam que já temos bytes capturados nesse teste, caso tivéssemos feito uma captura também na interface externa, e essa estivesse com 0 bytes, com certeza teríamos aqui um problema de rota ou drop em nossas regras de firewall.

E finalmente, para visualizar o fluxo do tráfego na interface, podemos usar o comando “show capture teste-interno”:

FWSM# show capture teste-interno

22 packets seen, 6 packets captured
1: 12:40:44.4121378274 802.1Q vlan#300 P0 192.168.50.1.50593 > 186.192.82.163.80: S 474457842:474457842(0) win 8192 <mss 1260,nop,wscale 2,nop,nop,sackOK>

2: 12:40:44.4121378284 802.1Q vlan#300 P0 186.192.82.163.80 > 192.168.50.1.50593: S 3753696356:3753696356(0) ack 474457843 win 29200 <mss 1380,nop,nop,sackOK,nop,wscale 7>

3: 12:40:44.4121378284 802.1Q vlan#300 P0 192.168.50.1.50593 > 186.192.82.163.80: . ack 3753696357 win 16695

4: 12:40:44.4121378284 802.1Q vlan#300 P0 192.168.50.1.50593 > 186.192.82.163.80: P 474457843:474458098(255) ack 3753696357 win 16695

5: 12:40:44.4121378284 802.1Q vlan#300 P0 186.192.82.163.80 > 192.168.50.1.50593: . ack 474458098 win 237

6: 12:40:44.4121378344 802.1Q vlan#300 P0 186.192.82.163.80 > 192.168.50.1.50593: . 3753696357:3753697617(1260) ack 474458098 win 237

Você poderá também salvar essa captura no formato Pcap e abri-lá em um software como Wireshark para um troubleshooting mais completo, por exemplo auditar ataques à um portal Web Interno.

Muito obrigado pessoal e até a próxima.

Meu nome é Fernando Teixeira Silva, trabalho a 10 anos com TI, atualmente estudo tecnologias voltadas para ambientes de Data Center, como Redes, Virtualização e Storage. Criei esse blog para compartilhar experiências, problemas no ambiente de TI e novidades que garimpo pela Web.