| Guia de Instalação do Squid Plus no Mandriva Linux |
|
|
|
| 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:
Resumo: Perfil de Instalação (com rede, Internet Ok) (não é necessário X)
Instale o Mandriva somente com os seguintes pacotes (Mandriva DVD):
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:
Neste exemplo o nome NETBIOS do:
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:
# 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/domainsblackimp 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 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.
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:
|
|
| Última Atualização ( 14 de abril de 2006 ) |
| < Anterior | Próximo > |
|---|







