[FUG-BR] RES: - HOWTO - squid com autenticação no Active Directory

Sérgio Ferreira ( WGO ) sergio em wgo.com.br
Sexta Junho 20 15:14:04 BRT 2008


#####################################################################
## How-TO para autenticação de usuário do SQUID no Active Directory
##
##  By, Sérgio Ferreira
##   
##  sergio at wgo.com.br - WGO Telecom 
##  sergioferreira at mmcb.com.br - Mitsubishi Motors
##
#####

squid autenticando no AD via winbind.

Neste tipo de autenticação, não aparecerá a janela pedindo 
usuário e senha se o usuário já estiver autenticado no AD.


***  preparar o ambiente -

Compilar o kernel do freebsd com essas opções :

# Recursos de memoria para o SQUID
options         MSGMNB=16384 # max # of bytes in a queue
options         MSGMNI=64 # number of message queue identifiers
options         MSGSEG=512 # number of message segments per queue
options         MSGSSZ=64 # size of a message segment
options         MSGTQL=2048 # max messages in system

options         SHMSEG=16 # max shared mem id's per process
options         SHMMNI=32 # max shared mem id's per system
options         SHMMAX=2097152 # max shared memory segment size (bytes)
options         SHMALL=4096 # max amount of shared memory (pages)


*** instalar o Samba
samba 3.0.x
./configure --with-winbind



configurar o samba - smb.conf

[global]
        workgroup = _NOME_DOMINIO_  // nome NETBIOS
        os level = 2
        unix extensions = yes
        map to guest = no
        debug level = 1
        socket options = SO_KEEPALIVE IPTOS_LOWDELAY TCP_NODELAY
        wins server = 172.30.32.15
        veto files = /*.eml/*.nws/riched20.dll/*.{*}/
        netbios name = PROXY01
        security = domain
        realm = MMCB.INTRANET
        password server = 172.30.32.15, 172.30.32.95
        encrypt passwords = yes

        server string = proxycat - Samba Server

        allow trusted domains = yes
        winbind uid = 10000-20000
        winbind gid = 10000-20000
        winbind use default domain = yes
        winbind enum users = yes
        winbind enum groups = yes
        winbind nested groups = Yes
        winbind separator = \\

        hosts allow =  172.30. 172.26. 172.28.

	# This tells samba to write log files per machine.
        log file = /var/log/samba/samba.log

	# This sets an alternate log level. Default is 2.
        log level = 3
        max log size = 50

        interfaces = 172.30.32.80/255.255.255.0


## Agora, tem que juntar o servidor ao dominio do AD

#>/usr/local/samba/bin/net rpc join -S __NOME_DOMINIO__ -tmn -U
Administrator
password :  ( forneça a senha do Administrador do AD )

Joined domain __NOME_DOMINIO__


Agora é iniciar o serviço do WinBind :


#>/usr/local/samba/sbin/winbindd


## Se tudo estiver certo, poderá usar os comandos :

#>wbinfo -t
checking the trust secret via RPC calls succeeded

#>wbinfo -u
vai trazer a lista de usuários do AD

#>wbinfo -g
vai trazer a lista de usuários de AD




*** Ok, agora vamos instalar o squid e configurá-lo :
proxycat1# squid -v
Squid Cache: Version 2.6.STABLE13
configure options: '--enable-dlmalloc' 
                   '--enable-storeio=diskd ufs' 
                   '--disable-ident-lookups' 
                   '--enable-carp' 
                   '--enable-removal-policies=heap lru' 
                   '--enable-icmp' 
                   '--enable-delay-pools' 
                   '--with-openssl' 
                   '--enable-forw-via-db' 
                   '--enable-default-err-language=Portuguese' 
                   '--enable-err-languages=Portuguese English Spanish' 
                   '--enable-poll' 
                   '--enable-leakfinder' 
                   '--enable-underscores' 
                   '--enable-auth=basic digest ntlm' 
                   '--enable-basic-auth-helpers=PAM SMB NCSA LDAP' 
                   '--enable-ntlm-auth-helpers=SMB no_check fakeauth' 
                   '--enable-digest-auth-helpers=password' 
                   '--with-samba-sources=/usr/programas/samba-3.0.20b' 
                   '--enable-ntlm-fail-open' 
                   '--enable-external-acl-helpers=ip_user unix_group
ldap_group wbinfo_group'




Agora o squid.conf :


## inicio do squid.conf ###

#debug_options all,1 33,3
visible_hostname cache.mmcb.com.br

http_port 3128
icp_port 0

hierarchy_stoplist cgi-bin ?

acl QUERY urlpath_regex cgi-bin \?
no_cache deny QUERY

minimum_object_size 0 KB
maximum_object_size_in_memory 10 KB

cache_mem 48 MB
cache_replacement_policy lru
memory_replacement_policy lru

cache_dir diskd /usr/local/squid/var/cache 15245 16 256
cache_access_log /usr/local/squid/var/logs/access.log
cache_log /usr/local/squid/var/logs/squid.out
cache_store_log none

mime_table /usr/local/squid/etc/mime.conf

pid_filename /var/run/squid.pid

ftp_passive on
ftp_sanitycheck on

hosts_file /etc/hosts

auth_param ntlm program /usr/local/samba/bin/ntlm_auth
--helper-protocol=squid-2.5-ntlmssp
auth_param ntlm children 20

auth_param basic program /usr/local/samba/bin/ntlm_auth
--helper-protocol=squid-2.5-basic
auth_param basic children 20
auth_param basic realm Autenticacao de acesso a internet
auth_param basic credentialsttl 2 hours

authenticate_cache_garbage_interval 1 hour
authenticate_ttl 1 hour
authenticate_ip_ttl 60 seconds

refresh_pattern ^ftp:           1440    20%     10080
refresh_pattern ^gopher:        1440    0%      1440
refresh_pattern .               0       20%     4320

connect_timeout 2 minute

peer_connect_timeout 30 seconds


# Todas as redes da empresa
acl rede src 172.26.0.0/255.255.0.0
acl rede src 172.28.0.0/255.255.0.0


acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl SSL_ports port 443


http_access allow localhost

acl Safe_ports port 80 81 8080 
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 444 1049 1972 2848 5024 44718 # portas re-liberadas

acl Deny_ports port 5190 1863 445   # portas negadas
acl CONNECT method CONNECT

http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports


##--------------- Sites com permissoes diferenciadas ---------------------

# direto sem autenticação
acl site_xx dst 200.200.200.200
http_access allow site_xx rede

acl bradesco dst 200.155.80.12
http_access allow bradesco rede


# Permitir Acesso sem autenticacao a qualquer url deste arquivo
acl sem_senha url_regex "/usr/local/squid/etc/url_sem_senha.txt"
http_access allow sem_senha


#**********************  AUTENTICACAO DE USUARIOS *************************

## Liberar google_earth para o login __login_do_usuário__
## 24/04/2007 - HelpDesk 31543
acl login_x proxy_auth _login_do_usuário_
acl google_earth url_regex -i google-earth
acl google_earth url_regex -i google.com
http_access allow login_x google_earth rede

# outras liberações por login do usuário


# Verificar grupo do usuario
external_acl_type NT_global_group ttl=600 children=35  %LOGIN
/usr/local/squid/libexec/wbinfo_group.pl


# Verificar gredenciais do usuario
acl Internet proxy_auth REQUIRED



# -------------Grupo Infra-Estrutura de Sistemas--------------------
acl InfraEstrutura external NT_global_group GG_CAT_Sistemas_Infra
http_access allow rede Internet InfraEstrutura
## GG_CAT_Sistemas_Infra é o nome do grupo no Active Directory


# -------------Grupos com acesso a internet-------------------------
acl InternetUsers_spo external NT_global_group GrInternetSP
acl InternetUsers_cat external NT_global_group GrInternet
## temos duas unidades...aqui eu verifico se o usuário tem acesso a internet
## para ter, tem que estar no grupo GrInternetSP ou GrInternet do AD

# -------------Grupo com acesso as urls abaixo sem restricao -------
acl url_allow url_regex -i "/usr/local/squid/etc/url_allow.txt"
http_access allow Internet InternetUsers_spo url_allow rede
http_access allow Internet InternetUsers_cat url_allow rede
## permito o acesso se :
##    estiver autenticado ( Internet )
##    for do grupo InternetUsers_spo ou _cat
##    for da rede da empresa ( rede )
##    e se a url estiver no arquivo url_allow.txt


# -------------Grupo Diretores--------------------------------------
acl Diretores external NT_global_group Internet_Diretores
http_access allow rede Internet Diretores
## diretores são diretores :-)


# -------------Grupo com acesso ao MSN -----------------------------
acl PermiteMsn external NT_global_group GG_ORG_MSN
acl MsnMessenger url_regex -i ADSAdClient31
acl MsnMessenger url_regex -i gateway.dll
acl MsnMessenger url_regex -i Client31.dll
acl MsnMessenger url_regex -i passport.com
acl MsnMessenger url_regex -i loginnet.passport.com
acl MsnMessenger url_regex -i hotmail.com
acl MsnMessenger url_regex -i messenger.hotmail.com
acl MsnMessenger url_regex -i ebuddy
acl MsnMessenger url_regex -i login.live.com
acl MsnMessenger url_regex -i msn.com
http_access allow Internet rede PermiteMsn MsnMessenger

# ---------Negar acesso ao site windows_update e MSN---------------
http_access deny MsnMessenger


# -------------Negar acesso a sites considerados inadequados  -----
acl noporn url_regex -i "/usr/local/squid/etc/noporn.txt"
acl negar url_regex -i "/usr/local/squid/etc/porn_local.txt"
acl negar url_regex -i "/usr/local/squid/etc/negar.txt"
http_access deny !noporn negar

# ---------------- Negar Streamer  ---------------------------
acl x-type req_mime_type -i ^application/octet-stream$
acl x-type req_mime_type -i application/octet-stream
acl x-type req_mime_type -i ^application/x-mplayer2$
acl x-type req_mime_type -i application/x-mplayer2
acl x-type req_mime_type -i ^application/x-oleobject$
acl x-type req_mime_type -i application/x-oleobject
acl x-type req_mime_type -i ^application/x-pncmd$
acl x-type req_mime_type -i application/x-pncmd
acl x-type req_mime_type -i ^video/x-ms-asf$
acl x-type req_mime_type -i video/x-ms-asf

http_access deny x-type
http_reply_access deny x-type

# ----------------------- Negar Extensao ---------------------------
acl download_files urlpath_regex \.exe$ \.asf$ \.arj$ \.bzip$ \.ace$ \.iso$
\.adt$ \.cbt$ \.cla$ \.cmd$ \.com$ \.cpl$ \.csc$ \.dot$ \.drv$ \.lha$ \.lzh$
\.mso$ \.ov?$ \.pot$ \.shs$ \.sys$ \.mp3$ \.asf$ \.wma$ \.wmf$ \.ttf$ \.rar$
\.scr$ \.mpeg$ \.mpg$ \.wave$ \.wav$ \.zip$ 
http_access deny download_files


# -------------Permitir acesso aos demais usuarios com permissao ---
http_access allow Internet InternetUsers_spo rede
http_access allow Internet InternetUsers_cat rede

# Negar todo o resto
http_access deny all

http_reply_access allow rede
http_reply_access deny all

cache_mgr infracat at mmcb.com.br
cache_effective_user squid
cache_effective_group squid

coredump_dir /usr/local/squid/var/


ie_refresh on


### fim do squid.conf  #######




qualquer dúvida, entre em contato :

Abraços, 

Sérgio Ferreira
WGO Telecom

-----Mensagem original-----
De: freebsd-bounces at fug.com.br [mailto:freebsd-bounces at fug.com.br] Em nome
de Sérgio Ferreira ( WGO )
Enviada em: sexta-feira, 20 de junho de 2008 13:29
Para: 'Lista Brasileira de Discussão sobre FreeBSD (FUG-BR)'
Assunto: [FUG-BR] RES: Re: squid com autenticação no Active Directory.

Opa, 

	Tenho rodando aqui inclusive com autenticação de grupo.

	Vou montar um how-to e postar a receita de bolo aqui na lista.

	[]s

Sérgio Ferreira
WGO Telecom

-----Mensagem original-----
De: freebsd-bounces at fug.com.br [mailto:freebsd-bounces at fug.com.br] Em nome
de Diogo Dalfovo
Enviada em: sexta-feira, 20 de junho de 2008 13:18
Para: Lista Brasileira de Discussão sobre FreeBSD (FUG-BR)
Assunto: [FUG-BR] Re: squid com autenticação no Active Directory.
Prioridade: Baixa

Boa tarde

Uma forma que sei e ja usei sem ser a do do ntlm é usando pam_smb porem
imagino que deva exister outras formas 
creio que o pessoal mais experiente deve responder mais coisas

Diogo Dalfovo

On Fri, 20 Jun 2008 13:04:07 -0300, "Luis Barcellos"
<luisbarcellos at gmail.com> wrote:
> Boa tarde a todos!
> 
> 
> Depois de uma manhã goolgleando sem sucesso, gostaria de saber se alguém
> tem
> uma boa solução para autenticação do squid no AD, que não seja
> atravez do
> ntlm, pois o meu domínio é um 2003 nativo.
> 
> []s
> 
> Luis Barcellos
> -------------------------
> Histórico: http://www.fug.com.br/historico/html/freebsd/
> Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd

-------------------------
Histórico: http://www.fug.com.br/historico/html/freebsd/
Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd

-------------------------
Histórico: http://www.fug.com.br/historico/html/freebsd/
Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd



Mais detalhes sobre a lista de discussão freebsd