Como evitar que argumentos CLI sensíveis sejam registrados no journalctl ao usar o sudo?

5

No Ubuntu 16.04, o diário registra todos os comandos sudo e alguns incluem argumentos sensíveis (por exemplo, senha de texto não criptografado) que não quero deixar no log. Eu tenho uma idéia de como evitar isso, mas gostaria de saber se existe alguma maneira formal de fazê-lo, que idealmente deveria ser simples e geral o suficiente.

Por exemplo, um comando como abaixo.

$ sudo set_account.sh --password SbdLb9W --pin-number 1234 --other-options

O registro de diário pode renderizar assim.

sudo set_account.sh --password ... --pin-number ... --other-options

Obrigado.

Obrigado a todos pelas respostas e comentários muito úteis. Acho que continuaria com a abordagem da variável de ambiente mais o script de wrapper.

    
por user180574 31.03.2017 / 18:55

2 respostas

2

Não insira senhas nas opções de comando.

A maneira correta seria usar variáveis de ambiente, como

$ MY_PASSWORD=s3cr3t ./mycommand

No entanto, mycommand precisaria saber para procurar no ambiente a senha

A senha apareceria no histórico da shell, mas não seria visível para outros usuários: link

Se você não quiser no histórico do shell, coloque o comando acima em um script e execute esse script

Se mycommand chamar outros processos, tenha cuidado para não passar MY_PASSWORD para os processos filhos

    
por 31.03.2017 / 20:21
0

Você poderia fazer algo assim:

$ rm -f /home/somewhere/new_account_john
$ touch /home/somewhere/new_account_john
$ chmod 600 /home/somewhere/new_account_john
$ echo "--password SbdLb9W --pin-number 1234" > /home/somewhere/new_account_john
$ sudo set_account.sh --read-options-from /home/somewhere/new_account_john --other-options
$ rm -f /home/somewhere/new_account_john

Isso ainda representa o risco de segurança de alguém poder ler a lista de processos com ps e ver o comando echo . Um segundo risco seria uma corrida, ou seja, alguém escreve no arquivo antes de você, ou o altera logo antes do sudo (ou então, lê a partir dele).

No entanto, resolveria o pedido imediato que você teve.

Se você não puder alterar o comando set_account.sh , poderá tentar algo como

$ sudo sh -c 'set_account.sh 'cat /home/somewhere/new_account_john' --other-options'

em vez do outro comando sudo acima, e tente se o cat é chamado após sudo (deve, mas isso depende da sintaxe de citação do seu shell). Os outros comandos permanecem os mesmos.

    
por 31.03.2017 / 20:06