PIX/ASA URL Filtering – 5 passos para o sucesso

Por , 07/11/2008 23:09

Assim como os routers o ASA e o PIX a partir da versão de OS 7.2 são capazes de realizar filtros de URL com base em listas criadas por seus administradores. No caso do PIX/ASA esta função é realizada pela criação de expressões regulares (regex) associada a feature de Modular Policy Framework (MPF).

Mas atenção, este modelo de configuração não realiza o bloqueio de todo tipo de aplicação, para realizar o bloqueio efetivo de arquivos, por exemplo, se faz necessário a inserção de um appliance dedicado como o Ironport ou um módulo CSC no caso do ASA. O bloqueio de URLs em conexões HTTPS também não é possível.

Limitações a parte, vamos ao que interessa, mãos à massa :-) . Como exemplo vamos bloquear algumas extensões de arquivos e algumas URLs.

1º Passo: Criação das expressões regulares

Aqui criamos duas linhas de expressões regulares, listando extensões EXE, COM, BAT, PIF, VBS e WSH.

regex urllist1 ".*\.([Ee][Xx][Ee]|[Cc][Oo][Mm]|[Bb][Aa][Tt]) HTTP/1.[01]"
regex urllist2 ".*\.([Pp][Ii][Ff]|[Vv][Bb][Ss]|[Ww][Ss][Hh]) HTTP/1.[01]"

Para o bloqueio de URLs o processo é o mesmo.

regex domainlist1 "\.playboy\.com\.br"
regex domainlist2 "\.youtube\.com"

Crie expressões para captura do application header e o tipo de conteúdo.

regex contenttype "Content-Type"
regex applicationheader "application/.*"

2º Passo: Determine o sentido do tráfego onde a inspeção será realizada

Para este processo a criação de ACLs se faz necessária.

access-list inside_mpc extended permit tcp any any eq www

3º Passo: Agrupe as expressões regulares

Afim de agrupar as expressões regulares e o access-list e até mesmo para conseguir inseri-las em um policy-map crie class-maps para as mesmas.

class-map type regex match-any DomainBlockList
match regex domainlist1
match regex domainlist2

class-map type inspect http match-all BlockDomainsClass
match request header host regex class DomainBlockList

class-map type regex match-any URLBlockList
match regex urllist1
match regex urllist2

class-map type inspect http match-all AppHeaderClass
match response header regex contenttype regex applicationheader

class-map httptraffic
match access-list inside_mpc

class-map type inspect http match-all BlockURLsClass
match request uri regex class URLBlockList

4º Passo: Crie um policy-map

Para atribuir ações a cada um dos class-maps criados crie um policy-map.

policy-map type inspect http http_inspection_policy
parameters
  protocol-violation action drop-connection
class AppHeaderClass
  drop-connection log
match request method connect
  drop-connection log
class BlockDomainsClass
  reset log
class BlockURLsClass
  reset log

Atribuia este policy-map dentro de um outro policy-map maior, que efetivamente será aplicado à interface.

policy-map inside-policy
class httptraffic
  inspect http http_inspection_policy

5º Passo: Aplique a política

Aplique o policy-map a interface por onde o tráfego se origina.

service-policy inside-policy interface inside

A partir deste momento o PIX/ASA passa a filtrar as URLs cadastradas, neste caso realizando um reset para aquelas que derem match a política, para debugar os acessos o comando "debug http" pode ser usado.

Para o bloqueio de novas URLs, basta criar expressões regulares como exemplificado no passo 1 e cadastrar estas dentro do class-map específico como exibido no passo 2, sem precisar alterar qualquer outra configuração. Espero ter ajudado, até a próxima :-) .

Bloqueando URL com NBAR

O NBAR – Network Based Application Recognition, é uma feature de roteadores Cisco que permite identificar e classificar o tráfego da rede, para posterior tratamento.

Uma das possíveis utilizações desta feature é a identificação de URLs. Podemos, por exemplo, evitar que os usuários acessem o Youtube.

Para isso devemos classificar o tráfego HTTP, com base na URL, via class-map. Depois com o policy-map definimos a ação (drop, neste caso). Por fim aplicamos a policy na interface de saída para Internet.

Exemplo:

RtBrainwork01#conf t

RtBrainwork01(config)#class-map match-all URL_STOP
RtBrainwork01(config-cmap)#match protocol http host "*youtube.com*"
RtBrainwork01(config-cmap)#exit

RtBrainwork01(config)#policy-map URL_POLICY
RtBrainwork01(config-pmap)#class URL_STOP
RtBrainwork01(config-pmap-c)#drop
RtBrainwork01(config-pmap-c)exit
RtBrainwork01(config-pmap)#exit

RtBrainwork01(config)#interface FastEthernet0/0
RtBrainwork01(config)#service-policy output URL_POLICY
RtBrainwork01(config-if)end

RtBrainwork01#wr

Outras informações sobre o NBAR podem ser encontradas aqui.

Até a próxima.

Tema Brainwork 0.2(beta)