www.mamboteam.com
mandrivabrasil.org mandrivabrasil.org - Comunidade de Usuários do Mandriva Linux no Brasil
Home arrow Artigos arrow Mandriva Linux arrow Guia de Instalação do Squid Plus no Mandriva Linux
07 de setembro de 2008
 
 
Menu Principal
Home
Notícias
Fórum
Planeta Mandriva-br
Artigos
Dicas
FAQs
Pesquisar
Links
Feeds de Notícias
Contato
Guia de Instalação do Squid Plus no Mandriva Linux PDF Imprimir E-mail
Avaliação do Usuário: / 15
PiorMelhor 
Por Alvaro Mendes de Oliveira   
11 de abril de 2006
Artigo sobre a instalação do SQUID no Mandriva2006 usando o AD (usuarios e grupos). Com filtro de conteudo usando o redirector. Compatibilidade com o BIGBLACKLIST. Controle de Banda. Logs de acesso em MySQL. Aplicacao de Relatorio em PHP.

Por Álvaro M Oliveira
E-mail: Este endereço de e-mail está sendo protegido de spam, você precisa de Javascript habilitado para vê-lo Este endereço de e-mail está sendo protegido de spam, você precisa de Javascript habilitado para vê-lo

Funcionalidades:

  • Autenticação integrada com AD usando Samba3 e protocolo NTLM.
  • Controle de Banda usando “delay pools” do Squid.
  • Filtro de Controle de Conteúdo através do Redirector.
  • Uso das listas negras do BIGBLACKLIST usando o Blackimp.
  • Importação dos logs de acesso para BD usando o SquidLogToMySQL.
  • Relatórios de uso da Internet, escritos em PHP.







Resumo:

Instalação do Squid usando autenticação integrada com AD através de pacotes disponíveis no Samba3. Para isto, são necessários dois grupos no AD: InternetWebDefault (com acesso integral) e InternetWebMeioDia (com acesso no horário de meio-dia). Todo acesso é transferido para o redirector e filtrado se necessário, usando as listas negras / brancas controladas por ele, listas estas que podem ser carregadas através das listas disponíveis no BIGBLACKLIST, com a possibilidade de criar usuários ou Ips com acesso privilegiado (sem restrição de conteúdo). Programação do squid para controle de banda, para que downloads em horário comercial tenham menor consumo de banda. Importação de todos os logs de acesso para banco de dados (MySQL), para que se possa fazer análise através da aplicação em PHP disponibilizada contendo vários relatórios de uso.

Perfil de Instalação (com rede, Internet Ok) (não é necessário X)

Instale o Mandriva somente com os seguintes pacotes (Mandriva DVD):

  • Estação de Internet
  • Computador de rede (cliente)
  • Configuração
  • Ferramentas de console
  • Desenvolvimento
  • Servidor Web/Ftp





Instalação de Pacotes Básicos

# MySQL-4.1.12
urpmi MySQL
service mysqld start
urpmi php-mysql
service httpd restart

Criação do usuário manager para uso futuro:

htpasswd -c /etc/httpd/passwd manager (*)

OBS:
Neste tutorial, o IP do servidor de proxy é 172.16.220.35.

Instalando o Samba 3

O Samba3 será baixado da Internet e compilado manualmente com as opções necessárias. Do pacote do Samba, só precisaremos do WINBINDD, pois ele é o responsável por fazer a autenticação usando NTLM.

cd /usr/local/src
wget http://us5.samba.org/samba/ftp/stable/samba-3.0.21c.tar.gz
tar xvfz samba-3.0.21c.tar.gz
cd samba-3.0.21c/source

# Configurando as opções desejadas do samba

./configure --bindir=/bin \
--sbindir=/usr/sbin \
--with-winbind --with-winbind-auth-challenge

# Compilando e instalando

make
make install

# Instalação de biblioteca para o nsswitch

cd nsswitch
cp libnss_winbind.so /lib
ln -s /lib/libnss_winbind.so /lib/libnss_winbind.so.2

# Winbind como serviço

cd ../..
cp packaging/RedHat-9/winbind.init /etc/init.d/winbind
chmod 755 /etc/init.d/winbind
chkconfig --add winbind

# Configuração do Samba

No arquivo SMB.CONF substitua os parâmetros logo abaixo, pelos que representam sua rede:

  • workgroup = nome NETBIOS de seu dominio
  • server string = comentário que identifica seu servidor de proxy
  • netbios name = nome NETBIOS de seu servidor de proxy




Neste exemplo o nome NETBIOS do:

  • Dominio = SMS
  • Servidor de Proxy = SRVPROXY




vi /usr/local/samba/lib/smb.conf

[global]
workgroup = SMS
server string = Servidor de Proxy
netbios name = SRVPROXY
log file = /var/log/samba/%m.log
max log size = 50
debug level = 1
security = domain
encrypt passwords = yes
smb passwd file = /etc/samba/smbpasswd
username map = /etc/samba/smbusers
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
unix charset = iso-8859-1
password server = *
winbind uid = 10000-20000
winbind gid = 10000-20000
winbind enum users = yes
winbind enum groups = yes
template homedir = /dev/null
template shell = /dev/null
winbind use default domain = yes
passdb backend = smbpasswd
[homes]
comment = Home Directories
browseable = no
writable = yes
#Fim do arquivo smb.conf


# Criando alias por questões de funcionalidades

ln -s /usr/local/samba/lib/smb.conf /etc/smb.conf

Agora que tudo já está configurado, iremos adicionar nosso servidor de proxy ao domínio, usando o comando net do pacote do Samba3.

net rpc join DOMINIO -S server –Uadministrator

Ex:
net rpc join SMS -S smscpds03 -Umanager
password:
Joined domain SMS.
Pronto! Máquina adicionada ao domínio.

net rpc join DOMINIO -S server –Uadministrator
Ex:net rpc join SMS -S smscpds03 -U anager
password:
Joined domain SMS.

Pronto!


# Inicializando o winbind

service winbind start

# Testando o funcionamento do Winbind

wbinfo -t

checking the trust secret via RPC calls succeeded

Se a mensagem acima apareceu, tudo Ok, senão, revise os passos.

# Configurando o nsswitch (adicionar winbind em passwd e group)

vi /etc/nsswitch.conf

passwd: files winbind
group: files winbind

# Testando sua instalação:

Exibir todos as contas do domínio:

getent passwd

Exibir todos os grupos do domínio:

getent group

Pronto! O samba3 está instalado.


Instalando o Squid 2.5

O Squid2.5 será baixado da Internet e compilado manualmente com as opções necessárias. Iremos compilar para modo português, autenticação e controle de banda.

cd /usr/local/src
wget http://www.squid-cache.org/Versions/v2/2.5/squid-2.5.STABLE12.tar.gz
tar xvfz squid-2.5.STABLE12.tar.gz
cd squid-2.5.STABLE12

cd /usr/local/srcwget tar xvfz squid-2.5.STABLE12.tar.gz

# Configurando as opções desejadas do samba

./configure --sbindir=/usr/sbin \
--enable-default-err-language=Portuguese \
--enable-auth="ntlm,basic" \
--enable-external-acl-helpers="winbind_group,wbinfo_group" \
--enable-snmp \
--enable-linux-netfilter \
--enable-delay-pools

# Compilando e instalando

make
make install

# Criando alias por questões de funcionalidades

ln -s /usr/local/squid/etc/squid.conf /etc/squid.conf

# Dando permissões ao usuário de execução (nobody)

cd /usr/local
chown -R nobody.nogroup squid

# Configurando nome do host no Squid

vi /etc/squid.conf

Localize o texto

# TAG: visible_hostname

E logo abaixo, insira:

visible_hostname squid

# Criando o cache do squid:

su - nobody -c "/usr/sbin/squid -z"

# Dando permissão ao usuário de execução do Squid no Winbind

chgrp nogroup /usr/local/samba/var/locks/winbindd_privileged

# Configurando o squid para usar autenticação:

vi /etc/squid.conf
Localiza o texto:

# TAG: auth_param

Remova as tags “auth_param basic” existentes e adicione o texto abaixo:

auth_param ntlm program /bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp
auth_param ntlm use_ntlm_negotiate off
auth_param ntlm children 10
auth_param ntlm max_challenge_reuses 0
auth_param ntlm max_challenge_lifetime 5 minutes
auth_param basic program /bin/ntlm_auth --helper-protocol=squid-2.5-basic
auth_param basic children 5
auth_param basic realm Proxy SMS
auth_param basic credentialsttl 2 hours

# Configurando o grupo InternetWebDefault para acesso a Internet

OBS: O grupo InternetWebDefault é um grupo do Active Directory.

Localize o texto:

# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS

E insira logo abaixo este texto:

# Acesso via autenticacao
external_acl_type NT_global_group children=10 %LOGIN /usr/local/squid/libexec/wbinfo_group.pl
acl ProxyUsers external NT_global_group InternetWebDefault
http_access allow ProxyUsers

# Horario Comercial
acl day time MTWHF 08:00-17:00

# Acesso via autenticacao no horario de meio dia.
acl ProxyUsersMeioDia external NT_global_group InternetWebMeioDia
http_access allow ProxyUsersMeioDia day

Correção do script wbinfo_group.pl.

vi /usr/local/squid/libexec/wbinfo_group.pl

sub check {
local($user, $group) = @_;
$groupSID = `wbinfo -n "$group"`;
$groupSID = substr($groupSID, 0, index($groupSID, ' ') + 1);
chop $groupSID;
$groupGID = `wbinfo -Y "$groupSID"`;
chop $groupGID;
return 'OK' if(`wbinfo -r \Q$user\E` =~ /^$groupGID$/m);
return 'ERR';
}

# Execute o squid

squid

# Configure o proxy no IE:

Proxy: IP do seu servidor de proxy
Porta 3128
Teste o acesso a Internet

# E acompanhe no log do squid:

tail -f /usr/local/squid/var/logs/access.log

O log contém entre outras informações o IP, a URL e usuário.

Pronto! O Squid está instalado.

Instalando o redirector (filtro de conteúdo)

O redirector é um filtro de conteúdo para o squid, que permite trabalhar com várias classes, aonde em cada classe podemos adicionar dominios, url e expressões. Também é possível criar exceções para usuários e ips. O redirector é totalmente escrito na linguagem C e usa o mysql como repositório de suas listas negras/brancas. O redirector é compativel com todas as listas do bigblacklist através do programa blackimp. O bigblacklist pode ser obtido em http://urlblacklist.com.

# Criação do banco de dados proxy

mysqladmin -u root create proxy

# Criação do usuário proxy (iremos usar a senha ‘proxy’)

mysql -u root proxy
mysql>
grant all on proxy.* to proxy@localhost identified by 'proxy';
quit
mysql -uproxy -pproxy proxy
mysql>
CREATE TABLE logg (
data date default NULL,
hora varchar(5) default NULL,
duracao int(10) default NULL,
ip varchar(14) default NULL,
resultado varchar(25) default NULL,
bytes int(10) default NULL,
metodo varchar(10) default NULL,
url varchar(100) default NULL,
usuario varchar(15) default NULL,
tipo varchar(20) default NULL,
dominio varchar(50) default NULL,
KEY idx_loggdata (data),
KEY loggusuario (usuario),
KEY loggip (ip)
);
CREATE TABLE redirector (
TABLENAME varchar(15) NOT NULL default '',
VALUE varchar(100) NOT NULL default '',
PRIMARY KEY (TABLENAME,VALUE)
);
quit

cd /usr/local/src
wget ftp://200.164.88.171/redirector-libmysql14.tar.gz
tar xvfz redirector-libmysql14.tar.gz
cd redirector

# Arquivo de configuração

cp redirector.cfg /etc

Edite este arquivo e troque o IP 172.16.220.35 para o IP do seu proxy.

vi /etc/redirector.cfg

# Instalação dos aplicativos

cp blackimp /sbin
cp squidlogtomysql /sbin
cp redirector /sbin

# Página que é exibida ao usuário que acessa conteúdo bloqueado.

cp err_access_denied.php /var/www/html

Configurando o squid para usar o redirector:

A sintaxe do redirector é:

redirector classe1, classe2, ..., classen

vi /etc/squid.conf

Localize o texto:

# TAG: redirect_program

E insira:

redirect_program /sbin/redirector ads audio-video blocked hacking jogos porn proxy

Isto, irá bloquear conteudo:

  • propaganda (ads)
  • audio/video (audio-video)
  • genérica (blocked)
  • material de hacker (hacking)
  • jogos (jogos)
  • pornográfico (porn)
  • sites de proxy anônimos (proxy)









# Reconfigure o squid

squid -k reconfigure

Carregando as listas negras (do bigblacklist):

wget http://urlblacklist.com/cgi-bin/commercialdownload.pl?type=download&file=bigblacklist

tar xvfz bigblacklist.tar.gz
# Listas negras

blackimp adsd blacklists/ads/domains
blackimp adsu blacklists/ads/urls
blackimp audio-videod blacklists/audio-video/domains
blackimp audio-videou blacklists/audio-video/urls
blackimp hackingd blacklists/hacking/domains
blackimp hackingu blacklists/hacking/urls
blackimp jogosd blacklists/games/domains
blackimp jogosd blacklists/onlinegames/domains
blackimp jogosu blacklists/onlinegames/urls
blackimp pornd blacklists/porn/domains
blackimp pornu blacklists/porn/urls
blackimp proxyd blacklists/proxy/domains
blackimp proxyu blacklists/proxy/urls
blackimp adsd blacklists/ads/domains
blackimp adsu blacklists/ads/urls
blackimp audio-videod blacklists/audio-video/domains
blackimp audio-videou blacklists/audio-video/urls
blackimp hackingd blacklists/hacking/domains
blackimp hackingu blacklists/hacking/urls
blackimp jogosd blacklists/games/domains
blackimp jogosd blacklists/onlinegames/domains
blackimp jogosu blacklists/onlinegames/urls
blackimp pornd blacklists/porn/domains
blackimp pornu blacklists/porn/urls
blackimp proxyd blacklists/proxy/domains
blackimp proxyu blacklists/proxy/urls

# Expressões

mysql -uproxy -pproxy proxy < redirector.sql

Pronto! Seu squid está configurado com filtro de conteúdo.

Teste novamente o acesso a Internet, acessando:
http://www.playboy.com.br

Se a página de erro foi exibida, tudo Ok!

# Criando um usuário privilegiado

Ex: Fazer com que o usuário alvaromo não sofra restrições de conteúdo.

vi /etc/redirector.cfg
userpriv=alvaromo
# Reconfigure o squid

squid -k reconfigure

Teste novamente o acesso a Internet, acessando:
http://www.playboy.com.br

Instalando o squidlogtomysql

O squidlogtomysql é um programa que importa o arquivo access.log, que é o log de acesso gerado pelo squid para banco de dados mysql.

Sintaxe do squidlogtomysql:

squidlogtomysql

# Primeiro, vamos rotacionar o log para não usar o corrente:

squid -k rotate

# Executando

squidlogtomysql /usr/local/squid/var/logs/access.log.0

Observe quantas linhas foram importadas.

# Removendo o log

rm -f /usr/local/squid/var/logs/access.log.0

Criando um agendamento para a importação:

vi /etc/cron.hourly/import_squid_log_mysql

#!/bin/sh
#
# Import Squid Log To MySQL
#
squid -k rotate
cd /usr/local/squid/var/logs
echo Esperando rotacao...
while true; do
if [ -f access.log.0 ]; then
break;
fi
done
squidlogtomysql access.log.0
rm -f *.log.0
echo Importacao finalizada!
#fim do arquivo

chmod 755 /etc/cron.hourly/import_squid_log_mysql

Pronto! Os logs do squid serão importados para o mysql de 1h em 1h.

Instalando a aplicação de relatórios

cd /var/www/html
wget ftp://200.164.88.171/proxy-report.tar.gz
tar xvfz proxy-report.tar.gz

OBS:
Edite o arquivo proxy/top.php e coloque o nome de sua empresa.

vi proxy/top.php

Altere o texto Titulo/Nome da Sua Empresa a seu gosto!

Acessando os relatórios via IE:
http://ipdoseuproxy/proxy

Ex:
http://172.16.220.35/proxy
Nesta aplicação estão disponíveis relatórios de uso e acesso à edição da lista negra.
  • Lista Negra
  • Log de Acesso
  • Top10 Download
  • Top10 Dominio por Trafego de Banda
  • Top10 Dominio por Quantidade de Acesso
  • Top10 Usuario por Tempo de Uso
  • Top10 Usuario por Trafego de Banda
  • Top10 Usuario por Quantidade de Aceso
  • Dominio do Usuario por Trafego de Banda








Por exemplo:
Vamos remover o uol.com.br da lista negra da classe JOGOS

  1. Acesse a opção lista negra
  2. Selecione a tabela jogosd (tabela de dominios para jogos)
  3. Digite o valor uol.com.br no campo valor
  4. Clique no botão
  5. Clique no item excluir
  6. Confirme a exclusão.
OBS:
Não precisa reiniciar ou re-configurar o squid, já fica valendo.

Configurando autenticação da aplicação através do usuário manager

vi /etc/httpd/conf/httpd.conf

Adicione o texto abaixo:

allowoverride AuthConfig
AuthType Basic
AuthName "Proxy - Autenticação de Usuário"
AuthUserFile /etc/httpd/passwd
require user manager

service httpd restart

Controle de Banda

Vamos usar o recurso de delay pools do próprio squid. Neste exemplo, iremos usar o squid para usar somente 512k em horário comercial e 64k para certos downloads (definidos pela acl limited) em horário comercial.
vi /etc/squid.conf

# Extensões com limite de 64k
acl limited url_regex -i .exe .mp3 .vqf .tar.gz .gz .rpm .zip .rar .avi .mpeg .mpe .mpg .qt .ram .rm .iso .raw .wav .mov .iso
delay_pools 3

# Classe 1 - acesso a Intenet em horario comercial
delay_class 1 1
delay_parameters 1 64000/64000
delay_access 1 allow day !limited
delay_access 1 deny !day
delay_access 1 allow !limited

# Classe 2 - downloads em horario de expediente
delay_class 2 1
delay_parameters 2 8000/8000
delay_access 2 allow day limited
delay_access 2 deny !day
delay_access 2 allow limited

# Classe 3 - acesso a Internet fora do horario comercial
delay_class 3 1
delay_parameters 3 -1/-1
delay_access 3 allow !day
delay_access 3 deny day
delay_access 3 allow all

squid –k reconfigure

Pronto! Controle de banda configurado.

Fim do guia!

Dever de casa:
  1. Configurar o squid como serviço.
Comentário do autor: redirector, squidlogtomysql, blackimp e a aplicação PHP de relatórios são de minha autoria.
Última Atualização ( 14 de abril de 2006 )
 
< Anterior   Próximo >
 
Top! Top!