Configurar http proxy com filtro de conteúdos (dansguardian)

Activar repositórios necessários.

rpmforge

wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm

rpm -ivh rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm

Instalar a chave GPG de DAG

rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt

EPEL

O Repositório EPEL (Extra Packages for Enterprise Linux) é um repositório construído por voluntários do projecto do Fedora para criar um repositório de pacotes adicionais de grande qualidade que complementa o Red Hat Enterprise Linux e distribuições compatíveis (tipo o CentOS). Este repositório fornece muitos pacotes para CentOS/RHEL, que não são parte dos repositórios oficiais, mas que são desenhados para trabalhar com estas distribuições.

wget http://download.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm

rpm -ivh epel-release-5-4.noarch.rpm

Verificar os repositorios

yum repolist

Após o comando anterior, vão aparecer os repositórios disponiveis e a quantidade de pacotes em cada um deles.

Instalar o Squid e o dansguardian

yum install squid dansguardian

Squid

Editar o squid.conf

vi /etc/squid/squid.conf

O ficheiro de configuração do squid parece extenso, mas está muito bem documentado. De qualquer forma, as unicas linhas necessárias para uma minima configuração do squid são:

 

http_port 3128

#Definicao de ACLS

# Redes permitidas
acl AllowedNetworks src 192.168.100.0/24

# Se preferirem, em vez de colocar as redes separadas por espaco, podem ser colocadas num ficheiro e adicionadas aqui:
# acl <nome_da_acl> src "ficheiroComRedes"

# Maquinas sem acesso - Se quiserem que maquinas nao tenham acesso a internet
acl Nonet src "ficheiroIPsSemAcesso"

# Sites nao autorizados 
acl sitesDeny dstdom_regex "ficheiroComListaSitesParaNaoAcederemAEles"

#Permitir / Negar ACLS definidas em cima

# Redes
http_access allow AllowedNetworks

# Localhost
http_access allow localhost

# Sites negados
http_access deny sitesDeny

# Negar tudo o resto
http_access deny all

icp_access allow AllowedNetworks
icp_access allow all

hierarchy_stoplist cgi-bin ?

#Cache stuff
cache_replacement_policy lru

# Definicao da cache - tamanho (ate 80% do espaco disponivel) NumerodeDirectoriasPrimeiroNivel NumeroDirectoriasSegundoNivel
cache_dir ufs /cache/cache1 16384 16 256
cache_dir ufs /cache/cache2 16384 16 256

store_dir_select_algorithm round-robin

# Qual o tamanho maximo de objectos a guardar na cache
maximum_object_size 31457280 KB

access_log /var/log/squid/access.log squid
acl QUERY urlpath_regex cgi-bin ?

cache deny QUERY
refresh_pattern ^ftp:           1440    20%     10080
refresh_pattern ^gopher:        1440    0%      1440
refresh_pattern .               0       20%     4320
acl apache rep_header Server ^Apache
broken_vary_encoding allow apache

visible_hostname <hostname da maquina visivel>
cache_mgr <email gestor da maquina>
cache_effective_user squid
cache_effective_group squid

coredump_dir /var/spool/squid

Guardar o ficheiro.
Para iniciar a cache (antes de arrancar com o squid):
squid -z 
Arrancar com o squid:
/etc/init.d/squid start
Para ter a certeza que este inicia aquando de um reboot ao servidor:
chkconfig --levels 35 squid on

Dansguardian

O Dansguardian é um filtro de conteúdos bastante bom. Também podem filtrar conteúdos com o squid, mas o Dansguardian foi criado só para isso, e é muito bom. Mantendo a filosofia de Unix – Write programs that do one thing and do it well.
Os ficheiros de configuração encontram-se em /etc/dansguardian
A configuração do dansguardian é efectuada em dansguardian.conf
As opcoes mais relevantes são:

filterip =  
filterport = 8080
proxyip = 127.0.0.1
proxyport = 3128
As opções:
  • filterip diz respeito ao IP onde o dansguardian deverá escutar por pedidos. Se deixado em branco, escuta em todos os IPs que a máquina tiver. Preencham sempre.
  • filterpor a porta onde escutar. Esta é porta que devem configurar nos clientes
  • proxyip o IP onde o squid está à escuta. Por defeito, é a propria maquina. Se o squid estiver numa maquina diferente, coloquem aqui o IP.
  • proxyport a porta onde o SQUID escuta. Configurada no squid como http_port . Não deverá ser a mesma que o dansguardian.

No ficheiro dansguardianf1.conf encontram-se algumas opções relativamente à filtragem de conteúdos.

Tenham atenção à opção naughtynesslimit.

As listas de conteúdos para filtrar, vamos retirar de URLBlacklist.com. Vão a download e retirem o ficheiro.

Assim que tiverem o ficheiro, descomprimam para /etc/dansguardian/. Automaticamente é criada a directoria blacklists. A configuração das listas que desejam que o dansguardian filtre é feita em vários ficheiros:

  • bannedsitelist
  • bannedurllist

Nestes ficheiros encontram-se linhas comentadas que podem ser descomentadas. Atenção que, um dos ficheiros diz respeito a sites e outro aos URLs. Tenham atenção a isso. A seguinte listagem exemplo é do ficheiro bannedurllist.

#.Include</etc/dansguardian/blacklists/ads/urls>

#.Include</etc/dansguardian/blacklists/adult/urls>

#.Include</etc/dansguardian/blacklists/aggressive/urls>

#.Include</etc/dansguardian/blacklists/audio-video/urls>

#.Include</etc/dansguardian/blacklists/chat/urls>

#.Include</etc/dansguardian/blacklists/drugs/urls>

#.Include</etc/dansguardian/blacklists/entertainment/urls>

#.Include</etc/dansguardian/blacklists/frencheducation/urls>

#.Include</etc/dansguardian/blacklists/gambling/urls>

#.Include</etc/dansguardian/blacklists/government/urls>

#.Include</etc/dansguardian/blacklists/hacking/urls>

Descomentem as que desejarem.  Se desejarem, podem adicionar, seguindo as mesmas linhas. Podem haver categorias nas blacklists que não estejam aqui.
Dentro da directoria blacklists encontram um ficheiro chamado CATEGORIES que contém as categorias todas das listas e o conteúdo.
Quando efectuarem alguma alterção com o dansguardian em execução, para que ele leia novamente a configuração:
dansguardian -r
Para iniciar o dansguardian:
/etc/init.d/dansguardian start
Para se certificarem que ele arranca aquando de um reboot do servidor:
chkconfig --levels 35 dansguardian on

Ligação entre dansguardian e squid.

Para que exista ligação entre o dansguardian e o squid, é necessário activar algumas opções:

No squid, existem duas linhas de configuração que temos que activar:

# Para permitir o dansguardian

acl_uses_indirect_client on

# Se nao funcionar, experimentem, na linha seguinte, alterar localhost para o nome da acl para as vossas redes permitidas

follow_x_forwarded_for allow localhost 

No Dansguardian, as linhas são as seguintes:

# if on it adds an X-Forwarded-For: <clientip> to the HTTP request

# header.  This may help solve some problem sites that need to know the

# source ip. on | off

forwardedfor = on

# if on it uses the X-Forwarded-For: <clientip> to determine the client

# IP. This is for when you have squid between the clients and DansGuardian.

# Warning - headers are easily spoofed. on | off

usexforwardedfor = on

Desta forma, os vossos clientes ligam-se ao Dansguardian, onde é efectuada a filtragem de conteúdos e é passada para o squid a informação dos clientes, nomeadamente o IP e os headers necessários.
Neste momento, já deverão ter o squid e o dansguardian em perfeita sintonia.
Nota: Em vez de configurar IPTABLES para negar ligações directas à porta do squid (3128 por defeito), é mais simples, na tag de configuração do squid http_port, escrever:
http_port 127.0.0.1:3128
Desta forma, apenas a máquina local (neste caso o dansguardian; 127.0.0.1 o dispositivo de loopback) pode efectuar ligações directas. Simples e eficaz.
Configuração usando IPTABLES
Até agora, nada impede (a não ser politicas de domínio ou outras restrições) que os vossos clientes chegem ao browser e troquem a porta do proxy, deixando de se ligar ao dansguardian e ligando directamente ao squid, passando assim a filtragem de conteúdos. Para evitar isso, usem a seguinte regra de IPTABLES que nega ligações à porta 3128 excepto do localhost (funciona se o squid e o dansguardian estiverem na mesma maquina – Se assim não for, troquem o ip 127.0.0.1 pelo IP do vosso dansguardian):
Primeiro, permitimos ligações à porta do squid (3138) da própria maquina – Se o Dansguardian estiver noutra maquina, troquem o IP:
iptables -A INPUT -i eth0 -s 127.0.0.1 -p tcp --destination-port 3128 -j ACCEPT
Seguidamente, negamos todas as ligações:
iptables -A INPUT -i eth0 -p tcp --destination-port 3128 -j DROP
Desta forma, se alguém se tentar ligar directamente à porta do squid, não vai conseguir ligação.

Referências

http://wiki.centos.org/AdditionalResources/Repositories/RPMForge

http://fedoraproject.org/wiki/EPEL/FAQ#How_can_I_install_the_packages_from_the_EPEL_software_repository.3F

http://www.cyberciti.biz/tips/how-do-i-enable-remote-access-to-mysql-database-server.html

Leave a Reply

Your email address will not be published. Required fields are marked *