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
export DEBIAN_PRIORITY=critical export DEBIAN_FRONTEND=noninteractive
Agora vamos instalar os pacotes necessários para o samba ser inserido no domínio AD
aptitude update && aptitude dist-upgrade -y aptitude install -y samba samba-common smbclient winbind krb5-config libpam-krb5
Agora vamos voltar as variáveis do ambiente ao normal
unset DEBIAN_PRIORITY unset DEBIAN_FRONTEND
Vamos agora fazer um backup do arquivo /etc/resolv.conf
cp -Rfa /etc/resolv.conf{,.bkp}
Agora vamos ajustar o arquivo /etc/resolv.conf
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
Agora vamos testar se o servidor ad esta respondendo corretamente
nslookup douglasqsantos.com.br Server: 10.13.0.248 Address: 10.13.0.248#53 Name: douglasqsantos.com.br Address: 10.13.0.248
Agora vamos atualizar o relógio do sistema
ntpdate -u ntp.usp.br
Agora vamos fazer backup do arquivo de configuração do cliente kerberos
cp -Rfa /etc/krb5.conf{,.bkp}
Agora vamos configurar o arquivo /etc/krb5.conf
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
Agora vamos acertar o arquivo /etc/security/limits.conf para não ficar mostrando erro no samba
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
Agora vamos fazer um backup do arquivo de configuração do samba
cp -Rfa /etc/samba/smb.conf{,.bkp}
Agora vamos a configuração do samba deixe o arquivo como no exemplo
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
Vamos agora fazer um acerto no arquivo /etc/init.d/winbind para que o winbind não fique fazendo cache das consultas no ad
vim /etc/init.d/winbind [...] #na linha 36 start-stop-daemon --start --quiet --oknodo --exec $DAEMON -- no-caching #\$WINBINDD_OPTS
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.
gpasswd -a proxy winbindd_priv Adicionando usuário proxy ao grupo winbindd_priv
Vamos fazer um backup do arquivo /etc/nsswitch.conf
cp /etc/nsswitch.conf{,.bkp}
Agora temos que acertar o arquivo /etc/nsswitch.conf que controla aonde vai ser consultado usuários e senhas deixe o arquivo como abaixo.
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
Agora vamos reiniciar o samba e o winbind para eles pegarem a nova configuração
/etc/init.d/samba restart /etc/init.d/winbind restart
Agora temos que inserir a maquina no domínio AD
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'
Caso precise retirar a maquina do domínio da forma correta (Excluindo as ligações dela no AD), podemos fazer da seguinte forma
net ads leave douglasqsantos.com.br -U Administrator Enter Administrator's password: Deleted account for 'DEBIAN' in realm 'DOUGLASQSANTOS.COM.BR'
Agora temos que reiniciar os serviços novamente
/etc/init.d/samba restart /etc/init.d/winbind restart
Agora já podemos testar a conexão do samba com o AD
wbinfo -t checking the trust secret for domain DOUGLASQSANTOS via RPC calls succeeded
Agora vamos checar os grupos que temos no domínio.
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
Agora vamos chegar os usuários do domínio
wbinfo -u DEBIAN\nobody DEBIAN\douglas administrador convidado krbtgt douglas
Fazendo backup dos arquivos da pam
cp -Rfa /etc/pam.d{,.bkp}
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
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
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
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
Reinicie o servidor para ele carregar todas as novas configurações
reboot
Agora vamos instalar o DNS Bind
Vamos instalar os pacotes necessários
aptitude install bind9 dnsutils -y
Agora vamos para o bind para podemos efetuar as modificações necessárias.
/etc/init.d/bind9 stop
Agora vamos criar os diretórios necessários para a jaula
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
Agora vamos acertar as permissões da jaula
chmod 666 /var/lib/named/dev/{null,random} chown -R bind:bind /var/lib/named/var/*
Agora vamos ajudar a localização dos diretórios
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
Agora vamos acertar o arquivo default do bind para que o bind reconheça a jaula
vim /etc/default/bind9 RESOLVCONF=yes OPTIONS="-u bind -t /var/lib/named"
Vamos agora ajustar o /etc/resolv.conf
vim /etc/resolv.conf domain douglasqsantos.com.br nameserver 127.0.0.1
Agora vamos acertar o arquivo de controle da versão e acesso ao dns
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; }; };
Agora vamos criar a nossa zona forward
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; }; };
Agora precisamos criar o arquivo que o bind precisa porém não cria
touch /var/lib/named/var/cache/bind/managed-keys.bind
Agora já podemos iniciar o nosso bind
/etc/init.d/bind9 start
Vamos analisar os logs para ver se não temos nada de errado
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
Agora vamos consultar a nossa zona do AD
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
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.
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
Agora vamos a instalação e configuração do squid
aptitude update && aptitude install squid3 squid3-common squid3-cgi -y
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
cp -Rfa /etc/squid3/squid.conf{,.bkp}
Agora vamos a configuração do squid
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
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
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
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
mkdir -p /etc/squid3/regras
Arquivo com os ips que não precisaram de autenticação e não terão bloqueio
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
Arquivo com os macs que não precisaram de autenticação e não terão bloqueio
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
Arquivo com os sites que não vamos fazer cache
vim /etc/squid3/regras/direto #Sites que não vamos fazer cache bradesco itau caixa.gov hsbc squid-cache
Arquivo com os sites que vão poder ser acessados no horário do almoço das 12:00 as 13:00
vim /etc/squid3/regras/sites_almoco #Sites que vão poder ser acessados no horário de almoço facebook gmail
Arquivo com as extensões bloqueadas ou seja as extensões que os usuários não vão poder baixar
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$
Arquivo com os sites que vão estar liberados para todos os usuários autenticados
vim /etc/squid3/regras/sites_liberados #sites que vão estar liberados para todos os usuários autenticados squid-cache site_da_empresa
Arquivo com os sites que estão proibidos para todos os usuários
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
Arquivo que vai conter os sites bloqueados somente a diretoria pode acessar esses sites
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
Sites que a gerencia vai ter acesso
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
Sites que a administração vai ter acesso
vim /etc/squid3/regras/sites_administracao #Sites que o grupo adminstracao vai ter acesso adm.siteempresa bradesco itau hsbc caixa.gov
Sites que a logística vai ter acesso
vim /etc/squid3/regras/sites_logistica #Sites que o grupo logistica vai ter acesso logistica.siteempresa
Bloquear determinados usuários autenticados
vim /etc/squid3/regras/usu_bloqueados #Usuários que vão ser bloquados no proxy jose.silva
Agora crie os grupos e usuários no AD
Vamos consultar os nossos usuários do Ad
wbinfo -u DEBIAN\nobody DEBIAN\douglas administrator guest krbtgt douglas
Agora crie os grupos e usuários no AD, caso ainda não tenha feito isso
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
Agora vamos consultar o grupo ti-admin para conferir os usuários que fazem parte deste grupo.
wbinfo --group-info=ti-admin ti-admin:x:10000:douglas
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
wbinfo --user-groups=douglas 10001 10000
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
wbinfo --gid-info=10000 ti-admin:x:10000:douglas
Como pode ser notado o grupo 10000 é o grupo ti-admin agora vamos consultar o grupo 10001
wbinfo --gid-info=10001 domain users:x:10001:
Como pode ser notado o grupo 10001 é o grupo domain users ou seja os usuários de domínio.
Agora vamos parar o squid
/etc/init.d/squid3 stop
Agora temos que criar os diretórios para o squid armazenar o cache
squid3 -z
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.
sed -i "s/%T/%t/g" /usr/share/squid3/errors/pt-br/*
Agora podemos iniciar ele
/etc/init.d/squid3 start
Agora vamos fazer a instalação e configuração do sarg
Adicione as seguintes linhas no arquivo /etc/apt/sources.list
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
Agora precisamos atualizar os repositórios e mandar instalar o sarg
aptitude update && aptitude install sarg apache2 -y
Vamos comentar as linhas do backport no arquivo /etc/apt/sources.list
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
Vamos fazer um backup do arquivo de configuração do sarg-reports
cp -Ra /etc/sarg/sarg-reports.conf{,.bkp}
Agora vamos configurar o sarg-reports que vai gerar os relatórios dos acesso ao proxy
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"
Agora vamos fazer um backup do arquivo de configuração do sarg
cp -Ra /etc/sarg/sarg.conf{,.bkp}
Agora vamos configurar o /etc/sarg/sarg.conf
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"
Agora vamos acertar a periodicidade em que o sarg-reports vai ser executado eu vou deixar ele sendo executado a cada hora
cp -Rfa /etc/cron.daily/sarg /etc/cron.hourly/
Agora vamos gerar o primeiro relatório caso já exista algum acesso vamos ter estatísticas para analisarmos.
sarg
Agora vamos criar um usuário para acessar o sarg
htpasswd -s -c /var/www/sarg/.htpasswd sarg New password: #senha Re-type new password: #senha Adding password for user sarg
Aqui criei o usuário chamado sarg com a senha senha, agora vamos criar o arquivo que controla o acesso no diretório.
vim /var/www/sarg/.htaccess AuthType Basic AuthName "Area Restrita" AuthUserFile "/var/www/sarg/.htpasswd" require valid-user
Agora temos que fazer um acerto no diretório padrão do 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> [...]
Agora precisamos reiniciar o apache
/etc/init.d/apache2 restart Restarting web server: apache2 ... waiting .
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
aptitude install php5 php5-mysql apache2 mysql-server-5.1 -y
Vamos baixar o MySar
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
Agora vamos acertar o arquivo de configuração principal do MySar
cp /var/www/mysar/etc/config.ini.example /var/www/mysar/etc/config.ini
Agora vamos editar o arquivo de controle do Banco do MySar
vim /var/www/mysar/etc/config.ini dbUser = mysar dbPass = senha dbHost = localhost dbName = mysar
Agora Vamos criar o Banco de dados
mysql -u root -p CREATE DATABASE mysar; GRANT ALL PRIVILEGES ON mysar.* to mysar@localhost IDENTIFIED BY 'senha'; FLUSH PRIVILEGES; quit;
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
rm -rf /var/www/mysar/www/install
Agora vamos acertar as permissões do mysar
chown -R www-data:www-data /var/www/mysar
Agora vamos criar um usuário para acessar o mysar
htpasswd -s -c /var/www/mysar/.htpasswd mysar New password: #senha Re-type new password: #senha Adding password for user mysar
Aqui criei o usuário chamado mysar com a senha senha, agora vamos criar o arquivo que controla o acesso no diretório.
vim /var/www/mysar/.htaccess AuthType Basic AuthName "Area Restrita" AuthUserFile "/var/www/mysar/.htpasswd" require valid-user
Agora precisamos deixar agendado os scripts para popular os nossos relatórios
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
Agora precisamos fazer o ultimo acerto no MySar
#sql mysql -u root -p mysar update config set value = '/var/log/squid3/access.log' where name = 'squidLogPath';
Agora vamos gerar reiniciar o crontab
/etc/init.d/cron restart
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
aptitude install mysql-server mysql-client php5-gd php5-imagick make gcc g++ libmysqlclient-dev -y
Agora vamos obter o libevent que é uma dependência do msn-proxy
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
Agora vamos gerar a configuração inicial do pacote e vamos compilar e instalar ele
cd /usr/src/libevent-2.0.19-stable/ ./configure && make && make install clean
Agora vamos criar um link para o sistema saber qual a biblioteca utilizar quando houver a necessidade.
cd /usr/lib ln -s /usr/local/lib/libevent-2.0.so.5
Agora vamos obter o MSN-proxy
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
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.
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
Agora vamos compilar e instalar ele
make && make install clean
Agora vamos acertar a configuração do cliente web do MSN-Proxy
cp -R /usr/src/msn-proxy-0.7/php /var/www/msn-proxy
Agora vamos acertar a configuração do cliente web com o banco de dados
vim /var/www/msn-proxy/mysql.inc.php [...] $host = "localhost"; $user = "root"; $pass = "senha"; $db = "msn-proxy"; $port = 3306 [...]
Agora temos que acertar o arquivo de conexão do msn-proxy com o banco de dados
vim /usr/local/etc/msn-proxy/mysql/conf # host, porta, usuário, senha, banco localhost|0|msn-proxy|senha|msn-proxy
Agora vamos criar o banco de dados e acertar as permissões.
mysql -u root -p CREATE DATABASE `msn-proxy`; GRANT ALL PRIVILEGES on `msn-proxy`.* to `msn-proxy`@localhost IDENTIFIED BY 'senha'; FLUSH PRIVILEGES; quit;
Agora vamos acertar a permissão do arquivo de configuração do banco
chmod 600 /usr/local/etc/msn-proxy/mysql/conf
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.
sed -i "s/max_clients=10/max_clients=200/g" /usr/local/etc/msn-proxy/msn-proxy.conf
Vamos agora iniciar o msn-proxy ele vai apresentar um erro pois é a falta de informação na tabela defaults
msn-proxy fail to read mysql config (check defaults table)
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
mysql -u root -p msn-proxy INSERT INTO defaults (internal_host,warnemail) VALUES ("10.13.0.254","monitor@douglasqsantos.com.br"); quit;
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
iptables -t nat -I PREROUTING -i eth0 -p tcp --dport 1863 -j REDIRECT --to-port 1863
Agora vamos habilitar o repasse de pacotes
sed -i "s/#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/g" /etc/sysctl.conf
Agora vamos recarregar a configuração
sysctl -p
Vou mascarar a rede quando enviarmos ela para a internet
iptables -t nat -I POSTROUTING -s 10.13.0.0/24 -j MASQUERADE
Agora vamos criar um usuário para acessar o msn-proxy
htpasswd -s -c /var/www/msn-proxy/.htpasswd msn-proxy New password: #senha Re-type new password: #senha Adding password for user msn-proxy
Aqui criei o usuário chamado msn-proxy com a senha senha, agora vamos criar o arquivo que controla o acesso no diretório.
vim /var/www/msn-proxy/.htaccess AuthType Basic AuthName "Area Restrita" AuthUserFile "/var/www/msn-proxy/.htpasswd" require valid-user
Agora vamos iniciar o msn-proxy em background
/usr/local/bin/msn-proxy -b
Vamos ver as como o msn-proxy esta sendo executado
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
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.
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
Agora vamos acertar as permissões do script
chmod +x /etc/init.d/msn-proxy
Agora vamos inserir ele na inicialização do sistema
insserv -v -f msn-proxy
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
wbinfo -a usuario%senha plaintext password authentication succeeded #-> saída com sucesso challenge/response password authentication succeeded #-> saída com sucesso
Agora um teste com uma saída de erro
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
Podemos testar a autenticação do Squid com o AD da seguinte forma
ntlm_auth --help-protocol=squid-2.5-basic --domain=dominio --username=usuario --password=senha NT_STATUS_OK: Success (0x0) #-> saída com sucesso
Agora um teste com saída de erro
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
Referências
- Willian Tezza