É um risco de segurança executar meus trabalhos do crontab como root?

7

Eu tenho alguns cron jobs que estou executando - principalmente coisas relacionadas a backup.

Estou tendo que fazer backup como / etc / apache2 / sites / available etc, o que requer acesso root.

Eu tenho algumas perguntas:

Ao executar em um servidor sem cabeçalho:

  1. Em qual usuário o script está sendo executado (supondo que eu não especifique um usuário na entrada da tarefa cron?)
  2. Há algum problema em executar o script de backup como raiz - ou isso representa uma questão de segurança?

BTW, meu servidor está executando o Ubuntu 10.0.4 LTS

    
por user35402 06.08.2010 / 15:21

3 respostas

13

Se você garantiu acesso suficiente ao script e tomou precauções sensatas, executar algo a partir do root crontab não costuma ser um risco de segurança.

Mas não execute um script como root que um usuário não raiz possa editar ou sobrescrever. Isso se aplica a tarefas executadas a partir do cron, bem como de forma interativa.

Se esse script incluir outros arquivos, o mesmo se aplica a eles também.

Em caso de dúvida, use sempre o princípio do menor privilégio. Se você ainda não tiver certeza, poderá sempre fazer perguntas específicas em fóruns e no IRC.

Existe (quase) sempre uma maneira de executar algo como um usuário não raiz. Se tudo mais falhar usando sudo para limitar um usuário a comandos específicos, também limita o potencial de causar dano.

Assim, com o exemplo que você deu de fazer o backup de / etc / apache2 / sites-available, esse arquivo é legível por qualquer pessoa, o que implica que é o acesso ao destino que é gravável apenas pelo root.

Você pode corrigir isso por

  • crie um grupo chamado backupadmins (por exemplo)
  • define o grupo no diretório de destino como backupadmins
  • adiciona um usuário chamado backupuser (por exemplo)
  • adicione o usuário backupuser ao grupo backupadmins.
  • torna o diretório gravável pelo grupo backupadmins
  • execute o cron job a partir do crontab do backupuser.
por 06.08.2010 / 23:53
3

Depende do que os scripts estão fazendo. Se eles estão fazendo backup de coisas, então provavelmente é melhor serem root - se um usuário malicioso sobrescrever esses scripts, você provavelmente terá problemas maiores de qualquer maneira.

Se eles fazem coisas estúpidas, como executar arquivos encontrados em diretórios, ou qualquer coisa que possa ser influenciada pelo conteúdo dos diretórios da web, provavelmente você precisa procurar alternativas.

    
por 06.08.2010 / 15:39
2

Milhões de tarefas agendadas em todo o mundo estão sendo executadas como root todos os dias (ou em qualquer período em que estejam configuradas para execução).

O importante é que as permissões adequadas sejam definidas. Se você estiver executando algo que pode ser gravado por todos, um usuário ou processo mal-intencionado poderá alterar o que está fazendo.

As tarefas Cron são executadas pelo proprietário do crontab, em geral. Um crontab do usuário pode estar em /var/spool/cron/crontabs/username , por exemplo. Cronjobs que estão em /etc/crontab , /etc/cron.d/ ou /etc/cron.hourly (diário, semanal, mensal) serão executados pelo root. É importante que a propriedade e as permissões estejam corretas também para esses arquivos crontab.

    
por 06.08.2010 / 15:54