Distribuição Usada:
Ubuntu Server 8.04 (mas deve funcionar em qualquer uma)
Pacotes necessários:
samba-3.0.21c.tar.gz
squid-2.5.STABLE12.tar.gz
Considerações:
Nome do domínio: DOMINIO
Nome completo do domínio: DOMINIO.LOCAL
Nome do Servidor: SERVIDOR (Controlador de Domínio)
IP do Servidor(Controlador de Domínio): 192.168.0.1
Baixe os pacotes
# cd /usr/src
# wget http://ppp.samba.org/samba/ftp/stable/samba-3.0.21c.tar.gz
# wget http://www.squid-cache.org/Versions/v2/2.5/squid-2.5.STABLE12.tar.gz
Descompacte compile e instale o Samba
# tar zxvf samba-3.0.21c.tar.gz
# cd samba-3.0.21c/source
# ./configure --bindir=/bin --sbindir=/usr/sbin --with-winbind --with-winbind-auth-challenge
# make && make install
Copie a biblioteca do Winbind e crie um link simbólico
# cp /usr/src/samba-3.0.21c/source/nsswitch/libnss_winbind.so /lib
# ln -s /lib/libnss_winbind.so /lib/libnss_winbind.so.2
Edite o arquivo /etc/hosts o adicione o ip do controlador de domínio
# vim /etc/hosts
Coloque a seguinte linha alterando os nomes de acordo com sua rede e nomes
192.168.0.1 servidor.dominio.local servidor
Instale o ntpdate para sincronizar o horário dos servidores
# apt-get update
# apt-get install ntpdate
# ntpdate servidor
Instale os seguintes pacotes krb5-kdc krb5-config krb5-clients libpam-krb5 krb5-user
# apt-get install krb5-kdc krb5-config krb5-clients libpam-krb5 krb5-user
Edite o arquivo /etc/krb5.conf
# vim /etc/krb5.conf
E deixe da seguinte forma:
[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.0.1
admin_server = 192.168.0.1:749
default_domain = 192.168.0.1
}
[domain_realm]
domínio.local = DOMINIO.LOCAL
.domínio.local = DOMINIO.LOCAL
[login]
krb4_convert = true
krb4_get_tickets = false
# kinit administrador@DOMINIO.LOCAL
Onde “administrador” é uma conta administrador do servidor.
Dê o comando
# klist
Se tudo der certo você vera uma mensagem como esta:
klist: No credentials cache found (ticket cache FILE:/tmp/krb5cc_0)
Kerberos 4 ticket cache: /tmp/tkt0
klist: You have no tickets cached
# vim /etc/nsswitch.conf
altere as linhas:
passwd: compat
group: compat
para:
passwd: compat winbind
group: compat winbind
Crie e edite o arquivo /usr/local/samba/lib/smb.conf
# vim /usr/local/samba/lib/smb.conf
deixando assim:
[global]
workgroup = DOMINIO
server string = Servidor Proxy
netbios name = proxy
log file = /var/log/samba/%m.log
max log size = 0
security = domain
password server = SERVIDOR
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
encrypt passwords = yes
wins server = SERVIDOR
winbind separator = "+"
winbind uid = 10000-20000
winbind gid = 10000-20000
template homedir = /dev/null
template shell = /dev/null
winbind use default domain = yes
Crie a pasta e dê permissão e reinicie o samba
# mkdir /var/log/samba
# chmod 777 -R /var/log/samba/
# nmbd restart
# smbd restart
# winbindd restart
Agora vamos ingressar o servidor proxy no domínio e restartar o samba. Digite a senha do usuário usado (administrador no caso) após dar o comando de ingresso.
# net rpc join DOMINIO -U administrador
# nmbd restart
# smbd restart
# winbindd restart
Para testar digite “wbinfo –u”. Se tude der certo, você terá a listagem de usuários do domínio.
Agora vamos descompactar, compilar e instalar o squid.
# cd /usr/src
# tar zxvf squid-2.5.STABLE12.tar.gz
# cd squid-2.5.STABLE12
# ./configure --sbindir=/usr/sbin --sysconfdir=/etc/squid --enable-default-err-language=Portuguese --enable-delay-pools --enable-underscores --enable-auth="ntlm,basic" --enable-external-acl-helpers="winbind_group,wbinfo_group," --enable-store-io=ufs,aufs,diskd --enable-snmp --enable-linux-netfilter --enable-basic-auth-helpers="winbind" --enable-ntlm-auth-helpers="SMB,winbind" --with-winbind-auth-chalenge
# make && make install
# mv /etc/squid/squid.conf /etc/squid/squid.conf.original
# egrep -v "^#^$" /etc/squid/squid.conf.original > /etc/squid/squid.conf
Adicione as linhas a seguir ao seu squid.conf. As linhas em vermelho devem ser adicionadas, e as outras são apenas para referencia a localização das outras. Altere as acls abaixo a gosto para dar permissões diferentes aos usuários do proxy.
cache_effective_user proxy
auth_param ntlm program /bin/ntlm_auth DOMINIO/SERVIDOR --helper-protocol=squid-2.5-ntlmssp
auth_param ntlm use_ntlm_negotiate off
auth_param ntlm children 10
auth_param ntlm max_challenge_reuses 0
auth_param ntlm max_challenge_lifetime 5 minutes
auth_param basic program /bin/ntlm_auth DOMINIO/SERVIDOR --helper-protocol=squid-2.5-basic
auth_param basic children 5
auth_param basic realm Digite seu login e senha.
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off
acl CONNECT method CONNECT
acl acesso proxy_auth REQUIRED # Solicitando a autenticação
http_access allow manager localhost
http_access deny CONNECT !SSL_ports
http_access allow acesso # Liberando usuários autenticados
http_access allow all
Para finalizar
# mkdir /usr/local/squid/var/cache
# touch /usr/local/squid/var/logs/store.log
# touch /usr/local/squid/var/logs/access.log
# chown -R proxy.proxy /usr/local/squid/var/cache
# chown proxy /usr/local/squid/var/logs/store.log
# chown proxy /usr/local/squid/var/logs/access.log
# chown root.proxy /usr/local/samba/var/locks/winbindd_privileged
# winbindd restart
# nmbd restart
# smbd restart
# squid -z
# squid &
Não se esqueça de configurar o proxy no navegador das estações na porta 3128(ou mais conveniente caso alterou no squid.conf) e também não esqueçam de colocar o samba e winbind num script de inicializacao do sistema.(ex. /etc/rc.local). Qualquer dúvida fiquem a vontade para perguntar, pq responderei na medida do possível.
