Autenticação de usuários no SQUID com a base do samba 4

Iniciado por lucascatani, 24 de Abril de 2021, 19:29

tópico anterior - próximo tópico

lucascatani

Tenho um servidor SAMBA 4 com diversos usuários e grupos criados.
TIve a necessidade de instalar o SQUID4 para fazer alguns bloqueios de sites.

A minha dúvida é como eu integro a autenticação do SAMBA no SQUID, para reaproveitar os usuários e grupos já criados.

Meu servidor SAMBA está igualzinho ao desse tutorial. https://www.tecmint.com/install-samba4-active-directory-ubuntu/

O SQUID recém instalado e sem configurações personalizadas. QUero começar do zero dando permissão a todos os usuários autenticados.

* Meu servidor roda ubuntu 20.04


/etc/samba/smb.conf

[global]
        dns forwarder = 8.8.8.8
        netbios name = SERVERLUCAS
        realm = LUCAS.LOCAL
        server role = active directory domain controller
        workgroup = LUCAS
        idmap_ldb:use rfc2307 = yes
        winbind enum users = yes
        winbind enum groups = yes
        kerberos method = secrets and keytab

[sysvol]
        path = /var/lib/samba/sysvol
        read only = No

[netlogon]
        path = /var/lib/samba/sysvol/lucas.local/scripts
        read only = No

zekkerj

Olá @lucascatani, seu Samba4 funciona, correto? Nesse caso podemos focar diretamente no funcionamento do Squid.

Pelo que pude ver, sua configuração do Samba é para domínio. Nesse caso, pode usar algum tutorial para configuração de autenticação do Squid no AD.
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

lucascatani

Citação de: zekkerj online 26 de Abril de 2021, 16:27
Olá @lucascatani, seu Samba4 funciona, correto? Nesse caso podemos focar diretamente no funcionamento do Squid.

Pelo que pude ver, sua configuração do Samba é para domínio. Nesse caso, pode usar algum tutorial para configuração de autenticação do Squid no AD.

Boa tarde. Exatamente. Está funcionando 100%. Você sabe conhece algum tutorial onde eu possa me basear? Tenho dúvida do tipo de autenticação que devo usar, o squid tem várias formas disponíveis:

basic_db_auth        basic_ncsa_auth  basic_radius_auth          ext_file_userip_acl          ext_sql_session_acl                 negotiate_kerberos_auth_test  pinger                 
basic_fake_auth      basic_nis_auth   basic_sasl_auth    digest_file_auth  ext_kerberos_ldap_group_acl  ext_time_quota_acl    log_db_daemon            negotiate_wrapper_auth        security_fake_certverify 
basic_getpwnam_auth  basic_pam_auth   basic_smb_auth     digest_ldap_auth  ext_ldap_group_acl           ext_unix_group_acl             ntlm_fake_auth               
basic_ldap_auth      basic_pop3_auth  basic_smb_auth.sh                 negotiate_kerberos_auth  ntlm_smb_lm_auth           

zekkerj

Eu vou ficar te devendo um link direto pra algum tutorial; mas acredito que em sites como o VivaOLinux e/ou o a ComunidadeHardware (antigo Guia do Hardware), vc deve encontrar material bom.

Sobre essas alternativas, acredito que vc vai terminar usando alguma das alternativas baseadas em Kerberos, NTLM ou SMB, nesta ordem. Se vc tiver implementado o AD completo, incluindo o serviço LDAP, pode também usar alguma das alternativas de autenticação associadas.

PS: Fiz uma busca rápida e encontrei estes resultados, entre outros:
https://www.google.com/search?q=squid+auth+samba+ad
https://lamasbr.github.io/2017/08/29/How-to-install-Samba-Squid-squid-Guard-using-NTLM-transparent-auth-Active-Directory-on-Ubuntu-16043-LTS.html
Este último pareceu bem explicado, mas está bem desatualizado.
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

lucascatani

Citação de: zekkerj online 27 de Abril de 2021, 20:28
Eu vou ficar te devendo um link direto pra algum tutorial; mas acredito que em sites como o VivaOLinux e/ou o a ComunidadeHardware (antigo Guia do Hardware), vc deve encontrar material bom.

Sobre essas alternativas, acredito que vc vai terminar usando alguma das alternativas baseadas em Kerberos, NTLM ou SMB, nesta ordem. Se vc tiver implementado o AD completo, incluindo o serviço LDAP, pode também usar alguma das alternativas de autenticação associadas.

PS: Fiz uma busca rápida e encontrei estes resultados, entre outros:
https://www.google.com/search?q=squid+auth+samba+ad
https://lamasbr.github.io/2017/08/29/How-to-install-Samba-Squid-squid-Guard-using-NTLM-transparent-auth-Active-Directory-on-Ubuntu-16043-LTS.html
Este último pareceu bem explicado, mas está bem desatualizado.

NA verdade sabendo qual o tipo de autenticação usar, o resto me viro:

Achei essas opções:
# OPTIONS FOR AUTHENTICATION
# -
# Kerberos authentication
auth_param negotiate program /usr/lib/squid/negotiate_kerberos_auth -r -d -s HTTP/proxy.example.tld@EXAMPLE.TLD -k /etc/krb5.keytab
auth_param negotiate children 20 startup=0 idle=1
auth_param negotiate keep_alive off

external_acl_type NACIONAL ttl=300 negative_ttl=60 %LOGIN /usr/lib/squid/ext_kerberos_ldap_group_acl -a -g Intranet -D EXAMPLE.TLD
external_acl_type INTERNET ttl=300 negative_ttl=60 %LOGIN /usr/lib/squid/ext_kerberos_ldap_group_acl -a -g Internet -D EXAMPLE.TLD
external_acl_type UNRESTRICTED ttl=300 negative_ttl=60 %LOGIN /usr/lib/squid/ext_kerberos_ldap_group_acl -a -g Unrestricted -D EXAMPLE.TLD
acl intranet external NACIONAL
acl internet external INTERNET
acl unrestricted external UNRESTRICTED

# NTLM authentication
auth_param ntlm program /usr/lib/squid/wsauth --dc1addr=dc.example.tld --dc1port=389
auth_param ntlm children 20 startup=5 idle=10
auth_param ntlm keep_alive off

# Using AD User's Basic Auth
auth_param basic program /usr/lib/squid/basic_ldap_auth -R -b "dc=example,dc=tld" -D squid3@example.tld -w "P@s$w0rd.789" -f (|(userPrincipalName=%s)(sAMAccountName=%s)) -h dc.example.tld
auth_param basic children 10
auth_param basic realm EXAMPLE.TLD
auth_param basic credentialsttl 8 hours
auth_param basic casesensitive on

external_acl_type memberof %LOGIN /usr/lib/squid/ext_ldap_group_acl -R -K -S -b "dc=example,dc=tld" -D squid3@example.tld -w "P@s$w0rd.789" -f "(&(objectClass=person)(sAMAccountName=%v)(memberof=cn=%g,OU=Proxy,OU=ACME,DC=example,DC=tld))" -h dc.example.tld
acl LDAPintranet external memberof INTRANET
acl LDAPinternet external memberof INTERNET
acl LDAPunrestricted external memberof UNRESTRICTED



zekkerj

Ótimo. Quando tiver algum resultado (mesmo que negativo!), traga aqui pra nos atualizar. Assim, mais tarde, também pode ajudar alguém que tenha o mesmo problema.
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

lucascatani

A resposta para esse tópico é bem mais complexa do que parecia, então quem tiver o mesmo problema, siga as aulas do professor ADEMIR DORNELES- Laboratórios de Serviços de Rede - Linux Debian 10. Link do Youtube dele: https://www.youtube.com/channel/UCbyJvQeMm3K6BSRjxSXCQJg

Vale muito a pena, você  que procura a mesma resposta vai além de tudo, aprender conceitos muito interessantes e expandir seu conhecimento.