Sudo e receitas no Commando.IO

fundo

Embora o Commando.IO tenha muitas precauções de segurança em vigor, você sem dúvida chegará a um ponto em que deseja executar um script que contenha “sudo”.

Como você provavelmente sabe, as máquinas baseadas em Linux têm camadas de segurança para proteger seus usuários. Um deles é a proteção de chave compartilhada para evitar que máquinas não autorizadas acessem sua máquina via SSH. Isso ajuda a reduzir a presença de pessoas mal-intencionadas que podem obter acesso às suas máquinas.

Outra camada de segurança é o requisito de usar sudo para executar certos comandos no sistema. Sudo (na maior parte) ‘requer’ que você insira uma senha para o comando ser executado. Isso dificulta a execução de scripts, remotamente e em massa, que incluem sudo , porque não há um terminal interativo com o qual inserir uma senha.

Portanto, estamos presos à necessidade de contornar uma das camadas fundamentais de segurança do Unix. Como podemos mitigar esse problema e ainda manter algum nível de segurança? Qualquer segurança que se preze pararia de ler agora com nojo, porque contornar essa camada de segurança SEMPRE o exporá a mais riscos, você não pode contornar isso. Portanto, se você concorda em aceitar esse risco adicional, o seguinte é como ajudar a mitigá-lo.

Primeiro, vamos falar sobre coisas que você NÃO DEVE FAZER:

- Don't connect with the root or root level user!
- Don'
t store your password in ANY file!
- Don't give your user permission to bypass all sudo commands!

Aqui é o que nós SÃO vai fazer. Vamos configurar o ambiente linux para permitir que seu usuário execute certos comandos com sudo sem a necessidade de inserir uma senha para eles. Por exemplo, uma das coisas fundamentais que precisaremos fazer são os pacotes “apt-get install”. A quantidade de coisas maliciosas que um hacker pode fazer com o apt-get é um tanto limitada, então mesmo que o seu usuário seja comprometido, ele está limitado a instalar pacotes no seu servidor.

Como vamos fazer isso?

Você terá que fazer login em cada uma de suas máquinas. Se ainda não tiver feito isso, você deve criar um usuário que NÃO seja root. Se você ainda não fez isso, google “linux criar novo usuário”. De agora em diante, nos referiremos a esse nome de usuário como <USER_NAME>

Na sua máquina linux, usaremos o comando visudo . O visudocomando abre um editor de texto normalmente, mas valida a sintaxe do arquivo ao salvar. Isso evita que erros de configuração bloqueiem operações “sudo”, que pode ser sua única maneira de obter privilégios de root.

sudo visudo

No console de texto que aparece, você adicionará o seguinte na parte inferior:

<USER_NAME>    ALL = (ALL) NOPASSWD: /usr/bin/apt-get

(Visudo pode abrir com nano ou vim , então você terá que salvar uma saída com base no editor de texto usado).

AGORA, quando você executa um script que usa algo assim:

sudo apt-get install less

O sudo será executado sem a necessidade de uma senha e não apresentará erros.

E se eu precisar adicionar vários comandos?

Sem dúvida, você desejará fazer mais coisas do que apenas instalar coisas “apt-get”. Você pode adicionar mais ações a este arquivo de acordo com o que está fazendo sudo em suas receitas.

Por exemplo, para adicionar o comando “serviço” para iniciar e parar serviços, você pode adicionar:

<USER_NAME>    ALL = (ALL) NOPASSWD: /usr/bin/apt-get, /usr/sbin/service restart

Observe que os comandos são separados por vírgulas e podem incluir parâmetros como “reiniciar”