Autorização do grupo Apache com mod_lookup_identity

3

Eu preciso ter alguns usuários autenticados em um banco de dados do Active Directory e gostaria de usar mod_authnz_pam over mod_authnz_ldap para isso. Os usuários terão acesso a determinadas pastas, restritas pelos grupos a que pertencem.

O problema é que mod_authnz_pam pode autorizar usuários usando Require valid-user ou Require user <username> , mas não com Require group <groupname> (a menos que eu especifique um arquivo de grupo, que não é minha intenção). Descobri que há esse mod_lookup_identity , que funciona com mod_authnz_pam , recupera as informações do grupo e as armazena em um env var.

Minha pergunta é: como posso usar este env var, que será configurado na autenticação do usuário, para autorizar esse mesmo usuário?

EDIT: Eu parcialmente descobri: eu posso usar Require env e / ou Require expr , referindo-se ao env var, que é REMOTE_USER_GROUPS neste caso. Meu problema agora é que estou lutando com a ordem de avaliação da diretiva httpd Require . Dada a seguinte configuração:

<VirtualHost *:80>
DocumentRoot /var/www/sftp
ServerName mysite.com.br
ErrorLog logs/mysite.log
<Directory "/var/www/sftp">
    Options Indexes
    AuthType Basic
    AuthName "private area"
    AuthBasicProvider PAM
    AuthPAMService httpd-sssd-auth
    LookupUserGroups REMOTE_USER_GROUPS :
    Require valid-user
</Directory>
<Directory "/var/www/sftp/folder01">
    Options Indexes
LookupUserGroups REMOTE_USER_GROUPS :
    <RequireAll>
    Require valid-user
    Require expr reqenv('REMOTE_USER_GROUPS') =~ /group01/
    </RequireAll>
</Directory>

Eu posso visualizar a pasta folder01 quando eu fizer login na raiz do servidor. Mas quando tento acessar a pasta em si, nem tenho a chance de autenticar. 403 me esmaga. Tenho 100% de certeza de que o Require expr está funcionando porque não consigo visualizar a pasta folder01 quando altero o regex para qualquer coisa que não contenha o grupo válido do user01.

O log de erros mostra: [Fri Jul 29 18:49:51.817402 2016] [authz_core:error] [pid 9921] [client 10.221.1.187:32196] AH01630: client denied by server configuration: /var/www/sftp/user01

user01 pode acessar folder01 se eu alterar a diretiva de Require expr para Require user user01 .

Descobri que quando Require expr é avaliado, REMOTE_USER_GROUPS é SET quando efetuo login na raiz do servidor, mas UNSET quando efetuo login na pasta e, portanto, a autorização falha.

EDIT2: aumentar LogLevel para debug revelou que a consulta de mod só é chamada quando o Directory inteiro foi autenticado / autorizado. É por isso que o env var é definido para o próximo Directory (se você tiver Option Indexes on), mas não para o que eu faço login. Eu acho que é o fim da linha.

    
por Reinaldo Gomes 29.07.2016 / 19:08

0 respostas