Criei este artigo com a ajuda de todos os contribuintes com sites e outros artigos para a instalação de um servidor com firewall iptables para compartilhar a internet, proxy Squid, Sarg para monitoração dos acessos e com iptraf para monitoramento dos pacotes da rede.
O Samba é um "software servidor" para Linux (e outros sistemas baseados em Unix) que permite o gerenciamento e compartilhamento de recursos em redes formadas por computadores com o Windows. Assim, é possível usar o Linux como servidor de arquivos, servidor de impressão, entre outros, como se a rede utilizasse servidores Windows (NT, 2000, XP, Server 2003). Este artigo faz uma abordagem introdutória ao Samba, mostrando suas principais características e um pouco de sua história.
Winbind
O Windbind faz a integração entre o Linux e o Domínio NT e toda a comunicação com o Domínio NT é realizada através do Samba, neste caso apenas o Samba-client é utilizado, ou seja, sem carregar o serviço smb. O winbind é responsável por fazer a autenticação usando o NTLM.
Na verdade dentro do pacote samba contém o winbind se fizéssemos o download do samba via wget precisaríamos apenas compilar para usarmos o winbind, mas eu preferi instalar os dois, ai fica a gosto do freguês. A instalação do SAMBA e do WINBIND é simples e pode ser feita via apt-get. Então, vamos por a mão na massa:
# apt-get install samba winbind
Após rodarmos o comando acima, será aberta uma tela de configuração, onde é solicitado o nome do domínio, o uso de senhas encriptadas, que OBRIGATORIAMENTE tem que ser SIM e também é necessário que o samba crie o arquivo de senhas.
Agora é necessário configurar o samba. Para isso, vamos fazer backup do arquivo original e depois vamos criar o nosso arquivo de configuração.
# mv /etc/samba/smb.conf /etc/samba/smb.original # vi /etc/samba/smb.conf
O arquivo smb.conf deve conter OBRIGATORIAMENTE as linhas abaixo. Outras configurações podem ser feitas de acordo com a necessidade.
[global]
workgroup = ELETROMOTORES
netbios name = SRV-PROXY
server string = PROXY SERVER
load printers = no
log file = /var/log/samba/log.%m
max log size = 500
realm = ELETROMOTORES.COM.BR
security = ads
auth methods = winbind
password server = 192.168.52.3
winbind separator = +
encrypt passwords = yes
winbind cache time = 15
winbind enum users = yes
winbind enum groups = yes
winbind use default domain = yes
idmap uid = 10000-20000
idmap gid = 10000-20000
local master = no
os level = 233
domain master = no
preferred master = no
domain logons = no
wins server = 192.168.52.3
dns proxy = no
ldap ssl = no
Lembre-se de trocar o domínio na 1º linha mas coloque só o nome do domínio sem .com.br e colocar o nome do micro que será o proxy na 2º linha. Onde está password server coloque o ip do Domain Controller e onde está o Wins Server coloque o ip do servidor Dns que no meu caso é o mesmo do Domain Controller.
Criado o arquivo de configuração, vamos reiniciar os serviços do Samba e do Winbind.
Não se esqueça de verificar os logs para saber se tudo iniciou corretamente.
Agora vamos colocar a máquina Linux no domínio Windows.
# net ads join -U administrator -S ELETROMOTORES
Após digitar a senha, que será solicitada, o retorno deve ser semelhante ao retornado abaixo:
Using short domain name -- ELETROMOTORES
Joined 'PROXY' to realm 'ELETROMOTORES.COM.BR'
Pronto! A máquina que está rodando o LINUX já faz parte do Domínio Microsoft e pode ser vista no Active Directory Users and Computers.
Você também pode usar o seguinte comando:
# net rpc join ELETROMOTORES -S servidor -Uadministrador
Troque onde está ELETROMOTORES pelo seu domínio onde está SERVIDOR pelo nome do Domain Controller e ADMINISTRADOR por um usuário que tenha permissão de administrador ou pelo próprio mesmo.
Verificando se o Winbind está comunicando com o RPC Server:
# wbinfo -t
Retorno esperado: checking the trust secret via RPC calls succeeded
Listando usuários do AD:
# wbinfo -u
Listando os grupos do AD:
# wbinfo -g
Se não for esse o retorno, revise os passos acima.
[3] Comentário enviado por danielrsj em 25/08/2010 - 11:30h
Tem uma coisa que nao entendi muito bem aqui.
Eu ja havia feito o squid autenticar no dominio utilizando outros tutoriais daqui do VOL, porem toda vez que o usuario iria utilizar a internet teria que digita o nome de usuario e senha.
Entao mesmo que o usuario estivesse logado no dominio, ao usar a internet teria que digitar novamente o nome de usuario e senha.
Minha pergunta e a seguinte:
Nessa configuracao feita aqui neste tutorial, se o usuario logar no computador com a senha do dominio, ao usar o browser a autenticacao sera feita de forma transparente ou o usuario devera digitar novamente o login dele?
[4] Comentário enviado por removido em 26/08/2010 - 08:30h
Bom dia escrever_fl. Na verdade demora um pouco sim para escrever o artigo mas isso é bom porque vc aprende melhor pois o que seria da prática se não fosse a parte didática. Obrigado pelo comentário e abraço.
[6] Comentário enviado por removido em 26/08/2010 - 08:38h
Bom dia danielrsj. Conforme especificado no artigo ele faz sim autenticação pelos usuários do domínio, para isso ele usa wbinfo e essa acl que especifiquei abaixo. Qualquer estou a disposição.
Abraço.
[7] Comentário enviado por lucasfs em 26/08/2010 - 10:04h
Olá, gostaria de saber se quando o usuário abrir o navegador e tentar acessar algum site, se vai pedir o login e senha, mesmo sendo login/senha do dominio ou se o browser/proxy irá reconhecer que esta estação já está logada no domínio e não vai pedir autenticação.
[8] Comentário enviado por removido em 26/08/2010 - 11:32h
Ele irá reconhecer o usuário e senha do usuário autenticado no computador. Só irá pedir a senha quando vc setar o internet explorer para usar o proxy e quando der algum problema no servidor.
Mas sempre que for navegar ele irá reconhecer o usuário autenticado no micro.
Qualquer estou a disposição.
Só lembrando que ele faz essa consulta no domínio devido ao wbinfo e a acl que especifiquei acima.
Abraço.
[9] Comentário enviado por edusachs em 26/08/2010 - 16:27h
Meu amigo,
Acho (acho não, tenho certeza) que o titulo do seu artigo está um pouco errado.
Você integrou o Squid somente com autenticação NTLM.
Nesse teu artigo a autenticação Kerberos não está integrada no Squid, para você integrar a autenticação Kerberos do Active Directory ou MIT Kerberos ou até mesmo do Heimdal Kerberos, você deve usar um modulo chamado squid_auth_kerb no Squid.
[10] Comentário enviado por removido em 26/08/2010 - 17:51h
Bem postado caro colega no título do artigo eu coloquei autenticação ntlm e kerberos. Me expressei mal. Mas no artigo eu coloquei o funcionamento do kerberos e sua descrição e acho que deu pra entender que foi usado o protocolo kerberos como segurança na autenticação entre as estações, isso para proteção contra sniffer e como testes.
Mas me corrija se eu estiver errado.
Obrigado.
[11] Comentário enviado por edusachs em 02/09/2010 - 08:33h
Rafael,
Com certeza o titulo está induzindo o administrador de redes a fazer uma coisa que ele pensa que esta fazendo, mas na verdade ele não está fazendo, quando eu vi o seu artigo eu pensei que iria ver o squid_kerb_auth em funcionamento.
Você deveria de fazer um outro artigo separado ensinando como se faz a integração do Samba com o Active Directory utilizando a autenticação Kerberos, ou, o titulo do artigo deveria ser somente isso: Instalação do Squid com autenticação NTLM
[12] Comentário enviado por removido em 02/09/2010 - 17:44h
Edusachs obrigado pela correção, mas em momento algum eu disse que a autenticação do squid era kerberos mas também não coloquei que era a autenticação da estação de trabalho que autentica em kerberos. Mas como você sugeriu vou trabalhar em outro artigo com autenticação do squid em kerberos. Obrigado novamente.
[16] Comentário enviado por removido em 29/09/2010 - 10:49h
Olá wandz blza?
Cara minha versão do Debian é a Etch. Mas quando estava em fase de testes eu estava usando a versão Lenny e também tive problemas para ingressar o Debian no AD. E como estava com pressa de fazer o servidor usei a versão Etch. Posta suas dificuldades que nos tentaremos fazer juntos e resolvermos o problema.
[18] Comentário enviado por gregorio_rr em 23/11/2010 - 17:19h
Opa!
Não consigo autenticar meu squid pelo AD de forma alguma. Uso openSUSE 11.2 configurado Samba, Kerberos e tudo rodando com o sistema no domínio, quero que o squid autentique no AD pelo usuário que estiver "logado" na estação de forma que não apareça a tela de login no IE. Li seu artigo os posts, mas ainda não funcionou.
Tem alguma dica? Vou reformular meu squid.conf para rodar apenas apenas a autenticação.
[19] Comentário enviado por removido em 24/11/2010 - 09:22h
Olá bom dia. Primeiro obrigado pela post e pelo agradecimento.
Pelo que entendi você não está conseguindo autenticar via ntlm. O que faz com que o squid autentique no AD é o winbind que você deve ter instalado se seguiu o artigo. Vou colocar os pontos onde pode apresentar erro e com isso não autenticar no AD.
[20] Comentário enviado por rickbrandao em 24/05/2011 - 15:04h
Cara, Parabens pelo artigo, mas qd vou ingressar com o proxy no dominio, ingresso tranquilo com o comando net ads join -U administrator -S ELETROMOTORES, quando digito o comando wbinfo -t tudo tranquilo, mas qd digito wbinfo -u, aparece apenas os usuários locais do linux, e outra meu servidor AD nao deixa mais logar depois que ingresso com a maquina linux.
[21] Comentário enviado por removido em 24/05/2011 - 16:42h
Cara seguinte, desculpe as perguntas mas é só para eu me interar com seu problema:
Primeiro: Você tem um domínio na sua rede
Segundo: Seu active directory é um win 2003 ou superior
E cara esse comando que você descreve acima foi o comando que usei na minha rede pois meu usuário era um administrator e meu domínio era ELETROMOTORES. Bom depois de feito isso ai ela me mostrar com o comando wbinfo os meus usuários e grupos do AD. O que parece estar acontecendo ai é que vc não ingressou em domínio algum e o seu comando wbinfo está te trazendo os usuários e grupos do seu server linux.
Qualquer estamos ai. Abraço
[22] Comentário enviado por rickbrandao em 25/05/2011 - 14:13h
Olá amigão, bom meu AD é um 2008 enterprise sp1, entendi seu questionamento, realmente estou colocando meu dominio, sendo que o mesmo está configurado em Maiusculo. Então, tendo ingressar com o usuário "administrador" mesmo.
Estou usando o Ubuntu server 10.04.
Erro au tentar entrar no dominio
root@PROXY:/etc/samba# net ads join -U administrador -S SUFRACGPAM.BR
Enter administrador's password:
[2011/05/25 14:14:06, 0] libads/sasl.c:819(ads_sasl_spnego_bind)
kinit succeeded but ads_sasl_spnego_krb5_bind failed: Server not found in Kerberos database
Failed to join domain: failed to connect to AD: Server not found in Kerberos database
Mas o computador aparece no AD.
[23] Comentário enviado por rickbrandao em 25/05/2011 - 15:35h
Consegui meu amigo ingressar no dominio mas quando digito
root@PROXY:/etc/samba# wbinfo -t
checking the trust secret via RPC calls failed
error code was NT_STATUS_INVALID_COMPUTER_NAME (0xc0000122)
Could not check secret
[24] Comentário enviado por removido em 25/05/2011 - 16:57h
Cara seguinte quando fiz essa implementação eu utilizei o windows 2003 server, e acredito que com o windows 2008 você vai encontrar mais resistência para concluir essa instalação. O que pode ser feito é o seguinte:
Crie manualmente uma entrada dns no seu server para o servidor Linux, depois coloque em seu resolv.conf o seu domínio e o ip do servidor dns e revise os passos. Mas procure rever os arquivos do kerberos no linux pois lá tem que ter os dados corretos de sua rede e de seu dns server. Mas cara uma dica, use essa instalação mas pule a parte do kerberos, pois nessa implantação eu usei o kerberos apenas como teste, pois a troca das senhas entre os micros de sua rede e seu servidor squid é feito através de ntlm e não kerberos. Qualquer chama ae abraço.
Esse último erro que vc relatou é devido ao dns server, faça testes entre seu linux e seu dns e outra revise o seu resolv.conf. Mas eu lembro deste erro que vc está falando eu vou revisar uns documentos meus aqui e vou te mandar. Araço.
[27] Comentário enviado por markennedy em 15/03/2012 - 18:32h
olá amigo,
seu artigo ficou muito bom, parabens.
Estou tentando fazer a mesma configuração aqui na minha rede mas estou tendo alguns problemas.
Meu servidor já está integrado com o AD, a autenticação do kerberos funciona com através do kinit -U user
consigo lista todos os grupos do AD e users do AD.
PORÉM
Na hora de criar o cache do Squid tenho o seguinte problema:
#squid -z
#squid -z
2012/03/15 18:25:31| AuthNTLMConfig::parse: unrecognised ntlm auth scheme parameter 'use_ntlm_negotiate'
2012/03/15 18:25:31| AuthNTLMConfig::parse: unrecognised ntlm auth scheme parameter 'max_challenge_reuses'
2012/03/15 18:25:31| AuthNTLMConfig::parse: unrecognised ntlm auth scheme parameter 'max_challenge_lifetime'
2012/03/15 18:25:31| WARNING: Netmasks are deprecated. Please use CIDR masks instead.
2012/03/15 18:25:31| WARNING: IPv4 netmasks are particularly nasty when used to compare IPv6 to IPv4 ranges.
2012/03/15 18:25:31| WARNING: For now we will assume you meant to write /22
2012/03/15 18:25:31| WARNING: (A) '10.100.56.0/22' is a subnetwork of (B) '::/0'
2012/03/15 18:25:31| WARNING: because of this '10.100.56.0/22' is ignored to keep splay tree searching predictable
2012/03/15 18:25:31| WARNING: You should probably remove '10.100.56.0/22' from the ACL named 'all'
2012/03/15 18:25:31| WARNING: Netmasks are deprecated. Please use CIDR masks instead.
2012/03/15 18:25:31| WARNING: IPv4 netmasks are particularly nasty when used to compare IPv6 to IPv4 ranges.
2012/03/15 18:25:31| WARNING: For now we will assume you meant to write /16
2012/03/15 18:25:31| WARNING: (A) '10.1.0.0/16' is a subnetwork of (B) '::/0'
2012/03/15 18:25:31| WARNING: because of this '10.1.0.0/16' is ignored to keep splay tree searching predictable
2012/03/15 18:25:31| WARNING: You should probably remove '10.1.0.0/16' from the ACL named 'all'
2012/03/15 18:25:31| WARNING: Netmasks are deprecated. Please use CIDR masks instead.
2012/03/15 18:25:31| WARNING: IPv4 netmasks are particularly nasty when used to compare IPv6 to IPv4 ranges.
2012/03/15 18:25:31| WARNING: For now we will assume you meant to write /32
2012/03/15 18:25:31| Creating Swap Directories
Uso o RedHat 6.2 e o AD é de um Windows 2008 R2.
versão do squid: squid-3.1.10-1.el6_2.1.x86_64
Através do comando:
#ntlm_auth --help
Ele me mostra as seguintes opções, mas como não tenho experiências com o Squid, estou precisando de ajuda.
Usage: ntlm_auth [OPTION...]
--helper-protocol=helper protocol to use operate as a stdio-based helper
--username=STRING username
--domain=STRING domain name
--workstation=STRING workstation
--challenge=STRING challenge (HEX encoded)
--lm-response=STRING LM Response to the challenge (HEX encoded)
--nt-response=STRING NT or NTLMv2 Response to the challenge (HEX encoded)
--password=STRING User's plaintext password
--request-lm-key Retrieve LM session key
--request-nt-key Retrieve User (NT) session key
--use-cached-creds Use cached credentials if no password is given
--diagnostics Perform diagnostics on the authentictaion chain
--require-membership-of=STRING Require that a user be a member of this group (either name or SID) for
authentication to succeed
--pam-winbind-conf=STRING Require that request must set WBFLAG_PAM_CONTACT_TRUSTDOM when krb5 auth
is required
Pelo que vi estes parametros foram retirados entao tentei comentando estas linhas mas ele nao consegue autenticar o usuario do dominio no navegador.
consigo listar os usuarios no linux mas quanto faço o teste no navegador da minha maquina ele nao aceita minha credencial do dominio.