Configurando SquidGuard no Linux

O squidGuard é um filtro para web que funciona em conjunto com o squid proxy. Ele gera um banco de dados a partir de uma lista de sites e consegue controlar o acesso/bloqueio. As urls podem ser separadas por classes e ser tratadas de forma diferente umas das outras.Existem várias BlackList que podem ser baixadas e usadas como base para o bloqueio. Entre elas temos :

 

 

Mas tome muito cuidado , pois como as listas são grandes, é utilizado um bom consumo de memória e processamento, e pode causar lentidão no serviço de proxy, ou seja, afetar diretamente na aceleração WEB.

 

 

Instalando o SquidGuard

 

 

A instalação é bem simples, tendo em vista que existem pacotes tanto para Red Hat Like como Debian Like, de forma que possamos usar o apt-get e yum para fazer tais instalações.

 

No Red Hat Like ( como RH, Centos , Fedora, etc), usaremos o comando abaixo para instalar o pacote:

 

 

 # yum install squidGuard

 

 

Já no Debian Like ( Debian, Ubuntu,etc), usaremos o seguinte comando:

 

 

 # apt-get install squidGuard

 

 

 

Uma vez instalado ,teremos seu arquivo de configuração principal em /etc/squid/squidGuard.conf. Além desse arquivo temos o diretório de log em /var/log/squidGuard e o arquivo /var/log/squid/squidGuard.log.

 

Parecido um pouco com squid, quando se fala de ACL, mas diferente quanto da configuração em sim, ele trabalha com uma base, onde ficaram os arquivo de texto, contento as URL, Expressões Regulares  e lista de domínio que serão tratadas por ele.

 

Todas essa informações ficam gravadas no arquivo de configuração.

 

 

Funcionamento da ACL

 

 

Como no squid, no SquidGuard existem vários tipos de ACL, mas diferente do padrão do squid, onde informamos a acl, nome, e conteudo, no SquidGuard o conteúdo de uma ACL pode ser subdividos em várias categorias:

 

 

  • domainlist : Lista de domínios que serão filtrados
  • urllist: Lista de URL que serão filtradas
  • expressionlist: Expressões regulares que serão filtradas na URL.
  • ip: filtra endereço de ip, range ou rede.
  • user: utilizado para filtrar usuários, desde que seja utilizado um método de autenticação
  • userlist: utilizado para definir um arquivo que contenham os nomes de usuários.
  • iplist: Da mesma forma que o anterior, serve para informar um arquivo contendo um lista de ips.
  • weekly: Normalmente essa categoria é utilizado com ACL time para informar data e horários à serem filtrados.
  • date: Usado para passar uma data especifica.

 

 

Dentro desses  itens é que faremos a configuração de nossos filtros de bloqueio ou liberação. Não é necessário colocar valores antes do domínio, como por exemplo www.stato.blog.br, neste caso usamos somente stato.blog.br, logicamente a não ser que queira bloquear a URL especifica. Já no caso de URL usamos stato.blog.br/minhaurl, para bloquear somente a URL e não o domínio inteiro. Enfim, expressionlist, irá filtrar expressões regulares, onde podemos criar vários tipos de regex para determinados tipos de URL. Com certeza um dos mais potentes filtros. Se você não conhece de expressa regular, de uma olhada nesta video aula que disponibilizei no meu Canal youtube :https://youtu.be/V7CHVdoFuho

 

As ACLS podem ser divididas em ACL de Origem, de Destino , de Tempo e Default. Nas ACLs de origem usamos as categorias : ip, iplist,user e userlist. Já na ACL de destino usamos as categorias urllist, domainlist e expressionlist, e por fim na ACL de tempo usamos weekly e date.

 

Após as categorias, agora podemos ver os tipos de ACL existentes. Iremos cobrir algumas hoje, e outras num segundo Post. Entre as ACL possíveis temos:

 

 

  • dest : ALC utilizada para informar um destino
  • src: ACL utilizada para informar uma origem
  • time: ACL utilizada para informar uma data e ou hora.
  • default: ACL padrão que será utilizada, caso nenhuma se aplique anteriormente.

 

 

A forma de montar a ACL lembra muito as configurações de DNS, onde informamos o tipo da ACL , nome da ACL , e dentro de chaves iremos especificar nossas categorias.

 

Veja abaixo alguns exemplos simples:

 

src minharede {
ip 192.168.0.0/24

          ip 192.168.1.10-192.168.1.100

}

dest pornografia {

         urllist porno/listaurl

        domainlist porno/listadominios

        expressionlist porno/listaexpressoes

}

time horariocomercial {

          weekly  * 08:00-17:30

}

 

 

Acima temos três ACL, na primeira utilizamos uma ACL do tipo origem, onde será filtrada uma rede inteira 192.168.0.0/24, onde poderia usar a mascara 255.255.255.0 também, não haveria nenhum problema. O segundo item filtrado é somente um range de ip que vai de 192.168.1.10 até 192.168.1.100.

 

Na segunda ACL, utilizamos uma do tipo destino, onde queremos filtrar todos os destinos que casem com as urls , domínios e expressões regulares, contidas nos arquivos chamados : listaurl, listadominio e listaexpressões. Note : esses arquivos devem ficar num pasta especifica, configurada pelo dbhome, que veremos abaixo.

 

E por fim utilizamos um ACL de horário filtrando todos os dias (*) das 08:00 até as 17:00 horas. Podíamos usar dias específicos, fazendo uso das palavras fridays, mondays, etc. Bem como uma data especifica, através da categoria date, exemplo: date *.12.24 12:00-24:00. Neste exemplo estamos filtrando todos dias 24 de dezembro, no horário as 12:00 até as 24:00 horas.

 

Ainda não vimos como bloquear ou permitir, nossas ACL, porque primeiro precisamos entender nosso arquivo de configuração , para então começarmos a criar ou configurar as listas puxadas.

 

 

Entendendo o arquivo de configuração

 

 

Vamos ver nesse momento como é separado nosso arquivo de configuração. Logo no começo vemos algumas informações como dbhome,  logdir. Essa informações são as informações iniciais e logo após começamos a criar nossas acl de fato, mas devemos entender bem esses dois parâmetros para não termos problemas quando da configuração da nossa BlackList.

 

  • dbhome: Especifica o local onde devem ser armazenados os arquivos  que são utilizados pelas ACLs domainlist, urllist, expressionlist, iplist ou userlist. Todos arquivos deverão estar neste local. Podemos pegar por exemplo , a configuração anterior que informa o caminho porno/listadominios. O arquivo lista de domínios deverá estar dentro do diretório porno, que estará dentro do diretório especificado em dbhome. Vamos imaginar que o diretório dbhome configurado seja /var/squidGuard/blacklist, então o caminho final do arquivo listadominios será /var/squidGuard/blacklist/listadominios.
  • logdir: Diretiva do SquidGuard para especificar onde serão armazenados logs.

 

Com essa informações ja podemos começar a montar nossos bloqueios ou permissões.

 

Vamos utilizar as ACL criadas anteriormente , que são pornografia, minharede e horariocomercial. Vamos começar uma bem simples, bloquear pornografia para todos.

 

 

acl {
default {

          pass !pornografia all

          redirect http://servidor/paginabloqueio.html

                }

}

 

 

Acima usamos a ACL default, que indica, caso não haja nenhum regra anterior filtrando, todas se enquadrarão nessa.

 

A informação pass, diz ao SquidGuard liberar. Mas liberar o que ? Temo !pornografia all, que quer dizer , com exceção de pornografia, qualquer coisa , tudo (all).

 

E por fim a ação tomada em redirect é redirecionar para uma página que você queira, como por exemplo, uma página interna da Empresa, com a mensagem de bloqueio.

 

Podemos tentar um mais aprimorado, vamos imaginar que existe uma ACL de origem chamada diretoria, com os ips da diretoria. Esse IPs devem ser livres para tudo, sem bloqueios inclusive pornografia. Vejamos como ficaria:

 

 

acl {
diretoria {

                   pass all

           }

         default {

          pass !pornografia all

          redirect http://servidor/paginabloqueio.html

                }

}

 

 

Como vemos acima, foi adicionado dentro das permissões, mais uma entrada para ACL diretoria, que permite pass all, e o default (restante de ser mortais ) irão ser filtrados pela regra default.

 

Agora vamos para um terceiro exemplo. Imagine que temos uma ACL de destino chamada mídias sociais, que filtra facebook, linkedin, e outras mídias. E temos uma segunda ACL chamada almoco, que filtrará somente horário do almoço. E queremos bloquear mídias sociais , mas no horário de almoço queremos liberar. Desta vez iremos fazer um mais completo.

 

 

dest midiassociais {                            expressionlist midia/listaexpressoes 

                            domainlist midia/listadominios

  } 

time almoço { 

              weekly * 12:00-13:00

  }

acl {    

         all within almoco {

                       pass all

          }

         default {

                       pass !midiasociais all

                       redirect http://servidor/paginabloqueio.html

                }

}}

 

 

Neste último exemplo, usamos a valor all within almoco, que significa Todos dentro de almoço, ou seja , qualquer origem, se estiver no horário da ACL almoço, poderá usar tudo. É possível fazer restrição também dentro desta política, como por exemplo permitir tudo e bloquear pornografia. No restante não muda nada, proíbe midiassociais e redireciona para pagina que você indicar em redirect.

 

Para bloquear mais de uma acl é só colocar a frente, como : pass !porno !jogos !midias all. Onde permite tudo com exceção de porno , jogos e midias.

 

 

 

Integrando com o Squid

 

 

O próximo passo agora é integrar o squid com o squidGuard, isso é feito através do parâmetro redirect_program, é bem simples, vamos ao arquivo de configuração do squid e adicione essa linha no começo do arquivo:

 

 

 

 redirect_program  /usr/bin/squidGuard

 

 

O próximo passo é reiniciar o serviço do squid, podendo-se utilizar o comando service squid restart.

 

A partir desse momento, o seu squidGuard deve já funcionar.

 

 

O que vem depois

 

 

Neste Post vamos parar por aqui, mas ainda existe muito assuntos à serem tratados sobre o SquidGuard, e futuramente estarei fazendo novos Post à respeito desse assuntos. Dentre os assuntos que quero abordar , estão:

 

  • Autenticação no squidGuard
  • Configuração e Uso do SquidGuard no PFSense
  • Integração com Active Directory no Linux e PFSense

 

Fonte: http://stato.blog.br/wordpress/configurando-squidguard-no-linux/

.