Acesso Grep no maillog para não root

Acesso Grep no maillog para não root

Gostaria de conceder grepacesso de usuário específico (regular) aos meus maillogs ( /var/log/maillog*).

Não estou preparado para alterar as permissões de log, pois elas devem permanecer rootapenas -, então acho que a solução preferida seria via sudoers.

Além disso: quero conceder o mínimo possível de outras permissões; de preferência, o usuário apenas terá acesso ao maillog (e aos arquivos girados).

Por exemplo:

username ALL= NOPASSWD: /bin/grep 

Permite que o usuário grepacesse basicamente qualquer arquivo do sistema, algo que eu gostaria de evitar.

Qual é a melhor solução aqui?
Para sua informação: não precisa ser greppor si só: o usuário só precisa de acesso de leitura aos maillogs e provavelmente só usará greppara acessá-los.

Responder1

Você poderia usar uma acl no(s) arquivo(s) para conceder permissão de leitura ao usuário

setfacl -m user:grepuser:r /var/log/maillog*

Esta é a vantagem de permitir ao usuário utilizar qualquer ferramenta que desejar.

Isso também é seguro para logrotate para maillog*

Responder2

A menos que você saiba quais strings específicas os usuários pesquisarão e os arquivos específicos que eles verificarão, sudonão é uma boa solução para isso. Se você criar uma regra como esta:

blizz ALL=root NOPASSWD: /bin/grep * /var/log/maillog*

O usuário poderá executar comandos como este:

grep root /etc/shadow /var/log/maillog
grep = /root/my.cnf /var/log/maillog

Eles poderão ler qualquer arquivo no sistema. Você pode encontrar mais informações sobre esse problema aqui:

http://blog.csnc.ch/2012/10/dangerous-sudoers-entries-part-4-wildcards/

Se você souber quais strings e arquivos o usuário verificará, poderá definir regras separadas para cada cenário. Por exemplo:

Cmnd_Alias  MAILLOGA = /bin/grep 'Connection refused' /var/log/maillog
Cmnd_Alias  MAILLOGB = /bin/grep 'Connection refused' /var/log/maillog.1
Cmnd_Alias  MAILLOGC = /bin/grep 'imap-login' /var/log/maillog
Cmnd_Alias  MAILLOGD = /bin/grep 'imap-login' /var/log/maillog.1
blizz ALL=root NOPASSWD: MAILLOGA, MAILLOGB, MAILLOGC, MAILLOGD

No entanto, isso pode ser complicado e resultar em uma configuração sudo excessivamente grande.

Alternativamente, em vez de grepvocê conceder a eles acesso aos arquivos por meio do morecomando, eles poderiam pesquisar os arquivos interativamente:

Cmnd_Alias  MAILLOG = /bin/more /var/log/mailllog
Cmnd_Alias  MAILLOG1 = /bin/more /var/log/mailllog.1
Cmnd_Alias  MAILLOG2 = /bin/more /var/log/mailllog.2
Cmnd_Alias  MAILLOG3 = /bin/more /var/log/mailllog.3
blizz ALL=root NOPASSWD: MAILLOGA, MAILLOGB, MAILLOGC, MAILLOGD

No entanto, isso não permite ao usuário manter um histórico de suas pesquisas (por exemplo, .bash_history) ou criar seus próprios scripts ou aliases para pesquisas. Além disso, se você tiver rotação de logs, eles não poderão analisar os logs compactados.

Observação:Nãoconceda acesso sudo ao lesscomando. Um usuário pode sair do processo, por exemplo, a execução !/bin/bashlhe lessdaria acesso root ao sistema.

Outra opção é ter regras para eles nos catarquivos, para que possam canalizá-los grepcomo acharem melhor. Por exemplo:

sudo cat /var/log/maillog | grep "anything can go here"

No final, a solução mais simples e provavelmente a melhor é conceder-lhes acesso de leitura aos logs, alterando as permissões nos arquivos de log. Você poderia fazer algo assim:

groupadd logcheck
chgrp logcheck /var/log/maillog*
chmod g+r /var/log/maillog*
useradd -G logcheck blizz

E então eles podem usar qualquer ferramenta que desejarem para analisar os arquivos (por exemplo grep, zgrep, less, , more, view, etc).

Responder3

Isso deve funcionar conforme o esperado emsudoersarquivo:

%users  ALL= /bin/cat /var/log/mail.log
%users  ALL= /bin/cat /var/log/mail.err

(caminhos de log do Ubuntu, altere se necessário)

Usando uma ferramenta genérica somente de saída comogatoé simples e seguro. Você não terá que permitir e limitar opções específicas como acontece comgrepdiretamente em sudoers. Também permitirá a filtragem dos logs com qualquergrep-ou-nãoferramenta, ou seja.estranho,sed.

Não tenho certeza comosudoestá configurado no CentOS, mas se ele solicitar uma senha deligandousuário (não dealvousuário), eu evitaria usarSEM SENHA. Isto pode ser uma vantagem de segurança se qualquer parte hostil obtiver acesso à conta do usuário, sem saber a senha do usuário.

informação relacionada