objetivo

Instalar um SQUID que autentica via modulo NTLM.

Desta forma quem estiver no Windows vai aproveitar o user/senha do logon, passando estas credenciais de forma transparente para o SQUID.

Quem não estiver em LINUX, UNIX, Symbian, IOS ou Android vai ter de passar user/senha para navegar.

instalando

samba

aptitude install samba

winbind

aptitude install winbind

squid

aptitude install squid

configurando

samba

smb.conf

smb.conf
[global]
        workgroup = Empresa
        server string = Empresa PDC Server
        netbios name = squidXX
        domain logons = no
        domain master = no
        password server = 172.16.1.1
        logon path =
        logon drive =
        logon home =
        logon script = default.cmd
        security = domain
        encrypt passwords = true
        message command = /bin/sh -c '/usr/bin/linpopup "%f" "%m" %s; rm %s' &
        guest account = nobody
        #invalid users = root
        unix password sync = no
        bind interfaces only = yes
        winbind separator = /
        winbind uid = 10000-20000
        winbind gid = 10000-20000
        winbind enum users = yes
        winbind enum groups = yes
        winbind use default domain = yes

entrando no dominio

é necessário ingressar a máquina no domínio

net rpc join -S 172.16.1.1 -UAdministrator%senha

winbind

permissoes

Edite o arquivo /etc/init.d/winbind e altere a linha

chgrp winbindd_priv $PIDDIR/winbindd_privileged/ || return 1

para

chgrp proxy $PIDDIR/winbindd_privileged/ || return 1

sem isso a autenticação não funciona pois o squid não consegue ler os arquivos do diretório

/var/run/samba/winbindd_privileged

ele tem que ter a seguinte permissão, owner e grupo

drwxr-x--- 2 root proxy  4096 2010-12-15 14:23 winbindd_privileged

isso é importante, não esqueça

alteração no arquivo nsswitch.conf

Edite o arquivo /etc/nsswitch.conf e altere as linhas

passwd:         compat
group:          compat 
shadow:         compat

para

passwd:         compat winbind
group:          compat winbind
shadow:         compat winbind

com isso, a autenticação dos usuários passa a ser gerenciada pelo winbind.

squid

squid.conf

#### porta #################################
 
http_port 3128
 
### hostname ###################
 
visible_hostname proxy.empresa
 
### dns servers #################
 
dns_nameservers 172.16.1.1
 
### configuracoes de cache ############
# referencia: http://www.visolve.com/squid/squid24s1/cache_size.php
# referencia: http://www.visolve.com/squid/squid24s1/cache_size.php#cache_replacement_policy
 
# setando para 2 gigas, os outros 2 gigas vamos deixar 1 giga para sistema e
# 1 giga para operação do cache em disco
 
cache_mem 2048 MB
 
# tamanho de objetos em memoria e disco
 
maximum_object_size_in_memory 512 KB
maximum_object_size 64 MB
minimum_object_size 0 KB
 
# quais o rate para objetos devem serem swapados
cache_swap_low 90
cache_swap_high 95
 
# heap GDSF: otimiza o "hit rate" por manter objetos pequenos e
# e populares no cache, guardando assim um numero maior de objetos
# ao inves de buscar no disco ja esta na memoria, maior velocidade
# na resposta ao usuario
 
memory_replacement_policy heap GDSF
 
# heap LFUDA: otimiza o "byte hit rate" por manter objetos populares
# no cache sem levar em conta o tamanho. Se for utilizado este, o
# maximum_object_size devera ser aumentado para otimizar o LFUDA.
 
cache_replacement_policy heap LFUDA
 
# Lembrando que cada 10GB de cache o squid consome 100MB de ram para gerenciar isto
# colocando 100GB de STORAGE o squid vai usar 1 Giga da RAM para gerenciar o cache do disco
# estou reservando entao 3 gigas para o squid, 2 para cache_mem e 1 para cuidar do cache em disco, sobrando 1 GB para o sistema usar.
# Em relacao ao metodo de gerenciamento do cache, aufs é + rapido que ufs
 
cache_dir aufs /var/spool/squid 100240 16 256
 
# user/group/manager
 
cache_mgr infraestrutura@empresa.com.br
cache_effective_user proxy
cache_effective_group proxy
 
### ttl de objetos no cache ###########################
# http://www.squid-cache.org/Doc/config/refresh_pattern/
 
refresh_pattern ^ftp:                1440        20%        10080
refresh_pattern ^gopher:        1440        0%        1440
refresh_pattern -i (/cgi-bin/|\?) 0        0%        0
refresh_pattern (Release|Package(.gz)*)$        0        20%        2880
refresh_pattern .                0        20%        4320
 
### autenticacao #########################################
# http://wiki.squid-cache.org/Features/Authentication
 
# NTLM
 
# para quem esta logado em maquinas windows, aproveita a senha do logon
auth_param ntlm children 250
auth_param ntlm program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp
auth_param ntlm keep_alive on
 
# para clientes nao windows, user/senha tem de ser solicitado
auth_param basic program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-basic
auth_param basic children 250
auth_param basic realm "Autenticacao Proxy - EMPRESA"
 
external_acl_type nt_group ttl=360000 concurrency=15 %LOGIN /usr/lib/squid/wbinfo_group.pl
 
###
### listas de controle #######################
###
 
# ?
hierarchy_stoplist cgi-bin ?
 
# acl ligada a autenticacao
 
# acesso padrao daemon squid
acl all src all
acl manager proto cache_object
acl localhost src 127.0.0.1/32
acl to_localhost dst 127.0.0.0/8
 
# redes para icp (proxy filho)
acl localnet src 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16
 
# portas seguras
acl SSL_ports port 443                # https
acl SSL_ports port 563                # snews
acl SSL_ports port 873                # rsync
 
# portas comuns
acl Safe_ports port 80                 # http
acl Safe_ports port 21                 # ftp
acl Safe_ports port 443                # https
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 6500               # Video RNP
 
# acl zimbras
acl zimbraWebmail url_regex ^http://webmail.empresa.com.br$
 
# acl que especifica metodos de conectividade
acl purge method PURGE
acl CONNECT method CONNECT
 
# acl que especifica tipo de consulta QUERY em cgi-bin
acl QUERY urlpath_regex cgi-bin \?
 
# acls com excessoes em headerss
acl shoutcast rep_header X-HTTP09-First-Line ^ICY\s[0-9]
acl apache rep_header Server ^Apache
 
# acl com lista de sites que nao devem ser cacheados
acl semcache url_regex "/etc/squid/acls/semcache"
 
# acl com lista de sites que nao necessitam de autenticacao
acl semauth url_regex www.bb.com.br .bancobrasil. .google. .caixa.gov.br
 
# acl que especifica sites/destinos internos
acl empresa dst 172.16.0.0/16 10.61.0.0/16 192.168.20.0/23
 
# acl com sites que devem ser bloqueados (criado por mim)
acl sitesbloqueados url_regex "/etc/squid/acls/sitesbloqueados"
 
# acl com sites que devem ser liberados, tratando excessoes do sitesbloqueados
acl sitesliberados url_regex "/etc/squid/acls/sitesliberados"
 
# acl com lista de ips vip (tudo liberado para esses)
acl vips src "/etc/squid/acls/vips"
 
# acl para especificar uso obrigatorio de proxy
acl ntlm_users proxy_auth REQUIRED
 
###
### controle de acesso #############################################
###
 
# liberacoes padrao daemon/localhost
http_access allow manager localhost
http_access deny manager
http_access allow purge localhost
http_access deny purge
 
# nao libera portas diferentes de Safe_ports e SSL_ports
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
 
# nao cacheia cgi-bin
cache deny QUERY
 
# permite acesso direto para sites internos e sites da acl 'semauth'
always_direct allow empresa
always_direct allow semauth
 
# nao faz cache dos sites nas acls 'semcache', 'empresa', 'semauth' e 'zimbras'
no_cache deny semcache
no_cache deny semauth
no_cache deny empresa
no_cache deny zimbraWebmail
no_cache deny zimbraMbox1
no_cache deny zimbraMbox2
no_cache deny zimbraMbox3
 
# libera acesso sem proxy para acls 'semauth' e 'empresa'
http_access allow all semauth
http_access allow all empresa
 
# libera acesso pra ips vips
http_access allow vips
 
# libera acesso com proxy para sites restantes
#http_access allow ldap_users
http_access allow ntlm_users
 
# bloqueando acesso a sites da acl 'sitesbloqueados' com excessao dos sites da acl 'sitesliberados'
http_access deny all sitesbloqueados !sitesliberados
 
# bloqueia qualquer acesso que nao tenha casado com as regras acima
http_access deny all
 
###
### processando em paralelo ###########
###
 
# http://www.visolve.com/squid/squid24s1/delaypool.php
 
pipeline_prefetch on
 
### reiniciando rapidamente #######
 
shutdown_lifetime 1 second
 
### estatisticas de conexao #######
 
# If enabled, squid will keep statistics on each client.
# This can become a memory hog after a while, so it’s best to keep it disabled.
 
client_db off
 
### conexoes #################
 
# Sends a connection-close to clients
# that leave a half open connection to the squid server.
 
half_closed_clients off
 
### controles misc #####################################
 
upgrade_http0.9 deny shoutcast
broken_vary_encoding allow apache
extension_methods REPORT MERGE MKACTIVITY CHECKOUT
 
### controles de ICP (proxys filho) ###########################
 
icp_access allow localnet
icp_access deny all
 
### snmp ####################
 
acl snmpcommunity snmp_community empresa
snmp_port 3401
snmp_access allow snmpcommunity localhost
snmp_access deny all
 
### logs #################
 
access_log /var/log/squid/access.log squid
cache_log /var/log/squid/cache.log
 
# Log de objetos guardados. Pode ser desativado para melhorar a performance
cache_store_log none
 
### idioma das mensagens do squid para usuarios ################
 
error_directory /usr/share/squid/errors/Portuguese
 
### arquivos ###################
 
hosts_file /etc/hosts
coredump_dir /var/spool/squid

file system

Primeiro, separe o /var/spool/squid em uma partição específica

Se estiver usando ReiserFS desligue o notail e noatime.

Se estiver usando EXT3 desligue o noatime.

O Linux salva em cada arquivo a informação de data e hora de ultimo acesso além de ultima modificação, e como o Squid utiliza seu timestamp próprio, é inutil contar com o timestamp do filesystem. Para melhorar o acesso aos arquivos de cache setamos então o diretório de cache com o parâmetro “noatime”

Se você não separou o sistema de arquivos, ainda assim dá para desligar o notime do diretório

chattr -R +A /var/spool/squid

file descriptors

Edite o /etc/security/limits.conf

Aumente o numero de file descriptors para 10240, adicionando as seguintes linhas no final do arquivo:

proxy		-	nofile		10240
root		-	nofile		10240

a máquina precisa ser reiniciada para as alterações entrarem em vigor.

testes

comando: wbinfo -t 
descrição: verifica se o servidor ingressou corretamente no dominio
saída correta: checking the trust secret via RPC calls succeeded.
comando: getent passwd
descrição: lista os usuários remotos (dominio)
saída correta: listar todos os usuários.

referencias



squid_autenticando_em_ntlm.txt · Last modified: 2012/03/28 17:52 by gutocarvalho
CC Attribution-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0