Acesso Grep no maillog para raiz não raiz

3

Eu gostaria de conceder um usuário específico (regular) grep access em meus maillogs ( /var/log/maillog* ).

Eu não estou preparado para alterar as permissões de registro, pois elas devem permanecer root -apenas, 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, o ideal é que o usuário tenha acesso ao maillog (e aos arquivos girados).

Por exemplo:

username ALL= NOPASSWD: /bin/grep 

Permite que o usuário basicamente grep em qualquer arquivo no sistema, o que é algo que eu gostaria de evitar.

Qual é a melhor solução aqui?
FYI: Não precisa ser grep per se: o usuário só precisa de acesso de leitura aos maillogs e provavelmente usará apenas grep para acessá-los.

    
por Blizz 22.08.2015 / 09:11

3 respostas

7

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

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

Isso é a vantagem de permitir que o usuário use qualquer ferramenta que desejar.

Isto também é logrotate safe para maillog *

    
por 22.08.2015 / 09:55
3

A menos que você saiba quais strings específicas os usuários estarão procurando e os arquivos específicos que serão verificados usando sudo nã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:

link

Se você souber quais strings e arquivos o usuário verificará, você pode 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 pode resultar em uma configuração excessivamente grande do sudo.

Como alternativa, em vez de grep , você pode conceder acesso aos arquivos por meio do comando more e, em seguida, eles podem pesquisar os arquivos de forma interativa:

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 que o usuário mantenha um histórico de pesquisas (por exemplo, .bash_history ) ou crie seus próprios scripts ou aliases para pesquisas. Além disso, se você tiver a rotação de logs em vigor, eles não poderão analisar os registros compactados.

Nota: Não conceda acesso sudo ao comando less . Um usuário poderia sair do processo, por exemplo, executar !/bin/bash em less daria a eles acesso root ao sistema.

Outra opção é ter regras para eles para cat dos arquivos, de modo que eles possam direcioná-los para grep da maneira que entenderem. Por exemplo:

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

No final, a mais simples e provavelmente a melhor solução é conceder 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 eles podem usar qualquer ferramenta que desejarem analisar os arquivos (por exemplo, grep , zgrep , less , more , view , etc).

    
por 22.08.2015 / 09:42
3

Isso deve funcionar como esperado no arquivo sudoers :

%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)

Usar uma ferramenta genérica de saída, como cat , é simples e segura. Você não terá que permitir e limitar opções específicas como com grep diretamente em sudoers. Ele também permitirá a filtragem dos logs com qualquer ferramenta grep ou não , por exemplo. awk , sed .

Não tenho certeza de como o sudo está configurado no CentOS, mas se ele solicitar uma senha do usuário chamando (não do usuário target ), Eu evitaria usar NOPASSWD . Isso pode ser uma vantagem de segurança se qualquer parte hostil tiver acesso à conta do usuário, sem saber a senha do usuário.

    
por 22.08.2015 / 09:43