autenticação winbind através do apache lento

2

Eu tenho uma configuração de máquina linux para autenticar usuários usando o Active Directory com samba / winbind.

O Apache é configurado para usar isso para autenticar os usuários. Isso é feito usando:

<IfModule mod_authnz_external.c>
    AddExternalAuth pwauth /usr/sbin/pwauth
    SetExternalAuthMethod pwauth pipe
</IfModule>

No entanto, as solicitações de páginas que levam menos de um segundo sem autenticação agora levam > 6 segundos. Observar o log em /var/log/samba/log.winbindd não mostra nenhum erro, mas cada carregamento de página parece exigir muitas solicitações de autenticação. Basicamente, parece haver uma autenticação por recurso carregado, por exemplo, para cada arquivo css.

Em /etc/samba/smb.conf , tentei jogar com algumas configurações, como winbind cache time = 300 e winbind offline logon = yes . Eu também tentei alterar o backend do idmap do tdb para o anúncio.

Durante o carregamento da página, o uso da CPU do winbindd fica muito alto, ~ 50-60%, enquanto nenhum outro processo parece ultrapassar 10-20%.

Eu perdi alguma configuração que poderia acelerar isso, ou existem abordagens melhores para esse problema (como usar algo diferente de mod_authnz_external)?

    
por Zitrax 01.09.2017 / 14:36

2 respostas

3

Ainda não encontrei como melhorar o desempenho ao usar o mod_authnz_external. No entanto mudando para outro modulo apache mod_authnz_ldap se livrou do problema de desempenho. A única desvantagem é que a configuração do ldap é duplicada para o sistema e para o apache.

    
por 04.09.2017 / 11:30
0

Em uma configuração similar usando o Ubuntu 18.04 como cliente e o Samba 4.7.8 como um servidor, uma autenticação com pwauth leva cerca de 200 ms, o que é inaceitável para operações SVN porque uma simples listagem de repositório usa bastante muitos pedidos.

Carregando authn_socache como um cache de autenticação (o exemplo inclui authnz_external e authz_unixgroup ) com as seguintes configurações resulta em um desempenho aprimorado:

<Location /svn>
     DAV svn
     SVNParentPath /var/local/svn/
     SVNListParentPath on
     AuthType Basic
     AuthName "private area"
     AuthBasicProvider socache external
     AuthExternal pwauth
     AuthExternalProvideCache on
     AuthnCacheProvideFor external
     AuthnCacheTimeout 300
     Require unix-group svngroup
</Location>

AuthExternalProvideCache On é importante, caso contrário, authnz_external não armazenará em cache os logins.

    
por 02.11.2018 / 12:20