Quão seguro é manter scripts não pertencentes à raiz em /etc/init.d?

15

Eu tenho um aplicativo que é executado como um daemon e é controlado por um script em /etc/init.d
Às vezes precisamos alterar alguns parâmetros de inicialização / controle desses scripts e depois reiniciar o daemon. Esses scripts só têm permissão de gravação para o usuário root, portanto, ao editar esses scripts, eu preciso de privilégios de root.

O que eu estava pensando é que devo fazer de um usuário não-root o proprietário desses scripts. Desta forma, somente root e um usuário especial podem editar esses scripts.

É aceitável manter alguns arquivos não pertencentes à raiz sob os diretórios /etc/init.d?
Ou é absurdo perturbar a ordem natural do sistema?

    
por Akaks 30.01.2014 / 10:52

2 respostas

17

O que imediatamente vem à mente é um usuário desprivilegiado podendo executar coisas no boot como root , o que é desejável para crackers que:

  • Deseja escalar privilégios de outras contas
  • Deseja usar seu servidor para hospedar um serviço desonesto
  • Deseja iniciar bots de IRC / Spam se o servidor for reinicializado
  • Deseja fazer ping em uma nave-mãe para dizer "Estou em alta novamente" e, talvez, fazer o download de uma nova carga útil
  • Deseja limpar suas faixas
  • ... outra maldade.

Isso é possível se o usuário desprivilegiado estiver de alguma forma comprometido, talvez por meio de outro serviço (http / etc). A maioria dos invasores executará rapidamente ls ou find de / de tudo em /etc apenas para ver se tais possibilidades existem, se há shells escritos em vários idiomas usados para simplificar isso.

Se você gerencia o servidor remotamente, principalmente via SSH, há uma grande chance de que você nem veja isso, a menos que você inspecione o script de inicialização, porque você não verá a saída em boot (no entanto, você deve usar algo que verifique os hashes desses scripts contra hashes conhecidos para ver se algo mudou, ou software de controle de versão, etc.)

Você definitivamente não quer que isso aconteça, o root realmente precisa possuir esse script de inicialização. Você poderia adicionar o usuário de desenvolvimento à lista de sudoers para que seja conveniente o suficiente para atualizar o script, mas aconselharia não permitir acesso de gravação desprivilegiado a qualquer coisa no init.d

    
por 30.01.2014 / 11:23
9

Além dos pontos muito bons feitos pelo Tim Post, eu acrescentaria que para uma configuração em que várias pessoas precisam ser capazes de enviar alterações para um servidor, você deve considerar o uso de algum tipo de sistema de gerenciamento de configurações.

Se você, por exemplo, Para usar o fantoche, ou chef, ou cfengine, você pode fazer com que os usuários relevantes editem os arquivos localmente e, em seguida, enviem as alterações para fora com o gerenciamento de configurações. Exatamente como configurá-lo, é claro que variará dependendo de qual sistema você está usando, mas a configuração correta incluirá software de versionamento facilitando a reversão para uma versão anterior de um arquivo de configuração quando (nota: quando , não se !) alguém cometeu um erro. Também facilitará a cópia da configuração para um sistema de teste separado, etc.

    
por 30.01.2014 / 11:34

Tags