Proxy Squid com SquidGuard + Controle de Banda e Autenticação NTLM no Samba 4 (CentOS 6.5 - 64 bits Minimal)

Depois de cinco dias brigando na frente do PC e fuçando muito na Internet (lembrando que esse assunto, em especial, ainda tem pouca coisa a respeito), só hoje consegui por em funcionamento. Squid + SquidGuard + autenticação no Samba 4 ou AD (Microsoft). Espero que ajude aos amigos que buscam a mesma solução.

[ Hits: 56.683 ]

Por: Fagner Silva do Nascimento em 11/04/2014


Configurações iniciais



Instalando repositórios:

# rpm -Uvh http://fedora.uib.no/epel/6/i386/epel-release-6-8.noarch.rpm
# yum clean all
# yum -y update


Desativando o Firewall e o SELinux:

# chkconfig iptables off
# chkconfig ip6tables off
# setenforce 0

# vi /etc/selinux/config

 selinux=disabled

Instalando dependências e pacotes necessários:

# yum -y install flex bison squid squidGuard samba samba-client samba-common samba-winbind pam_krb5 bind-utils httpd

Ajustando a inicialização dos programas:

# chkconfig httpd on
# chkconfig squid on
# chkconfig smb on
# chkconfig nmb on
# chkconfig winbind on


Ajustando resolução de nomes:

Obs.: faça primeiro um backup do arquivo original:

# cp -Rfa /etc/resolv.conf{,.bkp}

# vi /etc/resolv.conf

 search dominio.local
 nameserver 192.168.100.11  # IP DO SERVIDOR AD OU SAMBA 4


Executando testes:

# nslookup dominio.local
 Server: 192.168.100.11
 Address: 192.168.100.11#53
 
 Name:   dominio.local
 Address: 192.168.100.11


Ajustando a hora:

# yum -y install ntpdate
# ntpdate -u ntp.usp.br
    # Se tiver NTP da rede local aponte para o IP/nome dele

Configurando Kerberos

Fazer backup do arquivo de configuração:

# cp -Rfa /etc/krb5.conf{,.bkp}
# rm -rf /etc/krb5.conf
# vi /etc/krb5.conf


[libdefaults]
default_realm = dominio.local
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]
dominio.local = {
  kdc = 192.168.100.11
  admin_server = 192.168.100.11:749
  default_server = 192.168.100.11
}

[domain_realm]
.dominio.local=dominio.local
dominio.local=dominio.local

[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

Para que não ocorra erros no Samba:

# vi /etc/security/limits.conf

Insira as informações abaixo no final do arquivo:

root hard nofile 131072
root soft nofile 65536
mioutente hard nofile 32768
mioutente soft nofile 16384

Ajustando Samba

Backup do arquivo de configuração:

# cp -Rfa /etc/samba/smb.conf{,.bkp}
# rm -rf /etc/samba/smb.conf
# vi /etc/samba/smb.conf


[global]
workgroup = DOMINIO
realm = DOMINIO.LOCAL
netbios name = CentOS
server string = Servidor Proxy CentOS
security = ADS
auth methods = winbind
password server = 192.168.100.11 # IP DO SAMBA 4
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
load printers = No
printcap name = cups
disable spoolss = Yes
local master = No
domain master = Yes
idmap uid = 10000-30000
idmap gid = 10000-30000
winbind cache time = 15
winbind enum users = Yes
winbind enum groups = Yes
winbind use default domain = Yes

Faça um backup do arquivo /etc/nsswitch.conf:

# cp /etc/nsswitch.conf{,.bkp}

Ajustar conforme arquivo abaixo:

# vi /etc/nsswitch.conf

[...]
passwd: files winbind
shadow: files
group: files winbind
[...]

Ajustando privilégios:

# gpasswd -a squid wbpriv

Iniciando serviços:

# /etc/init.d/nmb start
# /etc/init.d/smb start
# /etc/init.d/winbind start


Ingressando o servidor no domínio:

# net ads join dominio.local -U administrador
 Enter administrador's password: [A SENHA DO ADMINISTRADOR DO SAMBA 4]
 Using short domain name -- DOMINIO
 Joined 'CENTOS' to realm 'DOMINIO.LOCAL'


Reinicie os serviços

# /etc/init.d/smb restart
# /etc/init.d/nmb restart
# /etc/init.d/winbind restart


Verifique a comunicação:

# wbinfo -t
 checking the trust secret for domain DOMINIO via RPC calls succeeded

# wbinfo -u
 administrator
 johnny
 krbtgt
 guest


# wbinfo -g
 allowed rodc password replication group
 enterprise read-only domain controllers
 denied rodc password replication group
 read-only domain controllers
 group policy creator owners
 ras and ias servers
 domain controllers
 enterprise admins
 domain computers
 cert publishers
 dnsupdateproxy
 domain admins
 domain guests
 schema admins
 domain users
 dnsadmins
 internet-ti
 internet-comercial
 internet-diretoria


    Próxima página

Páginas do artigo
   1. Configurações iniciais
   2. Configurando o Squid
   3. Configurando o SquidGuard
Outros artigos deste autor

BIND 9 - DNS Master e Slave CentOS 6.4 Minimal

Leitura recomendada

Docker - Containers em Linux

Servidor Proxy - Parte I

Envio de e-mail criptografado pelo Zabbix usando Postfix

VLAN Tagging nos sistemas GNU/Linux derivados do Red Hat

Configuração do ZERO de um Servidor DHCP

  
Comentários
[1] Comentário enviado por jorgevisentini em 15/04/2014 - 21:08h

Muito bom o tutorial.

Amigo, tenho uma dúvida. Quando o Squid não está integrado com o AD, a troca de permissões, acessos é instantâneo, porém quando integrei com o AD, quando eu mudo o grupo do usuário no AD, leva alguns minutos para surtir efeito.

É correto isso?

Outra coisa... já peguei vários caso em tive que reiniciar o Wimbind porque o navegador não detectava o proxy e/ou não solicitava usuário e senha...

Isso acontece com você ou é alguma configuração que está faltando?

Valeuu

[2] Comentário enviado por morati em 10/06/2014 - 21:40h

Não consegui, mesmo seguindo seu tutorial. Uma dúvida, eu posso integrar apenas o squidguard sem o squid com o samba4?
tem algum contato skype ou gtalk? estou quebrando a cabeça ha dois dias!

[3] Comentário enviado por diegojr554 em 17/12/2014 - 14:54h

Segui o seu tutorial e tudo funcionou normalmente, mas estou tendo problemas com os logs, por exemplo quando um usuário tenta acessar um site que está bloqueado o proxy bloqueia normalmente, mas no log aparece a mensagem como TCP_MISS/200 quando devia ser 401 ou 403. Como estou usando lightsquid, os relatórios aparecem como se o usuário tivesse acessado a página.

[4] Comentário enviado por rubensvital em 25/06/2015 - 14:32h


Valeu! Agora está funcionando a autenticação.
Só não consegui user o squidguard. Eu tenho que configurar estas listas no meu ad?
Quando uso o squidGuard -b -u -C all, fica um tempão, mas não aparece nada no log.

[5] Comentário enviado por marcelohcm em 06/08/2015 - 15:51h


como eu faço a liberação por usuário, e não por grupo??

[6] Comentário enviado por marcelohcm em 29/09/2015 - 11:20h


gostaria de saber como faço a liberação por usuário, e não por grupo!
obrigado.

[7] Comentário enviado por rafael.mendes em 01/10/2016 - 15:26h

Boa Tarde.

No arquivo de log do SquidGuard estou recebendo essa mensagem...

2016-10-01 15:21:39 [2716] (squidGuard): ldap_simple_bind_s failed: Strong(er) authentication required

nas config do squidguard.conf esta setado usuário e senha com o caminho da CN correta... já validei

# Autenticacao LDAP
ldapbinddn cn=squid,ou=TI,ou=Usuarios,dc=rmitsolucoes,dc=net
ldapbindpass senha@squid2016
ldapcachetime 60

Mas o log continua dando falha...
Alguma ideia?


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts