Eu desenvolvi um aplicativo que usa o NTP para alterar o tempo da rede e sincronizar dois dos meus computadores. É executado como root
, uma vez que apenas este último pode alterar a hora e a data no Linux (eu acho).
Agora, quero executá-lo como usuário. Mas preciso acessar o horário.
- É uma boa prática executar um daemon em uma conta de usuário não raiz?
- Devo dar ao meu aplicativo um recurso como
CAP_SYS_TIME
? - Não introduz uma vulnerabilidade de segurança?
- Existe uma maneira melhor?
security
daemon
access-control
Anônimo12223
fonte
fonte
ntp
conta de usuário (pelo menos nos sistemas Linux), portanto você não deve fazer essa alteração. Qual pacote NTP você instalou?Respostas:
Sim, e isso é comum. Por exemplo, o Apache inicia como raiz e depois bifurca um novo processo como www-data (por padrão).
Como dito anteriormente, se o seu programa for hackeado (por exemplo, injeção de código), o invasor não terá acesso root, mas ficará limitado aos privilégios que você concedeu a esse usuário específico.
É uma boa ideia, pois você evita usar o setuid e limita as permissões a esse recurso muito específico.
Você pode aumentar a segurança, por exemplo:
fonte
USER
em um diretório, use-ochroot
(execute-o como usuário root). No entanto, você deve criar e inicializar uma prisão (diretório) antes. Em resumo, você deve colocar as bibliotecas e os binários de que seu processo precisa nessa prisão e depois ligarchroot <path/to/jail> <command>
. Um bom tutorial com alguns dos exemplos que você precisa está disponível aquiA menos que você tenha razões fortes e irrefutáveis, você deve usar o pacote NTP que acompanha sua distribuição GNU / Linux. O daemon NTP padrão levou anos para amadurecer e vem com recursos sofisticados, como diminuir ou acelerar o relógio do sistema para sincronizá-lo com a rede ou com o relógio GPS. Ele foi adaptado para sincronizar relógios, por isso provavelmente é a melhor ferramenta disponível para esse fim.
ntpd
ainda é mantido, a julgar pelas atualizações recentes (no momento em que escrevemos este post). Se você precisar de mais recursos, sugiro que entre em contato diretamente com os desenvolvedores, confie no que eles têm a dizer sobre isso.fonte
Se você possui um programa que precisa ser capaz de executar a função X (por exemplo, manipular o relógio) e pode ter o privilégio / poder de executar a função X e nada mais, isso é melhor do que fornecer a lata inteira de alfabeto sopa. Isso é conhecido como o princípio do menor privilégio . Considere, e se o seu programa tiver um erro - um erro de programação comum ou uma vulnerabilidade de segurança explorável. Se estiver sendo executado como "root", poderá remover os arquivos de todos - ou enviá-los para um invasor. Se a única coisa que o programa é capaz de fazer é manipular o relógio (e funções não privilegiadas, como manipular arquivos em um diretório bloqueado), isso é o pior que pode acontecer se o programa ficar desonesto.
fonte