Squid-Cache.org.br
 A Casa Brasileira do Squid
Advertisement  
    
Thursday, September 09 2010  
Início arrow Artigos arrow Instalação arrow Squid Plus com AD, Redirector, Controle de Banda e Relatorios
Menu Principal
Início
Artigos
Dicas
Links
Cursos
Contato
Suporte
Publicação
Patrocínio:  
 
 
 
 
Squid Plus com AD, Redirector, Controle de Banda e Relatorios Imprimir E-mail
Avaliação do Usuário: / 12
PiorMelhor 
Autoria de Alvaro Mendes de Oliveira   
31 de março de 2006
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.

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 –UadministratorEx: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 <arquivo de log>

# 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 <pesquisar>
  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:
<Directory "/var/www/html/proxy">
    allowoverride AuthConfig
    AuthType Basic
    AuthName "Proxy - Autenticação de Usuário"
    AuthUserFile /etc/httpd/passwd
    require user manager
</Directory>
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ários
Muito Bom
Escrito por _cabelo_ em 2006-06-22 11:06:10
Eu só não entendi uma parte na hora da criação do usuário manager lá no inicio eu tive digitar manager sem o (*) pediu uma senha eu digitei só não sei se deu certo  
e meu service httpd não start nem a pau 
 
valew  
Continue contribuiindo com a comunidade linux
Controle de acesso para MSN
Escrito por mpsfox em 2006-12-05 18:43:03
tenho o Squid com autenticacao no W2003 conforme acima funcionando blz. 
Mas tive a necessidade de bloquear alguns usuarios somente o MSN 
 
entao coloquei as seguintes linhas no squid.conf 
 
acl MsnUsers external NT_global_group InternetMsn 
acl Msn1 dstdomain loginnet.passport.com 
acl Msn2 url_regex -i gateway.dll 
... outros modos de bloqueios 
 
http_access deny Msn1 !MsnUsers 
http_access deny Msn2 !MsnUsers 
... 
 
http_acess allow ProxyUsers 
 
Porem esta falhando. 
Pois caso coloque no msn o nome do usuario sem a senha, o proxy aceita e deixa conectar ao Msn. 
Me parece que depois q ele autentica no IE e passa, nao verifica novamente os usuarios pra controle do Msn. 
 
Alguem tem alguma solucao, ou correcao para algo que eu esteja fazendo errado ?

Somente usuários registrados podem escrever comentários.
Por favor faça o login ou registre-se.

Powered by AkoComment 2.0!

Última Atualização ( 14 de abril de 2006 )
< Anterior
10 Mais populares
10 Últimas Postagens


Usuários Online
Nós temos 126 visitantes online
Estatísticas
Membros: 2187
Notícias: 133
Links: 35
Visitantes: 1365831

Login
Nome de Usuário

Senha

Lembrar login
Esqueceu sua senha?
Sem conta? Crie uma


 



 

Colaborar é preciso!