SELinux & ncsa_auth no Squid

4

Estou tentando habilitar o SELinux em um servidor CentOS 5.5 com Squid 3.1.12 que lida com autenticação via ncsa_auth.

Quando eu desligo o SElinux, tudo funciona bem, mas quando eu o habilito, o Squid falha no plugin de autenticação, ncsa_auth.

Esta é a mensagem de erro:

May 29 19:12:21 us squid[1458]: Squid Parent: child process 1493 started
May 29 19:12:21 us kernel: printk: 27 messages suppressed.
May 29 19:12:21 us kernel: type=1400 audit(1306696341.922:74): avc:  denied  { execute } for  pid=1494 comm="squid" name="ncsa_auth" dev=xvda1 ino=610563 scontext=root:system_r:squid_t:s0 tcontext=user_u:object_r:usr_t:s0 tclass=file
May 29 19:12:22 us (squid): The basicauthenticator helpers are crashing too rapidly, need help! 
May 29 19:12:22 us squid[1458]: Squid Parent: child process 1493 exited with status 1
May 29 19:12:22 us squid[1458]: Exiting due to repeated, frequent failures

Quando o SELinux é permissivo, estes são os avisos que estou recebendo:

May 29 19:25:27 us kernel: type=1400 audit(1306697127.741:81): avc:  denied  { execute } for  pid=1524 comm="squid" name="ncsa_auth" dev=xvda1 ino=610563 scontext=root:system_r:squid_t:s0 tcontext=user_u:object_r:usr_t:s0 tclass=file
May 29 19:25:27 us kernel: type=1400 audit(1306697127.741:82): avc:  denied  { execute_no_trans } for  pid=1524 comm="squid" path="/opt/squid-3.1.12/helpers/basic_auth/NCSA/ncsa_auth" dev=xvda1 ino=610563 scontext=root:system_r:squid_t:s0 tcontext=user_u:object_r:usr_t:s0 tclass=file

O ncsa-auth:

[bart@us NCSA]# ls -alZ ncsa_auth
-rwxrwxrwx  root root user_u:object_r:usr_t            ncsa_auth

Eu acho ele espera que o rótulo seja unconfined_u:system_r:squid_t:s0 , mas não tenho idéia de como defini-lo corretamente. Depois de tentar configurá-lo com:

chcon unconfined_u:system_r:squid_t:s0 ncsa_auth

Recebi o seguinte erro: chcon: failed to change context of ncsa_auth to unconfined_u:system_r:squid_t:s0: Invalid argument

    
por Bart De Vos 29.05.2011 / 21:21

2 respostas

2

Acabei de verificar em um sistema CentOS 5.6 onde tenho o squid + ncsa_auth funcionando. As permissões no meu /usr/lib64/squid/ncsa_auth são

ls -lZ  /usr/lib64/squid/ncsa_auth
-rwsr-x---  root squid system_u:object_r:lib_t   /usr/lib64/squid/ncsa_auth

Se eu definir as permissões em /usr/lib64/squid/ncsa_auth como as mesmas, obtenho exatamente a mesma mensagem de erro que você.

chown root:squid /usr/lib64/squid/ncsa_auth
chmod 4750 /usr/lib64/squid/ncsa_auth
chcon system_u:object_r:lib_t  /usr/lib64/squid/ncsa_auth

corrige o problema no meu sistema.

    
por 31.05.2011 / 12:01
2

Isso seria chcon -t squid_t ncsa_auth , mas na minha máquina RHEL5.5, há uma regra que permite direitos de execução do Squid nos arquivos rotulados bin_t , que provavelmente é o que deveria ser, não squid_t :

allow squid_t bin_t : file { ioctl read getattr lock execute execute_no_trans open } ;

Você pode verificar isso com sesearch -s squid_t --allow . A mesma regra existe para lib_t, veja a resposta.

O tipo squid_t é destinado ao domínio, não aos arquivos. Um arquivo pode ser rotulado squid_exec_t , mas isso é para o daemon binário, não para arquivos auxiliares. Para encurtar a história, o arquivo provavelmente deve ser rotulado como bin_t e colocar em /usr/local/bin .

Eu suspeito que o seu plugin ncsa_auth esteja instalado em um local estranho. Se você colocar em /usr/local/bin e executar restorecon -Fv , o Squid tentará executá-lo como um arquivo bin_t , o que provavelmente terá mais sucesso.

    
por 31.05.2011 / 10:32