Differences

This shows you the differences between two versions of the page.

Link to this comparison view

squid_ad_win_2003_win_2008_win_2012_dns_bind_sarg_mysar_msn-proxy_debian_squeeze_pt_br [2017/09/05 12:18] (current)
Line 1: Line 1:
 +====== Squid + AD Win 2003/Win 2008/Win 2012 + DNS Bind + Sarg + MySar + MSN-Proxy + Debian Squeeze ======
  
 +
 +Qual a ideia principal desse HOW TO demostrar a instalação do squid e configurar ele para trabalhar integrado com o AD, também vou demostrar a instalação e configuração de algumas ferramentas de apoio como sarg que nós traz os relatórios de acesso, vou mostrar também o MySar que é uma ferramenta que gera relatórios de acesso do squid e armazena os dados de acesso no MySQL e por ultimo vou mostrar a instalação e configuração do MSN-Proxy ferramenta de controle de acesso de MSN. Vou abordar a instalação de um servidor DNS enjaulado somente para fazer cache de consultas DNS para agilizar para o nosso squid e as consultas para o domínio vamos criar uma zona forward para direcionar para o AD. Como geralmente trabalhamos com ambientes heterogêneos ou seja, trabalhando com um ambiente multi-plataforma e é o que eu vou mostrar nesse HOW TO. OBS: Não vou mostrar como criar um grupo e inserir usuários no AD, eu testei essa implementação com o Windows Server 2003, Windows Server 2008 e Windows Server 2012 RC.
 +
 +Prepare o seu sistema com o seguinte script http://​wiki.douglasqsantos.com.br/​doku.php/​confinicialsqueeze_en para que não falte nenhum pacote ou configuração.
 +
 +  - Endereço Ip do Proxy:** 10.13.0.254**
 +  - Endereço Ip do Ad PDC: **10.13.0.248**
 +  - Endereço Ip do Ad BDC: **10.13.0.249**
 +  - Domínio utilizado: **douglasqsantos.com.br**
 +  - Habilitar o dns do Windows a fazer atualizações seguras e não seguras, pois vamos inserir o debian no domínio.
 +
 + ​Grupos que precisam ser criados no AD, não esqueça de inserir os usuários nos grupos ;)
 +  - **ti-admin**
 +  - **matriz-diretoria**
 +  - **matriz-gerencia**
 +  - **matriz-administracao**
 +  - **matriz-logistica**
 +
 +
 +Vamos começar acertando algumas variáveis do sistema
 +<sxh bash>
 +
 +export DEBIAN_PRIORITY=critical
 +export DEBIAN_FRONTEND=noninteractive
 +</​sxh>​
 +
 +Agora vamos instalar os pacotes necessários para o samba ser inserido no domínio AD
 +<sxh bash>
 +
 +aptitude update && aptitude dist-upgrade -y
 +aptitude install -y samba samba-common smbclient winbind krb5-config libpam-krb5
 +</​sxh>​
 +
 +Agora vamos voltar as variáveis do ambiente ao normal
 +<sxh bash>
 +
 +unset DEBIAN_PRIORITY
 +unset DEBIAN_FRONTEND
 +</​sxh>​
 +
 +Vamos agora fazer um backup do arquivo /​etc/​resolv.conf
 +<sxh bash>
 +
 +cp -Rfa /​etc/​resolv.conf{,​.bkp}
 +</​sxh>​
 +
 +Agora vamos ajustar o arquivo /​etc/​resolv.conf
 +<sxh bash>
 +
 +vim /​etc/​resolv.conf
 +#Domínio e Ip do servidor AD
 +search douglasqsantos.com.br
 +nameserver 10.13.0.248
 +nameserver 10.13.0.249
 +</​sxh>​
 +
 +Agora vamos testar se o servidor ad esta respondendo corretamente
 +<sxh bash>
 +
 +nslookup douglasqsantos.com.br
 +Server: ​        ​10.13.0.248
 +Address: ​       10.13.0.248#​53
 +
 +Name:   ​douglasqsantos.com.br
 +Address: 10.13.0.248
 +</​sxh>​
 +
 +Agora vamos atualizar o relógio do sistema
 +<sxh bash>
 +
 +ntpdate -u ntp.usp.br
 +</​sxh>​
 +
 +Agora vamos fazer backup do arquivo de configuração do cliente kerberos
 +<sxh bash>
 +
 +cp -Rfa /​etc/​krb5.conf{,​.bkp}
 +</​sxh>​
 +
 +Agora vamos configurar o arquivo /​etc/​krb5.conf
 +<sxh bash>
 +
 +vim /​etc/​krb5.conf
 +[libdefaults]
 +default_realm = DOUGLASQSANTOS.COM.BR
 +krb4_config = /​etc/​krb.conf
 +krb4_realms = /​etc/​krb.realms
 +kdc_timesync = 1
 +ccache_type = 4 
 +forwardable = true
 +proxiable = true
 +v4_instance_resolve = false
 +v4_name_convert = {
 +host = {
 +rcmd = host
 +ftp = ftp
 +}
 +plain = {
 +something = something-else
 +}
 +}
 +fcc-mit-ticketflags = true
 +[realms]
 +DOUGLASQSANTOS.COM.BR = {
 +kdc = 10.13.0.248
 +kdc = 10.13.0.249
 +admin_server = 10.13.0.248:​749
 +default_server = 10.13.0.248
 +}
 +[domain_realm]
 +.douglasqsantos.com.br=DOUGLASQSANTOS.COM.BR
 +douglasqsantos.com.br=DOUGLASQSANTOS.COM.BR
 +[login]
 +krb4_convert = true
 +krb4_get_tickets = false
 +[kdc]
 +profile = /​etc/​krb5kdc/​kdc.conf
 +[appdefaults]
 +pam = {
 +debug = false
 +ticket_lifetime = 36000
 +renew_lifetime = 36000
 +forwardable = true
 +krb4_convert = false
 +}
 +[logging]
 +default = file:/​var/​log/​krb5libs.log
 +kdc = file:/​var/​log/​krb5kdc.log
 +admin_server = file:/​var/​log/​kadmind.log ​                                 ​
 +</​sxh>​
 +
 +
 +Agora vamos acertar o arquivo /​etc/​security/​limits.conf para não ficar mostrando erro no samba
 +
 +<sxh bash>
 +
 +vim /​etc/​security/​limits.conf
 +[...]
 +#colocar no final do arquivo
 +root hard nofile 131072
 +root soft nofile 65536
 +mioutente hard nofile 32768
 +mioutente soft nofile 16384
 +</​sxh>​
 +
 +Agora vamos fazer um backup do arquivo de configuração do samba
 +<sxh bash>
 +
 +cp -Rfa /​etc/​samba/​smb.conf{,​.bkp}
 +</​sxh>​
 +
 +Agora vamos a configuração do samba deixe o arquivo como no exemplo
 +<sxh bash> ​
 +
 +vim /​etc/​samba/​smb.conf
 +[global]
 +  workgroup = DOUGLASQSANTOS
 +  realm = DOUGLASQSANTOS.COM.BR
 +  netbios name = DEBIAN
 +  server string = DEBIAN
 +  security = ADS
 +  auth methods = winbind
 +  kerberos method = secrets and keytab
 +  winbind refresh tickets = yes
 +  socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
 +  load printers = No
 +  printing = bsd
 +  printcap name = /dev/null
 +  disable spoolss = Yes
 +  local master = No
 +  domain master = No
 +  winbind cache time = 15
 +  winbind enum users = Yes
 +  winbind enum groups = Yes
 +  winbind use default domain = Yes
 +  idmap config * : range = 10000-15000
 +  idmap config * : backend = tdb
 +  idmap uid = 10000-15000
 +  idmap gid = 10000-15000
 +  template shell = /bin/bash
 +  template homedir = /home/%U
 +
 +</​sxh>​
 +
 +Vamos agora fazer um acerto no arquivo /​etc/​init.d/​winbind para que o winbind não fique fazendo cache das consultas no ad
 +<sxh bash>
 +
 +vim /​etc/​init.d/​winbind
 +[...]
 +#na linha 36
 +start-stop-daemon --start --quiet --oknodo --exec $DAEMON -- no-caching #​\$WINBINDD_OPTS
 +</​sxh>​
 +
 +Agora temos que fazer mais um acerto agora precisamos o ntlm_auth precisa de privilegio do winbind para funcionar então vamos adicionar o squid no grupo do winbind.
 +
 +<sxh bash>
 +
 +gpasswd -a proxy winbindd_priv ​
 +Adicionando usuário proxy ao grupo winbindd_priv
 +</​sxh>​
 +
 +Vamos fazer um backup do arquivo /​etc/​nsswitch.conf
 +
 +<sxh bash>
 +
 +cp /​etc/​nsswitch.conf{,​.bkp}
 +</​sxh>​
 +
 +Agora temos que acertar o arquivo /​etc/​nsswitch.conf que controla aonde vai ser consultado usuários e senhas deixe o arquivo como abaixo.
 +
 +<sxh bash>
 +
 +vim /​etc/​nsswitch.conf
 +passwd: ​        ​compat winbind
 +group: ​         compat winbind
 +shadow: ​        ​compat
 + 
 +hosts: ​         files dns
 +networks: ​      files
 + 
 +protocols: ​     db files
 +services: ​      db files
 +ethers: ​        db files
 +rpc:            db files
 + 
 +netgroup: ​      nis
 +</​sxh>​
 +
 +Agora vamos reiniciar o samba e o winbind para eles pegarem a nova configuração
 +
 +<sxh bash>
 +
 +/​etc/​init.d/​samba restart
 +/​etc/​init.d/​winbind restart
 +</​sxh>​
 +
 +Agora temos que inserir a maquina no domínio AD
 +<sxh bash>
 +
 +net ads join douglasqsantos.com.br -U administrator
 +Enter administrator'​s password: senha
 +Using short domain name -- DOUGLASQSANTOS
 +Joined '​DEBIAN'​ to realm '​douglasqsantos.com.br'​
 +</​sxh>​
 +
 +
 +Caso precise retirar a maquina do domínio da forma correta (Excluindo as ligações dela no AD), podemos fazer da seguinte forma
 +<sxh bash>
 +net ads leave douglasqsantos.com.br -U Administrator
 +Enter Administrator'​s password:
 +Deleted account for '​DEBIAN'​ in realm '​DOUGLASQSANTOS.COM.BR'​
 +</​sxh>​
 +
 +Agora temos que reiniciar os serviços novamente
 +
 +<sxh bash>
 +
 +/​etc/​init.d/​samba restart
 +/​etc/​init.d/​winbind restart
 +</​sxh>​
 +
 +Agora já podemos testar a conexão do samba com o AD
 +
 +<sxh bash>
 +
 +wbinfo -t
 +checking the trust secret for domain DOUGLASQSANTOS via RPC calls succeeded
 +</​sxh>​
 +
 +Agora vamos checar os grupos que temos no domínio.
 +
 +<sxh bash>
 +
 +wbinfo -g
 +winrmremotewmiusers__
 +domain computers
 +domain controllers
 +schema admins
 +enterprise admins
 +cert publishers
 +domain admins
 +domain users
 +domain guests
 +group policy creator owners
 +ras and ias servers
 +allowed rodc password replication group
 +denied rodc password replication group
 +read-only domain controllers
 +enterprise read-only domain controllers
 +cloneable domain controllers
 +dnsadmins
 +dnsupdateproxy
 +ti-admin
 +matriz-diretoria
 +matriz-gerencia
 +matriz-administracao
 +matriz-logistica
 +</​sxh>​
 +
 +Agora vamos chegar os usuários do domínio
 +<sxh bash>
 +
 +wbinfo -u
 +DEBIAN\nobody
 +DEBIAN\douglas
 +administrador
 +convidado
 +krbtgt
 +douglas
 +</​sxh>​
 +
 +Fazendo backup dos arquivos da pam
 +
 +<sxh bash>
 +
 +cp -Rfa /​etc/​pam.d{,​.bkp}
 +</​sxh>​
 +
 +Vamos agora acertar a pam para que o sistema pegue primeiro o usuário e senha local e depois do AD caso precisarmos utilizar os usuários locais arquivo da pam /​etc/​pam.d/​common-password
 +
 +<sxh bash>
 +
 +vim /​etc/​pam.d/​common-password
 +password ​       sufficient ​                     pam_unix.so
 +password ​       requisite ​                      ​pam_krb5.so minimum_uid=1000
 +password ​       [success=2 default=ignore] ​     pam_unix.so obscure use_authtok try_first_pass sha512
 +password ​       [success=1 default=ignore] ​     pam_winbind.so use_authtok try_first_pass
 +password ​       requisite ​                      ​pam_deny.so
 +password ​       required ​                       pam_permit.so
 +</​sxh>​
 +
 +Outra opção interessante que podemos utilizar é que podemos logar via ssh utilizando os usuários do AD porém temos que fazer mais um acerto na pam em /​etc/​pam.d/​common-session
 +<sxh bash>
 +
 +vim /​etc/​pam.d/​common-session
 +session [default=1] ​                    ​pam_permit.so
 +session requisite ​                      ​pam_deny.so
 +session required ​                       pam_permit.so
 +session required ​                       pam_unix.so ​
 +session optional ​                       pam_winbind.so ​
 +session optional ​                       pam_mkhomedir.so skel=/​etc/​skel umask=0027
 +</​sxh>​
 +
 +Reinicie o servidor para ele carregar todas as novas configurações
 +<sxh bash>
 +
 +reboot
 +</​sxh>​
 +
 +**Agora vamos instalar o DNS Bind **
 +
 +Vamos instalar os pacotes necessários
 +<sxh bash>
 +
 +aptitude install bind9 dnsutils -y
 +</​sxh>​
 +
 +Agora vamos para o bind para podemos efetuar as modificações necessárias.
 +<sxh bash>
 +
 +/​etc/​init.d/​bind9 stop
 +</​sxh>​
 +
 +Agora vamos criar os diretórios necessários para a jaula
 +<sxh bash>
 +
 +mkdir -p /​var/​lib/​named/​etc
 +mkdir -p /​var/​lib/​named/​dev
 +mkdir -p /​var/​lib/​named/​var/​log
 +mkdir -p /​var/​lib/​named/​var/​cache/​bind
 +mkdir -p /​var/​lib/​named/​var/​run/​bind/​run
 +mknod /​var/​lib/​named/​dev/​null c 1 3
 +mknod /​var/​lib/​named/​dev/​random c 1 8
 +</​sxh>​
 +
 +Agora vamos acertar as permissões da jaula
 +<sxh bash>
 +
 +chmod 666 /​var/​lib/​named/​dev/​{null,​random}
 +chown -R bind:bind /​var/​lib/​named/​var/​*
 +</​sxh>​
 +
 +Agora vamos ajudar a localização dos diretórios
 +<sxh bash>
 +
 +mv /etc/bind /​var/​lib/​named/​etc
 +ln -sf /​var/​lib/​named/​etc/​bind /etc/bind
 +chown -R bind:bind /​var/​lib/​named/​etc/​bind
 +</​sxh>​
 +
 +Agora vamos acertar o arquivo default do bind para que o bind reconheça a jaula
 +<sxh bash>
 +
 +vim /​etc/​default/​bind9
 +RESOLVCONF=yes
 +OPTIONS="​-u bind -t /​var/​lib/​named"​
 +</​sxh>​
 +
 +Vamos agora ajustar o /​etc/​resolv.conf ​
 +<sxh bash>
 +
 +vim /​etc/​resolv.conf
 +domain douglasqsantos.com.br
 +nameserver 127.0.0.1
 +</​sxh>​
 +
 +Agora vamos acertar o arquivo de controle da versão e acesso ao dns
 +<sxh bash>
 +
 +vim /​etc/​bind/​named.conf.options
 +#/​etc/​bind/​named.conf.options
 +options {
 + ​directory "/​var/​cache/​bind";​
 + ​auth-nxdomain no;
 + ​listen-on-v6 { any; };
 + ​listen-on { 127.0.0.1/​32;​ 10.13.0.0/​24;​ };
 + ​allow-query { any; };
 + ​recursion yes;
 + ​version "Nao Disponivel";​
 +};
 + 
 +#​Controles ​
 +include "/​etc/​bind/​rndc.key";​
 +controls {
 +        inet 127.0.0.1 port 953 allow { 127.0.0.1; } keys { rndc-key; };
 +};
 + 
 +#LOGS
 +logging {
 + ​channel xfer-log {
 + file "/​var/​log/​named.log";​
 + ​print-category yes;
 + ​print-severity yes;
 + ​print-time yes;
 + ​severity info;
 + };
 + ​category xfer-in { xfer-log; };
 + ​category xfer-out { xfer-log; };
 + ​category notify { xfer-log; };
 + 
 + ​channel update-debug {
 + file "/​var/​log/​named-update-debug.log";​
 + ​severity ​ debug 3;
 + ​print-category yes;
 + ​print-severity yes;
 + ​print-time ​     yes;
 + };
 + ​channel security-info ​   {
 + file "/​var/​log/​named-auth-info.log";​
 + ​severity ​ info;
 + ​print-category yes;
 + ​print-severity yes;
 + ​print-time ​     yes;
 + };
 + ​category update { update-debug;​ };
 + ​category security { security-info;​ };
 + 
 + };
 +</​sxh>​
 +
 +Agora vamos criar a nossa zona forward ​
 +<sxh bash>
 +
 +vim /​etc/​bind/​named.conf.default-zones
 +[...]
 +
 +#No Final do arquivo
 +zone "​douglasqsantos.com.br"​ {
 +        type forward;
 +        forwarders { 10.13.0.248;​ 10.13.0.249;​ };
 +};
 +
 +</​sxh>​
 +
 +Agora precisamos criar o arquivo que o bind precisa porém não cria 
 +<sxh bash>
 +
 +touch /​var/​lib/​named/​var/​cache/​bind/​managed-keys.bind
 +</​sxh>​
 +
 +Agora já podemos iniciar o nosso bind
 +<sxh bash>
 +
 +/​etc/​init.d/​bind9 start
 +</​sxh>​
 +
 +Vamos analisar os logs para ver se não temos nada de errado
 +<sxh bash>
 +
 +tail -f /​var/​log/​syslog ​
 +Jun 23 21:13:40 debian named[8212]:​ listening on IPv4 interface eth0, 10.13.0.254#​53
 +Jun 23 21:13:40 debian named[8212]:​ generating session key for dynamic DNS
 +Jun 23 21:13:40 debian named[8212]:​ set up managed keys zone for view _default, file '​managed-keys.bind'​
 +Jun 23 21:13:40 debian named[8212]:​ command channel listening on 127.0.0.1#​953
 +Jun 23 21:13:40 debian named[8212]:​ zone 0.in-addr.arpa/​IN:​ loaded serial 1
 +Jun 23 21:13:40 debian named[8212]:​ zone 127.in-addr.arpa/​IN:​ loaded serial 1
 +Jun 23 21:13:40 debian named[8212]:​ zone 255.in-addr.arpa/​IN:​ loaded serial 1
 +Jun 23 21:13:40 debian named[8212]:​ zone localhost/​IN:​ loaded serial 2
 +Jun 23 21:13:40 debian named[8212]:​ managed-keys-zone ./IN: loaded serial 0
 +Jun 23 21:13:40 debian named[8212]:​ running
 +</​sxh>​
 +
 +
 +Agora vamos consultar a nossa zona do AD 
 +<sxh bash>
 +
 +nslookup douglasqsantos.com.br
 +Server: ​  ​127.0.0.1
 +Address: ​ 127.0.0.1#​53
 +
 +Non-authoritative answer:
 +Name: douglasqsantos.com.br
 +Address: 10.13.0.248
 +</​sxh>​
 +
 +Tudo certinho com o DNS com isso a navegação da web vai ser resolvida pelo bind e a autenticação vai ser resolvida pelo AD ;) 
 +
 +Vamos precisar adicionar o repositório do wheezy para termos a versão mais atual do squid, pois até a versão 3.1.19 temos problemas de lentidão e outros problemas que prejudicam a navegação.
 +
 +<sxh bash> ​
 +
 +vim /​etc/​apt/​sources.list
 +#​REPOSITORIO PARA DO WHEEZY
 +deb ftp://​ftp.br.debian.org/​debian wheezy main contrib non-free
 +deb-src ftp://​ftp.br.debian.org/​debian wheezy main contrib non-free
 +</​sxh>​
 +
 +
 +
 +**Agora vamos a instalação e configuração do squid**
 +<sxh bash>
 +
 +aptitude update && aptitude install squid3 squid3-common squid3-cgi -y
 +</​sxh>​
 +
 +**Comentar as linhas do arquivo "/​etc/​apt/​sources.list"​ adicionadas para o download do squid.**
 +
 +
 +Vamos fazer um backup do arquivo de configuração do /​etc/​squid3/​squid.conf
 +<sxh bash>
 +
 +cp -Rfa /​etc/​squid3/​squid.conf{,​.bkp}
 +</​sxh>​
 +
 +Agora vamos a configuração do squid
 +<sxh apache>
 +
 +vim /​etc/​squid3/​squid.conf
 +#Porta padrão do proxy
 +http_port 3128
 +
 +#Endereco de E-mail do administrador do proxy
 +cache_mgr suporte@douglasqsantos.com.br
 +
 +#Nao faz cache de dados de formularios html,em de resultados de programas cgi                      ​
 +#​hierarchy_stoplist cgi-bin ?
 +
 +#Cria uma access control list, baseando-se na url e utilizando exp. regulares nesta situacao ​  
 +#foi criado uma exp. regular para cgi e ?.        ​
 +acl QUERY urlpath_regex cgi-bin \?
 +
 +#Nao faz cache da acl QUERY                        ​
 +cache deny QUERY
 +
 +#Define o tamonho maximo de um objeto para seu armazenamento no cache local                 
 +maximum_object_size 4096 KB
 +
 +#Define o tamanho minimo de um objeto para seu armazenamento no cache local                 
 +minimum_object_size 0 KB
 +
 +#Define o tamanho maximo de um objeto para seu armazenamento no cache de memoria ​           ​
 +maximum_object_size_in_memory 64 KB
 +
 +#Definicao da quantidade de memoria ram a ser alocada para cache                                ​
 +cache_mem 60 MB
 +
 +#Para nao bloquear downloads ​                      
 +quick_abort_min -1 KB
 +
 +# Resolve um problema com conexões persistentes que ocorre com certos servidores,
 +# e que provoca delays em nosso cache.
 +detect_broken_pconn on
 +
 +# Provoca um ganho de performance ao usar conexões Pipeline (requisições em paralelo)
 +pipeline_prefetch on
 +
 +
 +#Para cache de fqdn
 +fqdncache_size 1024
 +
 +#Tempo de atualizacao dos objetos relacionados aos prot ftp, gopher e http.  ​
 +refresh_pattern ^ftp:// 1440 20% 10080
 +refresh_pattern ^gopher: 1440 0% 1440
 +refresh_pattern -i (/​cgi-bin/​|\?​) 0 0% 0
 +refresh_pattern . 0 20% 4320
 +
 +#Definicao da porcentagem do uso do cache que fara o squid descartar os arquivos mais antigos ​                                   ​
 +cache_swap_low 90
 +cache_swap_high 95
 +
 +#Logs   
 +access_log /​var/​log/​squid3/​access.log squid
 +cache_log /​var/​log/​squid3/​cache.log
 +cache_store_log /​var/​log/​squid3/​store.log
 +
 +#Define a localizacao do cache de disco, tamanho, qtd de diretorios pai, e por fim a qtd de dir filhos ​                  
 +cache_dir aufs /​var/​spool/​squid3 100 16 256
 +
 +#Controle do arquivo de Log
 +logfile_rotate 10
 +
 +#Arquivo que contem os nomes de maquinas ​          
 +hosts_file /etc/hosts
 +
 +#Maquinas que nao precisaram de autenticacao ​  
 +acl liberados src "/​etc/​squid3/​regras/​liberados"​
 +http_access allow liberados
 +
 +#liberar o acesso ao site da caixa que está com problemas ​
 +acl caixa dstdomain caixa.gov.br
 +always_direct allow caixa
 +cache deny caixa
 +
 +#MACS que estão liberados.
 +acl macliberado ​  arp "/​etc/​squid3/​regras/​mac_liberado"​
 +http_access allow macliberado
 +
 +
 +#### Autenticao no Windows 2008 via WINBIND
 +auth_param ntlm program /​usr/​bin/​ntlm_auth --helper-protocol=squid-2.5-ntlmssp
 +auth_param ntlm children 30
 +auth_param basic program /​usr/​bin/​ntlm_auth --helper-protocol=squid-2.5-basic
 +auth_param basic children 5
 +auth_param basic realm Squid proxy server
 +auth_param basic credentialsttl 2 hours
 +external_acl_type ad_group ttl=600 children=35 %LOGIN /​usr/​lib/​squid3/​wbinfo_group.pl
 +
 +### ACL Padroes
 +acl manager proto cache_object
 +acl localhost src 127.0.0.1/​32
 +acl SSL_ports port 443 # https
 +acl SSL_ports port 563 # snews
 +acl SSL_ports port 873 # rsync
 +acl Safe_ports port 80 # http
 +acl Safe_ports port 21 # ftp
 +acl Safe_ports port 443 563 # https, snews
 +acl Safe_ports port 70 # gopher
 +acl Safe_ports port 210 # wais
 +acl Safe_ports port 1025-65535 # unregistered ports
 +acl Safe_ports port 280 # http-mgmt
 +acl Safe_ports port 488 # gss-http
 +acl Safe_ports port 591 # filemaker
 +acl Safe_ports port 777 # multiling http
 +acl Safe_ports port 631 # cups
 +acl Safe_ports port 873 # rsync
 +acl Safe_ports port 901 # SWAT
 +acl Safe_ports port 1080
 +acl Safe_ports port 1863
 +acl Safe_ports port 5222 # gTalk
 +acl Safe_ports port 5223 # gTalk
 +acl Safe_ports port 8443 # https
 +acl Safe_ports port 47057 # torrent
 +
 +acl purge method PURGE
 +acl CONNECT method CONNECT
 +
 +http_access allow manager localhost
 +http_access deny manager
 +http_access allow purge localhost
 +http_access deny purge
 +http_access deny !Safe_ports
 +http_access deny CONNECT !SSL_ports
 +
 +# Seguranca (Protecao do Cache)
 +acl manager proto cache_object
 +
 +#Limita conexeos HTTP                              ​
 +acl connect_abertas maxconn 8
 +
 +#sites que não serão feito cache geralmente bancos ​                 ​
 +acl NOCACHE url_regex "/​etc/​squid3/​regras/​direto"​ \?
 +no_cache deny NOCACHE
 +
 +#​-----------------------------------------------------------------------------------#​
 +#       Nome ACL                TIPO                    Nome Grupo AD               #
 +#​-----------------------------------------------------------------------------------#​
 +acl    ti-admin ​                ​external ad_group ​         ti-admin
 +acl    matriz-diretoria ​        ​external ad_group ​         matriz-diretoria
 +acl    matriz-gerencia ​         external ad_group ​         matriz-gerencia
 +acl    matriz-administracao ​    ​external ad_group ​         matriz-administracao
 +acl    matriz-logistica ​        ​external ad_group ​         matriz-logistica
 +
 +# Whitelists / Blacklists
 +acl downloads ​        ​urlpath_regex -i "/​etc/​squid3/​regras/​downloads"​
 +acl sites-liberados ​  ​url_regex ​    -i "/​etc/​squid3/​regras/​sites_liberados"​
 +acl sites-proibidos ​  ​url_regex ​    -i "/​etc/​squid3/​regras/​sites_proibidos"​
 +acl sites-bloqueados ​ url_regex ​    -i "/​etc/​squid3/​regras/​sites_bloqueados"​
 +acl sites-gerencia ​   url_regex ​    -i "/​etc/​squid3/​regras/​sites_gerencia"​
 +acl sites-administracao url_regex ​  -i "/​etc/​squid3/​regras/​sites_administracao"​
 +acl sites-logistica ​  ​url_regex ​    -i "/​etc/​squid3/​regras/​sites_logistica"​
 +
 +#Bloquear determinados usuários autenticados
 +acl usu_bloqueados proxy_auth "/​etc/​squid3/​regras/​usu_bloqueados"​
 +
 +#Controle de acesso por horário aqui, vamos liberar o acesso no horário do almoço
 +#aqui os usuário vão poder acessar alguns sites diferenciados entre as 12:00 até as 13:00
 +acl almoco time MTWHFAS 12:00-13:00
 +
 +#Agora vamos criar uma regra para garantir que os usuários que vão acessar no almoço estão autenticados
 +acl autenticados proxy_auth REQUIRED
 +
 +#Agora vamos criar uma lista de sites que eles vão poder acessar no horário do almoço
 +acl sites-almoco ​  ​url_regex ​    -i "/​etc/​squid3/​regras/​sites_almoco"​
 +
 +
 +# Permissoes de Acesso
 +http_access allow ti-admin
 +http_access allow sites-liberados
 +http_access deny  sites-proibidos
 +http_access allow matriz-diretoria
 +#Aqui vamos cruzar as acls para garantir que os usuários que vão acessar os sites no almoço estejam autenticados
 +http_access allow almoco autenticados sites-almoco
 +http_access deny  sites-bloqueados ​
 +http_access deny  downloads
 +http_access deny  usu_bloqueados
 +http_access allow matriz-administracao sites-administracao
 +http_access allow matriz-logistica sites-logistica
 +#Acesso ao site da caixa
 +#​http_access allow caixa matriz-administracao
 +#​http_access allow caixa matriz-diretoria
 +http_access deny all
 +http_reply_access allow all
 +icp_access allow all
 +miss_access allow all
 +visible_hostname proxy.douglasqsantos.com.br
 +error_directory /​usr/​share/​squid3/​errors/​pt-br
 +#​cache_effective_group proxy
 +cache_effective_user proxy
 +coredump_dir /​var/​spool/​squid3
 +</​sxh>​
 +
 +Galera o site da caixa já é uma merda de natureza, e o maldito ainda tava dando uns paus quando o squid vai acessar, analisando os pacotes percebi que o dns demora pra retornar uma requisição válida para o squid por isso a demora pra navegar, a maneira que eu resolvi foi adicionando os endereços da caixa no /etc/hosts da da seguinte forma 
 +<sxh bash>
 +
 +vim /etc/hosts
 +[...]
 +200.201.161.106 www.caixa.gov.br ​       www.caixa.gov.br
 +200.201.162.210 www1.caixa.gov.br ​      ​www1.caixa.gov.br
 +</​sxh>​
 +
 +Com isso o site da caixa vai retornar mais rapido par ao squid. ;) 
 +
 +Agora vamos criar o diretório para armazenar as regras do squid
 +<sxh bash>
 +
 +mkdir -p /​etc/​squid3/​regras
 +</​sxh>​
 +
 +Arquivo com os ips que não precisaram de autenticação e não terão bloqueio
 +<sxh bash>
 +
 +vim /​etc/​squid3/​regras/​liberados
 +#Arquivo que contem os ips que não vão passar por autenticação e não terão bloqueio
 +10.13.0.1
 +10.13.0.2
 +</​sxh>​
 +
 +Arquivo com os macs que não precisaram de autenticação e não terão bloqueio
 +<sxh bash>
 +
 +vim /​etc/​squid3/​regras/​mac_liberado
 +#MACS que não precisaram de autenticação e não terão bloqueio.
 +01:​01:​01:​01:​01:​01
 +</​sxh>​
 +
 +Arquivo com os sites que não vamos fazer cache
 +<sxh bash>
 +
 +vim /​etc/​squid3/​regras/​direto
 +#Sites que não vamos fazer cache
 +bradesco
 +itau
 +caixa.gov
 +hsbc
 +squid-cache
 +</​sxh>​
 +
 +Arquivo com os sites que vão poder ser acessados no horário do almoço das 12:00 as 13:00 
 +<sxh bash>
 +
 +vim /​etc/​squid3/​regras/​sites_almoco
 +#Sites que vão poder ser acessados no horário de almoço
 +facebook
 +gmail
 +</​sxh>​
 +
 +Arquivo com as extensões bloqueadas ou seja as extensões que os usuários não vão poder baixar
 +<sxh bash>
 +
 +vim /​etc/​squid3/​regras/​downloads
 +#Arquivo com as extensões que os usuários não vão poder baixar
 +.ace$
 +.af$
 +.afx$
 +.asf$
 +.asx$
 +.avi$
 +.bat$
 +.cmd$
 +.com$
 +.cpt$
 +.divx$
 +.dms$
 +.dot$
 +.dvi$
 +.ez$
 +.gl$
 +.hqx$
 +.kar$
 +.lha$
 +.lzh$
 +.mov$
 +.movie$
 +.mp2$
 +.mp3$
 +.mpe$
 +.mpeg$
 +.mpg$
 +.mpga$
 +.pif$
 +.qt$
 +.ra$
 +.rm$
 +.rpm$
 +.scr$
 +.spm$
 +.vbf$
 +.vob$
 +.vqf$
 +.wav$
 +.wk$
 +.wma$
 +.wmv$
 +.wpm$
 +.wrd$
 +.wvx$
 +.wz$
 +</​sxh>​
 +
 +Arquivo com os sites que vão estar liberados para todos os usuários autenticados ​
 +<sxh bash>
 +
 +vim /​etc/​squid3/​regras/​sites_liberados
 +#sites que vão estar liberados para todos os usuários autenticados
 +squid-cache
 +site_da_empresa
 +</​sxh>​
 +
 +Arquivo com os sites que estão proibidos para todos os usuários ​
 +<sxh bash>
 +
 +vim /​etc/​squid3/​regras/​sites_proibidos
 +#Sites que vão estar proibidos para todos os usuários
 +041vip
 +4shared
 +abusado
 +acervoamador
 +acompanhante
 +amador
 +amante
 +anal
 +aninha
 +anus
 +arquivonet
 +arquivosex
 +arrebitadas
 +arrombadas
 +baixaki
 +bangbus
 +batepapo
 +bizarro
 +boceta
 +boneca
 +bronha
 +bruninha
 +buceta
 +bunda
 +buttman
 +cabaret
 +calcinhas
 +camerasex
 +caralho
 +caricia
 +carlinha
 +chantily
 +checkip.dyndns.org
 +chupar
 +classisex
 +climax
 +clitoris
 +cocota
 +curitibasexo
 +curitibastarnight
 +cwbvip
 +cybersex
 +delicia
 +deliciosas
 +delirius
 +deliriusonline
 +easyquarto
 +ebuddy
 +ejacula
 +erotic
 +erotismo
 +estupro
 +foda
 +foder
 +fuck
 +furacao
 +galinhas
 +gang-bang
 +gangbang
 +gata
 +gatinhas
 +gay
 +getmyip.co.uk
 +getmyip.org
 +gostosa
 +gostoso
 +homosexual
 +hustler
 +idealcompany
 +juggworld
 +lolita
 +malicia
 +marcinha
 +megaupload
 +molhadinhas
 +morango.ig
 +ninfeta
 +ninfetinha
 +orgia
 +orkut
 +parperfeito
 +partypoker
 +penis
 +penthouse
 +pica
 +pinto
 +playboy
 +porno
 +private
 +pubshop
 +pussy
 +puta
 +putinha
 +redtube
 +revistabrazil
 +sandrinha
 +secretas
 +sedutoras
 +sensual
 +sex
 +sexlive
 +sexo
 +sexxxyvideo
 +sexy
 +sexyclube
 +shemale
 +swing
 +talk
 +teen
 +trafficconverter.biz
 +transa
 +travestis
 +tufos
 +vagina
 +virgen
 +youtube
 +zipmail
 +zoofilia
 +</​sxh>​
 +
 +Arquivo que vai conter os sites bloqueados somente a diretoria pode acessar esses sites
 +<sxh bash>
 +
 +vim /​etc/​squid3/​regras/​sites_bloqueados
 +#Sites que estão bloqueados para todos os usuários menos a diretoria
 +208.80.152.2
 +4shared
 +adorocinema
 +afterhour
 +altoagito
 +altosagitos
 +amazon
 +americanas
 +aoe
 +aondenamoro
 +apolar
 +atleticoparanaense
 +atleticopr
 +atoouefeito
 +atrativa
 +atrativagames
 +aumentonatural
 +baixaki
 +batepapo
 +blog
 +blogdocebolinha
 +blogspot
 +blowjob
 +bluebell
 +bondedorole
 +brasilviagem
 +caiobafm
 +caixabranca
 +caixapreta
 +caixapretta
 +cartasdeamor
 +cartoon
 +chantily
 +cineplayers
 +cocemsuacasa
 +collider
 +comercioeletronico
 +corinthians
 +corinthians
 +coritiba
 +corpoperfeito
 +cowboysdoasfalto
 +coxa
 +coxanautas
 +declaracaodeamor
 +ebuddy
 +facearfacebook
 +films
 +filmschoolrejects
 +fimdostempos
 +flogao
 +forumpcs
 +furacao
 +furiajovem
 +fusion
 +futebol
 +galinhas
 +games
 +globo.com
 +gonzagaaluguel
 +gravatar
 +guiademulher
 +guruweb
 +gvt
 +hartmannimoveis
 +humortadela
 +icq
 +idolos
 +ig
 +imoveiscuritiba
 +imoveisportoseguro
 +imperioalviverde
 +investeloto
 +jovemnerd
 +jovempanfm
 +jpfm
 +jtavaresimoveis
 +judao
 +last.fm
 +latinoreview
 +lojadojardim
 +marisa
 +meebo
 +meebo.com
 +megaupload
 +mercadolivre
 +metal-archives
 +meucarronovo
 +morehate
 +morte
 +mtv
 +music
 +myspace
 +namoro
 +nokia
 +ofuxico
 +orkut
 +padrereginaldomanzotti
 +palmeiras
 +parperfeito
 +pindavale
 +pontofrio
 +portal3.casasoft
 +portalnoivas
 +powerscrap
 +radio
 +rapidshare
 +samsung
 +shop
 +shopfacil
 +shopfacil
 +shopinvest
 +shoppingtotal
 +siemens
 +socarrao
 +sonico
 +sony
 +superdownload
 +talk
 +televisao
 +teologia
 +teologica
 +tim
 +timmusicstore
 +tirinhas
 +tribal
 +twitter
 +upload.wikipedia.org
 +videolar
 +violencia
 +virtua
 +vivo
 +vocoxa
 +webmotors
 +webnoivas
 +wikia
 +wikimedia
 +wikipedia.com.br
 +wikipedia.org
 +yahoo
 +youtube
 +zipmail
 +</​sxh>​
 +
 +Sites que a gerencia vai ter acesso ​
 +<sxh bash>
 +
 +vim /​etc/​squid3/​regras/​sites_gerencia
 +#Sites que o grupo de gerencia vai ter acesso
 +terra 
 +uol
 +google
 +gerencia.siteempresa
 +bradesco
 +itau
 +caixa.gov
 +hsbc
 +.gov
 +</​sxh>​
 +
 +Sites que a administração vai ter acesso
 +<sxh bash>
 +
 +vim /​etc/​squid3/​regras/​sites_administracao
 +#Sites que o grupo adminstracao vai ter acesso
 +adm.siteempresa
 +bradesco
 +itau
 +hsbc
 +caixa.gov
 +</​sxh>​
 +
 +Sites que a logística vai ter acesso ​
 +<sxh bash>
 +
 +vim /​etc/​squid3/​regras/​sites_logistica
 +#Sites que o grupo logistica vai ter acesso
 +logistica.siteempresa
 +</​sxh>​
 +
 +Bloquear determinados usuários autenticados ​
 +<sxh bash>
 +
 +vim /​etc/​squid3/​regras/​usu_bloqueados
 +#Usuários que vão ser bloquados no proxy
 +jose.silva
 +</​sxh>​
 +
 +Agora crie os grupos e usuários no AD
 +
 +Vamos consultar os nossos usuários do Ad
 +<sxh bash>
 +
 +wbinfo -u
 +DEBIAN\nobody
 +DEBIAN\douglas
 +administrator
 +guest
 +krbtgt
 +douglas
 +</​sxh>​
 +
 +Agora crie os grupos e usuários no AD, caso ainda não tenha feito isso
 +<sxh bash>
 +
 +wbinfo -g
 +winrmremotewmiusers__
 +domain computers
 +domain controllers
 +schema admins
 +enterprise admins
 +cert publishers
 +domain admins
 +domain users
 +domain guests
 +group policy creator owners
 +ras and ias servers
 +allowed rodc password replication group
 +denied rodc password replication group
 +read-only domain controllers
 +enterprise read-only domain controllers
 +cloneable domain controllers
 +dnsadmins
 +dnsupdateproxy
 +ti-admin
 +matriz-diretoria
 +matriz-gerencia
 +matriz-administracao
 +matriz-logistica
 +</​sxh>​
 +
 +Agora vamos consultar o grupo ti-admin para conferir os usuários que fazem parte deste grupo.
 +<sxh bash>
 +
 +wbinfo --group-info=ti-admin
 +ti-admin:​x:​10000:​douglas
 +</​sxh>​
 +
 +Como pode ser notado nós temos o usuário Douglas no grupo ti-admin
 +
 +Agora vamos consultar informações sobre o nosso usuário douglas
 +<sxh bash>
 +
 +wbinfo --user-groups=douglas
 +10001
 +10000
 +</​sxh>​
 +
 +O nosso usuário pertence a dois grupos do domínio o grupo 10001 e o 10000 vamos descobrir quem são estes grupos.
 +
 +Vamos consultar primeiro o grupo 10000 
 +<sxh bash>
 +
 +wbinfo --gid-info=10000
 +ti-admin:​x:​10000:​douglas
 +</​sxh>​
 +
 +Como pode ser notado o grupo 10000 é o grupo ti-admin agora vamos consultar o grupo 10001
 +<sxh bash>
 +
 +wbinfo --gid-info=10001
 +domain users:​x:​10001:​
 +</​sxh>​
 +
 +Como pode ser notado o grupo 10001 é o grupo domain users ou seja os usuários de domínio.
 +
 +
 +Agora vamos parar o squid 
 +<sxh bash>
 +
 +/​etc/​init.d/​squid3 stop
 +</​sxh>​
 +
 +Agora temos que criar os diretórios para o squid armazenar o cache 
 +<sxh bash>
 +
 +squid3 -z
 +</​sxh>​
 +
 +Vamos acertar o horário dos relatórios do squid, por padrão ele mostra no formato GMT com uma variável %T e nós precisamos do formato UTC %t.
 +<sxh bash>
 +
 +sed -i "​s/​%T/​%t/​g"​ /​usr/​share/​squid3/​errors/​pt-br/​*
 +</​sxh>​
 +
 +Agora podemos iniciar ele
 +<sxh bash>
 +
 +/​etc/​init.d/​squid3 start
 +</​sxh>​
 +
 +**Agora vamos fazer a instalação e configuração do sarg**
 +
 +Adicione as seguintes linhas no arquivo /​etc/​apt/​sources.list
 +<sxh bash>
 +
 +vim /​etc/​apt/​sources.list
 +[...]
 +#No final do arquivo /​etc/​apt/​sources.list
 +deb http://​www.backports.org/​debian squeeze-backports main contrib non-free
 +deb-src http://​www.backports.org/​debian squeeze-backports main contrib non-free
 +</​sxh>​
 +
 +Agora precisamos atualizar os repositórios e mandar instalar o sarg
 +<sxh bash>
 +
 +aptitude update && aptitude install sarg apache2 -y
 +</​sxh>​
 +
 +Vamos comentar as linhas do backport no arquivo /​etc/​apt/​sources.list
 +<sxh bash>
 +
 +vim /​etc/​apt/​sources.list
 +[...]
 +#No final do arquivo /​etc/​apt/​sources.list
 +#deb http://​www.backports.org/​debian squeeze-backports main contrib non-free
 +#deb-src http://​www.backports.org/​debian squeeze-backports main contrib non-free
 +</​sxh>​
 +
 +Vamos fazer um backup do arquivo de configuração do sarg-reports
 +<sxh bash>
 +
 +cp -Ra /​etc/​sarg/​sarg-reports.conf{,​.bkp}
 +</​sxh>​
 +
 +Agora vamos configurar o sarg-reports que vai gerar os relatórios dos acesso ao proxy
 +<sxh bash>
 +
 +vim /​etc/​sarg/​sarg-reports.conf
 +     ​SARG=/​usr/​bin/​sarg
 +     ​CONFIG=/​etc/​sarg/​sarg.conf
 +    HTMLOUT=/​var/​www/​sarg
 +  PAGETITLE="​Access Reports on $(hostname)"​
 +    LOGOIMG=/​sarg/​images/​sarg.png
 +   ​LOGOLINK="​http://​$(hostname)/"​
 +      DAILY=Daily
 +     ​WEEKLY=Weekly
 +    MONTHLY=Monthly
 +EXCLUDELOG1="​SARG:​ No records found"
 +EXCLUDELOG2="​SARG:​ End"
 +</​sxh>​
 +
 +Agora vamos fazer um backup do arquivo de configuração do sarg
 +<sxh bash>
 +
 +cp -Ra /​etc/​sarg/​sarg.conf{,​.bkp}
 +</​sxh>​
 +
 +Agora vamos configurar o /​etc/​sarg/​sarg.conf
 +<sxh bash>
 +
 +vim /​etc/​sarg/​sarg.conf
 +access_log /​var/​log/​squid3/​access.log
 +title "​Relatorio de Acesso a Internet"​
 +font_face Tahoma,​Verdana,​Arial
 +header_color darkblue
 +header_bgcolor blanchedalmond
 +font_size 9px
 +background_color white
 +text_color #000000
 +text_bgcolor lavender
 +title_color green
 +temporary_dir /tmp
 +output_dir /​var/​www/​sarg
 +resolve_ip yes
 +user_ip no
 +topuser_sort_field BYTES reverse
 +user_sort_field BYTES reverse
 +exclude_users /​etc/​sarg/​exclude_users
 +exclude_hosts /​etc/​sarg/​exclude_hosts
 +date_format e
 +records_without_userid ignore
 +lastlog 0
 +remove_temp_files yes
 +index yes
 +index_tree file
 +overwrite_report yes
 +records_without_userid ip
 +use_comma yes
 +mail_utility mailx
 +topsites_num 100
 +topsites_sort_order CONNECT D
 +index_sort_order D
 +exclude_codes /​etc/​sarg/​exclude_codes
 +max_elapsed 28800000
 +report_type topusers topsites sites_users users_sites date_time denied auth_failures site_user_time_date downloads
 +usertab /​etc/​sarg/​usertab
 +long_url no
 +date_time_by bytes
 +charset Latin1
 +show_successful_message no
 +show_read_statistics no
 +topuser_fields NUM DATE_TIME USERID CONNECT BYTES %BYTES IN-CACHE-OUT USED_TIME MILISEC %TIME TOTAL AVERAGE
 +user_report_fields CONNECT BYTES %BYTES IN-CACHE-OUT USED_TIME MILISEC %TIME TOTAL AVERAGE
 +topuser_num 0
 +download_suffix "​zip,​arj,​bzip,​gz,​ace,​doc,​iso,​adt,​bin,​cab,​com,​dot,​drv$,​lha,​lzh,​mdb,​mso,​ppt,​rtf,​src,​shs,​sys,​exe,​dll,​mp3,​avi,​mpg,​mpeg"​
 +</​sxh>​
 +
 +Agora vamos acertar a periodicidade em que o sarg-reports vai ser executado eu vou deixar ele sendo executado a cada hora
 +<sxh bash>
 +
 +cp -Rfa /​etc/​cron.daily/​sarg /​etc/​cron.hourly/​
 +</​sxh> ​
 +
 +Agora vamos gerar o primeiro relatório caso já exista algum acesso vamos ter estatísticas para analisarmos. ​
 +<sxh bash>
 +
 +sarg
 +</​sxh>​
 +
 +Agora vamos criar um usuário para acessar o sarg
 +<sxh bash>
 +
 +htpasswd -s -c /​var/​www/​sarg/​.htpasswd sarg
 +New password: #senha
 +Re-type new password: #senha
 +Adding password for user sarg
 +</​sxh>​
 +
 +Aqui criei o usuário chamado sarg com a senha senha, agora vamos criar o arquivo que controla o acesso no diretório.
 +<sxh apache>
 +
 +vim /​var/​www/​sarg/​.htaccess
 +AuthType Basic
 +AuthName "Area Restrita"​
 +AuthUserFile "/​var/​www/​sarg/​.htpasswd"​
 +require valid-user
 +</​sxh>​
 +
 +Agora temos que fazer um acerto no diretório padrão do apache ​
 +<sxh apache>
 +
 +[...]
 +<​Directory /​var/​www/>​
 +                Options Indexes FollowSymLinks MultiViews
 +                #Temos que deixar o AllowOverride All o padrão do Apache é AllowOverride None
 +                AllowOverride All
 +                Order allow,deny
 +                allow from all
 +        </​Directory>​
 +[...]
 +</​sxh>​
 +
 +Agora precisamos reiniciar o apache
 +<sxh bash>
 +
 +/​etc/​init.d/​apache2 restart
 +Restarting web server: apache2 ... waiting .
 +</​sxh>​
 +
 +Seus relatórios do Sarg vão estar em http://​ip_servidor/​sarg usuário de acesso: **sarg** senha: **senha** ​
 +
 +
 +**Agora vamos obter e configurar o MySar**
 +
 +Vamos instalar as dependências do MySar
 +<sxh bash>
 +
 +aptitude install php5 php5-mysql apache2 mysql-server-5.1 -y
 +</​sxh>​
 +
 +Vamos baixar o MySar
 +<sxh bash>
 +
 +cd /var/www
 +wget -c http://​wiki.douglasqsantos.com.br/​Downloads/​monitoring/​mysar-2.1.4.tar.gz
 +tar -xzvf mysar-2.1.4.tar.gz
 +rm -rf mysar-2.1.4.tar.gz index.html
 +</​sxh>​
 +
 +Agora vamos acertar o arquivo de configuração principal do MySar
 +<sxh bash>
 +
 +cp  /​var/​www/​mysar/​etc/​config.ini.example /​var/​www/​mysar/​etc/​config.ini
 +</​sxh>​
 +
 +Agora vamos editar o arquivo de controle do Banco do MySar
 +<sxh bash>
 +
 +vim /​var/​www/​mysar/​etc/​config.ini
 +dbUser = mysar
 +dbPass = senha
 +dbHost = localhost
 +dbName = mysar
 +</​sxh>​
 +
 +Agora Vamos criar o Banco de dados 
 +<sxh sql>
 +mysql -u root -p
 +CREATE DATABASE mysar;
 +GRANT ALL PRIVILEGES ON mysar.* to mysar@localhost IDENTIFIED BY '​senha';​
 +FLUSH PRIVILEGES;
 +quit;
 +</​sxh>​
 +
 +Agora vamos configurar o MySar acesse http://​ip_servidor/​mysar/​www ​
 +  - Na primeira tela selecione Click here to continue >>>​
 +  - Agora na segunda tela selecione New install
 +  - Aqui na terceira tela vamos informar os dados
 +    - MySQL Administrative username: **root**
 +    - MySQL Administrative Password: **senha_root**
 +    - MySQL Database Host: **localhost**
 +    - MySQL Database Name for mysar: **mysar**
 +    - Mysql Database Username to create, for mysar: **mysar**
 +    - Mysql Database Password for the new user defined above: **senha**
 +    - Agora selecione Enviar ​
 +  - Agora selecione Click here
 +  - Agora selecione novamente Click here
 +  - Mas uma vez precisamos selecionar Click here
 +  - Pronto ele esta instalado agora precisamos remover o diretório de instalação.
 +
 +Vamos remover o diretório de instalação
 +<sxh bash>
 +
 +rm -rf /​var/​www/​mysar/​www/​install
 +</​sxh>​
 +
 +Agora vamos acertar as permissões do mysar
 +<sxh bash>
 +
 +chown -R www-data:​www-data /​var/​www/​mysar
 +</​sxh>​
 +
 +Agora vamos criar um usuário para acessar o mysar
 +<sxh bash>
 +
 +htpasswd -s -c /​var/​www/​mysar/​.htpasswd mysar
 +New password: #senha
 +Re-type new password: #senha
 +Adding password for user mysar
 +</​sxh>​
 +
 +Aqui criei o usuário chamado mysar com a senha senha, agora vamos criar o arquivo que controla o acesso no diretório.
 +<sxh bash>
 +
 +vim /​var/​www/​mysar/​.htaccess
 +AuthType Basic
 +AuthName "Area Restrita"​
 +AuthUserFile "/​var/​www/​mysar/​.htpasswd"​
 +require valid-user
 +</​sxh>​
 +
 +Agora precisamos deixar agendado os scripts para popular os nossos relatórios
 +<sxh bash>
 +
 +vim /​etc/​crontab
 +[...]
 +* * * * *       ​root ​   /​var/​www/​mysar/​bin/​mysar-resolver.php > /​var/​www/​mysar/​log/​mysar-resolver.log 2>&1
 +0 0 * * *       ​root ​   /​var/​www/​mysar/​bin/​mysar-maintenance.php > /​var/​www/​mysar/​log/​mysar-maintenance.log 2>&1
 +* * * * *       ​root ​   /​var/​www/​mysar/​bin/​mysar-importer.php > /​var/​www/​mysar/​log/​mysar-importer.log 2>&1
 +</​sxh>​
 +
 +Agora precisamos fazer o ultimo acerto no MySar
 +<sxh bash>
 +#sql
 +mysql -u root -p mysar
 +update config set value  = '/​var/​log/​squid3/​access.log'​ where name = '​squidLogPath';​
 +</​sxh>​
 +
 +Agora vamos gerar reiniciar o crontab
 +<sxh bash>
 +
 +/​etc/​init.d/​cron restart
 +</​sxh>​
 +
 +Agora vamos acessar o MySar em http://​ip_servidor/​mysar/​www usuário de acesso: **mysar** senha: **senha** ​
 +
 +
 +**Agora vamos obter e instalar o MSN-Proxy **
 +
 +Vamos instalar as suas dependências
 +<sxh bash>
 +
 +aptitude install mysql-server mysql-client ​ php5-gd php5-imagick make gcc g++  libmysqlclient-dev -y
 +</​sxh>​
 +
 +Agora vamos obter o libevent que é uma dependência do msn-proxy ​
 +<sxh bash>
 +
 +cd /usr/src
 +wget -c http://​wiki.douglasqsantos.com.br/​Downloads/​monitoring/​libevent-2.0.19-stable.tar.gz
 +tar -xzvf libevent-2.0.19-stable.tar.gz
 +</​sxh>​
 +
 +Agora vamos gerar a configuração inicial do pacote e vamos compilar e instalar ele
 +<sxh bash>
 +
 +cd /​usr/​src/​libevent-2.0.19-stable/​
 +./configure && make && make install clean
 +</​sxh>​
 +
 +Agora vamos criar um link para o sistema saber qual a biblioteca utilizar quando houver a necessidade.
 +<sxh bash>
 +
 +cd /usr/lib
 +ln -s /​usr/​local/​lib/​libevent-2.0.so.5
 +</​sxh>​
 +
 +Agora vamos obter o MSN-proxy ​
 +<sxh bash>
 +
 +cd /usr/src
 +wget -c http://​wiki.douglasqsantos.com.br/​Downloads/​monitoring/​msn-proxy-0.7.tar.gz
 +tar -xzvf msn-proxy-0.7.tar.gz
 +</​sxh>​
 +
 +Agora vamos acertar a configuração do MSN-Proxy antes de compilar ele, temos que efetuar as mudanças como abaixo vamos comentar as linhas do FreeBSD e descomentar e modificar as linhas do Linux.
 +<sxh bash>
 +
 +cd /​usr/​src/​msn-proxy-0.7/​
 +vim Makefile
 +[...]
 +#FreeBSD
 +#​MYSQLINC=/​usr/​local/​include
 +#​MYSQLLIB=/​usr/​local/​lib/​mysql
 +
 +# Linux (most)
 +MYSQLINC=/​usr/​lib/​mysql
 +MYSQLLIB=/​var/​lib/​mysql/​mysql
 +</​sxh>​
 +
 +Agora vamos compilar e instalar ele 
 +<sxh bash>
 +
 +make && make install clean
 +</​sxh>​
 +
 +Agora vamos acertar a configuração do cliente web do MSN-Proxy ​
 +<sxh bash>
 +
 +cp -R /​usr/​src/​msn-proxy-0.7/​php /​var/​www/​msn-proxy
 +</​sxh>​
 +
 +Agora vamos acertar a configuração do cliente web com o banco de dados 
 +<sxh php>
 +vim /​var/​www/​msn-proxy/​mysql.inc.php ​
 +[...]
 +$host = "​localhost";​
 +$user = "​root";​
 +$pass = "​senha";​
 +$db = "​msn-proxy";​
 +$port = 3306
 +[...]
 +</​sxh>​
 +
 +Agora temos que acertar o arquivo de conexão do msn-proxy com o banco de dados
 +<sxh bash>
 +
 +vim  /​usr/​local/​etc/​msn-proxy/​mysql/​conf ​
 +# host, porta, usuário, senha, banco
 +localhost|0|msn-proxy|senha|msn-proxy
 +</​sxh>​
 +
 +Agora vamos criar o banco de dados e acertar as permissões.
 +<sxh sql>
 +mysql -u root -p
 +CREATE DATABASE `msn-proxy`;​
 +GRANT ALL PRIVILEGES on `msn-proxy`.* to `msn-proxy`@localhost IDENTIFIED BY '​senha';​
 +FLUSH PRIVILEGES;
 +quit;
 +</​sxh>​
 +
 +Agora vamos acertar a permissão do arquivo de configuração do banco 
 +<sxh bash>
 +
 +chmod 600 /​usr/​local/​etc/​msn-proxy/​mysql/​conf ​
 +</​sxh>​
 +
 +Agora vamos mudar a quantidade máxima de clientes que podemos ter no msn-proxy vamos mudar o padrão de 10 para 200 por exemplo. ​
 +<sxh bash>
 +
 +sed -i "​s/​max_clients=10/​max_clients=200/​g"​ /​usr/​local/​etc/​msn-proxy/​msn-proxy.conf ​
 +</​sxh>​
 +
 +Vamos agora iniciar o msn-proxy ele vai apresentar um erro pois é a falta de informação na tabela defaults
 +<sxh bash>
 +
 +msn-proxy
 +fail to read mysql config (check defaults table)
 +</​sxh>​
 +
 +Agora vamos corrigir o erro que apareceu informando os valores padrões para o msn-proxy ​
 +
 +Vamos inserir o ip do servidor proxy que é 10.13.0.254 e o endereço de email do administrador
 +
 +<sxh sql>
 +mysql -u root -p msn-proxy
 +INSERT INTO defaults (internal_host,​warnemail) VALUES ("​10.13.0.254","​monitor@douglasqsantos.com.br"​);​
 +quit;
 +</​sxh>​
 +
 +Agora temos adicionar uma regra de filtragem da porta 1863, ou seja quando o usuário fizer uma requisição nesta porta nós vamos mandar ela para o msn-proxy, vou levar em consideração aqui a interface da LAN sendo eth0 
 +
 +<sxh bash>
 +
 +iptables -t nat -I PREROUTING -i eth0 -p tcp --dport 1863 -j REDIRECT --to-port 1863
 +</​sxh>​
 +
 +Agora vamos habilitar o repasse de pacotes
 +<sxh bash>
 +
 +sed -i "​s/#​net.ipv4.ip_forward=1/​net.ipv4.ip_forward=1/​g"​ /​etc/​sysctl.conf ​
 +</​sxh>​
 +
 +Agora vamos recarregar a configuração ​
 +<sxh bash>
 +
 +sysctl -p
 +</​sxh>​
 +
 +Vou mascarar a rede quando enviarmos ela para a internet
 +<sxh bash>
 +
 +iptables -t nat -I POSTROUTING -s 10.13.0.0/​24 -j MASQUERADE
 +</​sxh>​
 +
 +Agora vamos criar um usuário para acessar o msn-proxy
 +<sxh bash>
 +
 +htpasswd -s -c /​var/​www/​msn-proxy/​.htpasswd msn-proxy
 +New password: #senha
 +Re-type new password: #senha
 +Adding password for user msn-proxy
 +</​sxh>​
 +
 +Aqui criei o usuário chamado msn-proxy com a senha senha, agora vamos criar o arquivo que controla o acesso no diretório.
 +<sxh apache>
 +
 +vim /​var/​www/​msn-proxy/​.htaccess
 +AuthType Basic
 +AuthName "Area Restrita"​
 +AuthUserFile "/​var/​www/​msn-proxy/​.htpasswd"​
 +require valid-user
 +</​sxh>​
 +
 +Agora vamos iniciar o msn-proxy em background
 +<sxh bash>
 +
 +/​usr/​local/​bin/​msn-proxy -b
 +</​sxh>​
 +
 +Vamos ver as como o msn-proxy esta sendo executado ​
 +<sxh bash>
 +
 +msn-proxy -v
 +info: reading config file [/​usr/​local/​etc/​msn-proxy/​msn-proxy.conf]
 +SQL: (SHOW TABLES)
 +SQL: (SELECT connect, save_msg, save_contacts,​ commands, internal_host FROM defaults LIMIT 1)
 +msn-proxy release ​    : msn-proxy-0.7a [$Id: msn-proxy.h 112 2009-03-15 17:30:28Z loos-br $]
 +config file           : /​usr/​local/​etc/​msn-proxy/​msn-proxy.conf
 +default ns host       : messenger.hotmail.com
 +default ns port       : 1863
 +listen host           : 0.0.0.0
 +listen port           : 1863
 +backlog ​              : 10
 +max clients ​          : 200
 +max ctl clients ​      : 10
 +port range begin      : 25000
 +port range end        : 30000
 +ctl read timeout ​     : 5
 +client read timeout ​  : 600
 +client write timeout ​ : 60
 +server read timeout ​  : 600
 +server write timeout ​ : 60
 +client connect timeout: 180
 +
 +ACLs
 +connect ​              : ALLOW
 +log messages ​         : YES
 +save_contacts ​        : YES
 +
 +listen: Address already in use
 +</​sxh>​
 +
 +Como pode ser notado ele esta funcionando corretamente. ​
 +
 +Agora vamos acessar o cliente em http://​ip_servidor/​msn-proxy usuário para acesso: msn-proxy senha: senha 
 +
 +Aqui na tela principal do msn-proxy quando tiver algum usuário logado vamos ter o nome dele e abaixo a última conexão, último ip e excluir/​Novo abaixo disso temos Outras opções, se selecionarmos Outras opções podemos habilitar algumas opções como avisar ao usuário que a mensagem está sendo monitorada, bloquear novos usuários e mais algumas outras. ​
 +
 +Agora que o msn-proxy já está funcionando vamos criar um script para que ele seja executado na inicialização do sistema.
 +<sxh bash>
 +
 +vim /​etc/​init.d/​msn-proxy
 +#/bin/bash
 +### BEGIN INIT INFO
 +# Provides: ​            ​msn-proxy
 +# Required-Start: ​      ​$remote_fs $syslog
 +# Required-Stop: ​       $remote_fs $syslog
 +# Default-Start: ​       2 3 4 5
 +# Default-Stop: ​        0 1 6
 +# Short-Description: ​   MSN-Proxy
 +### END INIT INFO
 + 
 +GREY="​\033[01;​30m"​ RED="​\033[01;​31m"​ GREEN="​\033[01;​32m"​ YELLOW="​\033[01;​33m"​
 +BLUE="​\033[01;​34m"​ PURPLE="​\033[01;​35m"​ CYAN="​\033[01;​36m"​ WHITE="​\033[01;​37m"​
 +CLOSE="​\033[m"​
 +
 +#VARIAVEIS DO SCRIPT
 +MSN_PROXY=$(which msn-proxy)
 +IPTABLES=$(which iptables)
 +INT_LAN="​eth0"​
 +KILLALL=$(which killall)
 + 
 +start(){
 +echo -e "​${GREEN}INICIANDO O MSN-Proxy${CLOSE}"​
 +${MSN_PROXY} &
 +${IPTABLES} -t nat -I PREROUTING -i ${INT_LAN} -p tcp --dport 1863 -j REDIRECT --to-port 1863 
 +echo -e "​${GREEN}MSN-PROXY INICIADO${CLOSE}"​
 +}
 + 
 +stop (){
 +echo -e "​${RED}PARANDO MSN-PROXY${CLOSE}"​
 +${IPTABLES} -t nat -D PREROUTING -i ${INT_LAN} -p tcp --dport 1863 -j REDIRECT --to-port 1863 
 +${KILLALL} -15 msn-proxy >> /dev/null
 +echo -e "​${RED}MSN-PROXY PARADO${CLOSE}"​
 +}
 + 
 +case "​$1"​ in
 +start)
 +start;;
 + 
 +stop)
 +stop;;
 + 
 +restart)
 +stop
 +start
 +;;
 + 
 +*)
 +echo -e "​${RED}COMANDO INVALIDO${CLOSE}"​
 +;;
 +esac
 + 
 +exit 0
 +</​sxh>​
 +
 +
 +Agora vamos acertar as permissões do script ​
 +<sxh bash>
 +
 +chmod +x /​etc/​init.d/​msn-proxy
 +</​sxh>​
 +
 +Agora vamos inserir ele na inicialização do sistema
 +<sxh bash>
 +
 +insserv -v -f msn-proxy
 +</​sxh>​
 +
 +O nosso MSN-Proxy já está configurado e na inicialização do sistema.
 +
 +
 +**OBS: NÃO ESQUECA DE CRIAR OS GRUPOS NO AD E COLOCAR OS USUÁRIOS NOS GRUPOS **
 +
 +Seu cache manager está em http://​ip_servidor/​cgi-bin/​cachemgr.cgi usuário para acesso é O root e a senha é a do root, este aplicativo mostra estatísticas do cache do squid. ​
 +
 +
 +Para testar a autenticação com o AD pode ser efetuado com o seguinte comando
 +<sxh bash>
 +
 +wbinfo -a usuario%senha
 +plaintext password authentication succeeded #-> saída com sucesso
 +challenge/​response password authentication succeeded #-> saída com sucesso
 +</​sxh>​
 +
 +Agora um teste com uma saída de erro 
 +<sxh bash>
 +
 +wbinfo -a usuario%senhaerrada
 +plaintext password authentication failed #-> saída com erro
 +Could not authenticate user usuario%senhaerrada with plaintext password #-> saída com erro
 +challenge/​response password authentication failed #-> saída com erro
 +error code was NT_STATUS_NO_LOGON_SERVERS (0xc000005e) #-> saída com erro
 +error messsage was: No logon servers #-> saída com erro
 +Could not authenticate user usuario with challenge/​response #-> saída com erro
 +</​sxh>​
 +
 +Podemos testar a autenticação do Squid com o AD da seguinte forma 
 +<sxh bash>
 +
 +ntlm_auth --help-protocol=squid-2.5-basic --domain=dominio --username=usuario --password=senha
 +NT_STATUS_OK:​ Success (0x0) #-> saída com sucesso
 +</​sxh>​
 +
 +Agora um teste com saída de erro 
 +<sxh bash>
 +
 +ntlm_auth --help-protocol=squid-2.5-basic --domain=dominio --username=usuario --password=senhaerrada
 +NT_STATUS_IO_TIMEOUT:​ NT_STATUS_IO_TIMEOUT (0xc00000b5) #-> saída de erro
 +</​sxh>​
 +
 +====== Referências ======
 +
 +  - http://​wiki.squid-cache.org/​
 +  - http://​wiki.squid-cache.org/​ConfigExamples/​
 +  - http://​wiki.squid-cache.org/​ConfigExamples/​Authenticate/​WindowsActiveDirectory
 +  - http://​www.samba.org/​samba/​docs/​man/​Samba-HOWTO-Collection/​domain-member.html#​ads-member
 +  - http://​sarg.sourceforge.net/​
 +  - http://​sourceforge.net/​projects/​msn-proxy/​files/​latest/​download
 +  - http://​libevent.org/​
 +  - http://​sourceforge.net/​projects/​mysar/​
 +  - http://​www.isc.org/​software/​bind
 +  - http://​www.isc.org/​software/​bind/​history
 +  - http://​www.isc.org/​software/​bind/​whatis
 +  - http://​www.isc.org/​software/​bind/​versions
 +  - http://​ftp.isc.org/​isc/​bind9/​
 +  - http://​www.isc.org/​software/​bind/​documentation
 +  - http://​www.squid-cache.org/​Doc/​config/​
 +  - http://​wiki.squid-cache.org/​SquidFaq
 +  - http://​www2.savant.com.br/​index.php/​artigos/​tutoriais/​34
 +  - http://​wiki.squid-cache.org/​SquidFaq/​SquidAcl
 +  - Willian Tezza