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.gztar 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.
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
# 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
# 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
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.gztar 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/proxyEx: http://172.16.220.35/proxyNesta 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
- Acesse a opção lista negra
- Selecione a tabela jogosd (tabela de dominios para jogos)
- Digite o valor uol.com.br no campo valor
- Clique no botão <pesquisar>
- Clique no item excluir
- 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:- Configurar o squid como serviço.
|
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! |