quarta-feira, 21 de setembro de 2016

Exemplo de uma configuração real do Squid

Abaixo um trecho de uma configuração real do Squid. As linhas estão numeradas para podermos descrever o que cada uma faz.


  1. acl transito time 05:00-09:00
  2. acl cameras dstdomain -i '/etc/squid3/cameras.lst'
  3. acl CONNECT method CONNECT
  4. acl site_proibido dstdomain -i '/etc/squid3/site_proibido.lst'
  5. acl url_proibida url_regex -i '/etc/squid3/url_proibida.lst'
  6. acl ip_suporte src 172.20.120.0/24
  7. acl ip_liberado_dropbox src 172.20.250.50
  8. acl ip_liberado_dropbox src 172.20.80.7
  9. acl ip_liberado_dropbox src 172.20.30.27
  10. acl ip_liberado_4shared src 172.20.110.4/31
  11. http_access deny cameras !transito
  12. http_access deny site_proibido !ip_suporte !ip_liberado_dropbox !ip_liberado_4shared
  13. http_access deny url_proibida !ip_suporte !ip_liberado_dropbox
  14. http_access deny CONNECT site_proibido !ip_suporte
  15. http_access deny CONNECT url_proibida !ip_suporte

Na linha 11 nos bloqueamos (deny) o acesso aos sites da ACL “cameras” (relação de câmeras espalhadas pela cidade e que geram muito tráfego no link) menos (!) no horário das 05:00 até as 09:00. Essas câmeras são usadas pelo telejornal do canal de televisão onde trabalho.

Na linha 12 estamos bloqueando (deny) o acesso aos sites listados na ACL “site_proibido”, menos para a VLAN listada nas ACL “ip_suporte” e para as estações listadas nas ACL ip_liberado_dropbox e ip_liberado_4shared.

Na linha 13 estamos bloqueando (deny) o acesso às URLs que contém as regex listadas na ACL url_proibida, menos para a VLAN do suporte (ip_suporte) e para as estações listadas na ACL ip_liberado_dropbox.

Na linha 14 e 15 estamos bloqueando conexões aos sites site_proibido e url_proibida, menos para a VLAN do suporte. Esse tipo de bloqueio (CONNECT) deve ser feito para sites seguros (HTTPS), visto que, devido a criptografia, o Squid não consegue verificar dentro do pacote se há algum tipo de conteúdo impróprio.

Bem, agora que você já entendeu o jeitão do Squid, aqui vai uma dica: tente deixar o arquivo squid.conf o mais simples possível, pois quanto mais regras existirem, mais difícil será identificar em qual delas está sendo bloqueado o acesso.

segunda-feira, 19 de setembro de 2016

Especificando mais de um objeto em uma ACL do Squid

Se você precisar (vai precisar) especificar mais de uma site em uma ACL, é só usar o parâmetro “-i”. 

acl sites_liberados dstdomain -i ‘/etc/squid3/sites_liberados.lst’

http_access allow sites_liberados

Agora criamos o arquivos /etc/squid3/sites_liberados.lst com os sites que queremos incluir nesta ACL, como no exemplo abaixo.

uol.com.br

google.com
google.com.br

Agora basta reiniciar o Squid e todos os sites estarão liberados. Podemos criar, com isso, categorias de sites e fazer as liberações baseadas nessas categorias. Aliás, antes de partirmos para configurações mais avançadas, precisamos decidir que tipo de política iremos adotar no proxy. Basicamente temos 4 tipos:

Tudo liberado, menos os explicitamente bloqueados. Dependendo do tipo de empresa em que você trabalha, você vai ter que deixar todos os sites liberados e ir bloqueando os acessos a medida que eles aparecem. O problema dessa abordagem é que gasta-se muito tempo analisando logs de acesso e entrando em sites para ver se seu conteúdo é ou não permitido. 

Tudo bloqueado, menos os explicitamente liberados. Em empresas que possuem uma política menos permissiva, bloquear todos os acessos e ir liberando a medida que os usuários forem solicitando pode ser a melhor opção. Porém, isso gera um grande estresse, principalmente no começo, quando uma enorme quantidade de solicitações de liberações de sites surgem. Imaginem ter que liberar site a site em uma pesquisa no Google!

Bloqueios e liberações por categorização dos sites. A idéia desta abordagem é ter uma equipe (ou empresa terceirizada) para categorizar todos os sites. Algumas categorias comuns seriam: redes_sociais, portais, notícias, sexo, namoro, webmail, stream, videos, etc. Dessa forma você pode liberar e bloquear sites por categoria. Lembrando que sites sem categoria, geralmente, devem ser bloqueados. Essa abordagem tem como inconveniente ter uma equipe bem treinada para categorizar os sites, ou confiar na categorização feita por empresa terceirizada. 

Filtro dinâmico. Essa abordagem envolve um mecanismo que analisa todo o site e, de acordo com critérios pré-estabelecidos, pontua a página. Por exemplo, se achar a palavra “sexo” soma 50 pontos; achando um palavrão soma mais 30. Se o site atingir uma determinada pontuação o site é bloqueado automaticamente. Isso permite que se libere sites como Facebook bloqueando os perfis impróprios. O único inconveniente dessa abordagem é a possibilidade de surgirem falsos-positivos, o seja, um site válidos ser classificado como indevido. 

O ideal é utilizar as 4 políticas, tendo sites explicitamente bloqueados e liberados, categorização de sites e filtros dinâmicos. Veremos isso nos próximos posts.

quinta-feira, 15 de setembro de 2016

Dando os primeiros passos com Squid

Quem começa a mexer com Squid logo sente dificuldade para entender o jeito de configurá-lo. O Squid trabalha com ACL (Access Control List). Encare as ACLs como os personagens que farão parte do Squid. Para liberar um acesso a um site eu preciso criar uma ACL para o site, bem como para as máquina que terão acesso a ele. A forma de especificar uma ACL é a seguinte:

acl nome tipo valor

No port anterior criamos uma ACL chamada "all" que é do tipo src e possui valor 0/0. Abaixo eu descrevo os principais tipos de ACL usadas no Squid.


  • src - IP, intervalo de IP, ou rede de origem (172.20.120.4, 192.168.0.0/16, 10.0.0.1-10)
  • dst - IP, intervalo de IP, ou rede de destino
  • dstdomain - domínio (uol.com.br, blogspot.com, etc)
  • time - data e horário (12:01-13:00 : horário de almoço)
  • url_regex - expressão regular encontrada na URL (fazenda.[a-z][a-z].gov.br) 
  • port - porta usada pelo site (80,81,8080)
  • proto - protocolo usado (FTP, HTTP)


Assim, podemos criar regras misturando as ACL. Por exemplo, para liberar o acesso ao Facebook para a rede 10.0.100.0/24 podemos usar as seguintes linhas no arquivo /etc/squid3/squid.conf.

http_port 3128
acl all src 0/0
acl rede_interna src 10.0.100.0/24
acl facebook dstdomain facebook.com
http_access allow rede_interna facebook
http_access deny all

Com as regas acima liberamos o acesso ao domínio facebook.com (mas não ao facebook.com.br) somente para a rede 10.0.100.0/24. Os demais sites estão bloqueados para todos.

terça-feira, 13 de setembro de 2016

Instalação e configuração inicial do Squid

Dando sequência ao assunto do último post, primeiramente temos que instalar o Squid. Não precisa ser no gateway de rede, mas geralmente as pessoas configuram assim. A última versão é a 3, e ela contém algumas mudanças em relação aos parâmetros de configuração da versão anterior. 

# apt-get install squid3

Ao ser instalado, o Squid cria um “pequeno” arquivo de configuração em /etc/squid3/squid.conf. Não se espante com suas 5780 linhas. Embora o Squid tenha muitos recursos, seu arquivo de configuração original também é seu arquivo de documentação. Portanto é recomendado salvar o arquivo original e criar um novo. Primeiro, vamos renomear o arquivo original.

# mv /etc/squid3/squid.conf /etc/squid3/squid.conf.orig

Agora, vamos criar um novo arquivo /etc/squid3/squid.conf com o seguinte conteúdo:

http_port 3128
acl all src 0/0
http_access allow all

A primeira linha diz a porta que o Squid ouvirá. A padrão é 3128. A segunda linha contém uma ACL (access control list). Encare as ACLs como os personagens do Squid. O nome da ACL é “all” e é do tipo “src”, ou seja, ip de origem. O parâmetro “0/0” significa qualquer ip. A última linha contém uma http_access, que são onde realmente são permitidos (allow) ou negados (deny) os acessos. Aqui nós estamos permitindo (allow) a qualquer ip (all) acessar qualquer coisa, visto que não especificamos mais nada. 

Agora basta reiniciar o Squid.

# service squid3 force-reload

Neste momento, basta configurar o navegador para usar o proxy, como no print abaixo, alterando o ip conforme a tua rede.




Isso basta para que a navegação passe pelo proxy. Mas não se preocupe com os detalhes, pois vamos entender melhor a configuração do proxy e fazer algumas personalizações nas próximas postagens.

sexta-feira, 9 de setembro de 2016

Introdução ao Squid e Dansguardian

Não adianta aumentar o link de Internet! Seus usuários sempre vão dar um jeito de consumir toda a banda disponível. Se for dia de jogo do Brasil então, esqueça. Você até pode monitorar os acessos com algumas ferramentas que já citei aqui, mas como bloquear um stream de video do Youtube sem bloquear todo o site? Há duas formas: 

  • a) mande embora quem está acessando o conteúdo indevido;
  • b) configure um proxy na rede.


Proxy é um gateway, um sistema que pode analisar todas as camadas do pacote de rede e tomar ações baseadas em regras preestabelecidas. Há muitos tipos de proxy para os mais diversos protocolos, mas o mais comum é o proxy de navegação web, e o proxy web mais utilizado no mundo Linux (e talvez o mais usado em todas as plataformas) é o Squid.

Squid

O Squid pode bloquear sites baseado em:

  • domínio;
  • url;
  • expressões regulares;
  • usuário;
  • ip de origem;
  • ip de destino;
  • dia da semana;
  • hora;
  • tipo de arquivo;
  • tamanho;
  • extensão de arquivo;
  • muitos outros ítens.


Esses ítens podem ser combinados para, por exemplo, permitir que determinado usuário acesse um site em especial somente no horário de almoço. Além disso, o Squid também pode fazer cache dos sites visitados aumentando a velocidade da Internet do ponto de vista do usuário, pois economiza o link. E como se isso não bastasse, há várias ferramentas que podem ser integradas ao Squid de forma fácil, ampliando suas funções.

Nos próximos posts eu vou falar como instalar e configurar o Squid, como personalizá-lo, como fazer acesso autenticado, entre outras coisas. Depois vou falar um pouco do Dansguardian, um filtro de conteúdo dinâmico.

Até lá. 

sexta-feira, 2 de setembro de 2016

Procurando arquivos com Kfind

O ambiente KDE do Linux tem uma aplicação que facilita a procure por arquivos. É o Kfind.


Através de uma interface gráfica é possível pesquisar por tipo de arquivo, por tamanho, data de criação, data de modificação, dono do arquivo, programa que o criou, e até pelo conteúdo dentro do arquivo. Uma mão na roda.

Se você use o Kde, já deve conhecer o Kfind. Senão, instale-o com:


apt-get install kfind


*Artigo anteriormente publicado em  24 de outubro de 2012. Corrigo e atualizado.