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 :-).