Há pouco tempo, publicamos um artigo tratando a autenticação do Squid. As etapas descritas demonstraram o processo de configuração que adotamos em nosso ambiente de produção. No entanto, recentemente, quando decidimos migrar para a versão 3.5 do Squid (para melhor integração com SSL Bump), fomos surpreendidos com uma falha envolvendo contas de usuários com espaço em branco no nome, descartando as strings seguintes. Veremos, agora, uma alternativa simples para resolver este problema.

A princípio, pode parecer uma falha pouco impactante, mas que poderá acabar com seus critérios de filtragem e sistema de logs. Múltiplas contas começando com “dr <nome>” serão tratadas como “dr“, por exemplo. Sendo assim, de imediato, qualquer controle de contas compartilhadas deixa de funcionar, pois as diferentes contas serão tratadas como uma única (dr).

Na tentativa de solucionar o problema, visualizamos duas alternativas: “convencer as filias rever a política para criação de contas (removendo o espaço em branco) ou contactar o bugzilla do Squid (reportando como um possível bug)”. Tentamos as duas.

A primeira alternativa parecia a mais viável, mas se mostrou “muito lenta” (encontramos uma pequena resistência). Também reportamos a falha ao bugzilla do Squid, porém os desenvolvedores demonstraram baixa prioridade para a falha – na minha opinião é uma falha crítica (suficiente para adiar nossa atualização).

Para romper esta barreira, resolvemos pesquisar sobre alternativas de remapeamento de nomes pelo próprio Samba/Winbind. Pouco tempo depois, lendo a documentação do Samba, cheguei na opção “winbind normalize names“, que faria a troca do espaço em branco por “_“. Então, “encontramos” uma alternativa rápida para resolver o problema.

– Em /etc/samba/smb.conf

   winbind enum groups = no
   winbind enum users = no
   winbind separator = \\
   winbind use default domain = yes
   winbind normalize names = yes
   winbind reconnect delay = 10
   winbind cache time = 1800
   winbind max clients = 250

Funcionou, mas não foi tão “simples” assim (risos)…

Para validar a configuração, em um dos servidores, definimos a opção anterior como “yes” e, em seguida, com o comando “wbinfo -u –domain <DOMINIO>“, verificamos que o ajuste simplesmente NÃO funcionou em nosso ambiente.

wbinfo -u --domain [DOMAIN]

No primeiro teste, nada mudou.

Recorremos ao Google para verificar se existiam relatos parecidos. Pouco tempo depois, encontramos uma correção de bug com a opção “winbind normalize names” para a versão 4.6 do Samba (o bug atinge em qualquer versão entre 4.1 e 4.6). Para validar se estávamos diante do bug, incluímos um repositório alternativo (contendo a versão 4.6.4).

  apt-get install software-properties-common
  add-apt-repository ppa:linux-schools/samba4.6
  apt-get update
  apt-get install samba

  service winbind restart

Feito isto, contornamos o problema com as contas de usuários.

Caso, após a atualização do Samba, o problema persista (mantendo o espaço em branco), remova os arquivos de cache do winbind e reinicie o serviço novamente.

service winbind stop

cd /var/lib/samba
mkdir old
mv winbindd_cache.tdb* old/

service winbind restart