como executar serviços do sistema enviando solicitação via navegador

0

Eu quero criar uma interface semelhante à de um roteador DSL, onde você pode editar as configurações de rede no navegador e reiniciar o roteador com novas configurações. Eu quero editar algumas configurações no navegador e executar um serviço systemd através de um botão ou algo similar. Por exemplo, eu quero enviar um formulário html para o script CGI python, que modificaria o arquivo eth1.network e reiniciaria o serviço networkd. Eu tenho um dispositivo Linux embarcado com o servidor da web Apache em execução.

O problema é: o usuário da Web do Apache não tem permissão para iniciar / parar os serviços do sistema e, é claro, não quero permitir que os www-data iniciem / parem os serviços do systemd.

  • Como posso iniciar / interromper os serviços do systemd a partir do navegador sem permitir privilégios de root ao usuário do www-data. Eu sei que o servidor web nunca deve ter permissão para acessar serviços ou qualquer coisa fora da pasta raiz 'var / www /' por motivos de segurança.

  • Como um roteador DSL realiza isso? uma solução que encontrei está aqui Is É seguro permitir que o www-data execute comandos privilegiados , mas eu não sei como posso implementá-lo. Eu apreciaria qualquer guia ou exemplos.

por Ahmad Karim 15.08.2018 / 07:56

1 resposta

0

NÃO permitir a execução de comandos privilegiados expostos ao usuário wild www-data da internet. É uma maneira de procurar problemas.

Você pode usar URL-knocking para essas coisas. Você pode criar um URL secreto e no servidor monitorar continuamente as alterações do arquivo de log do apache com tail -f que não carrega o servidor, pois ele usava o recurso inotify do kernel. Dessa forma, quando você chamar sua URL secreta, um script (seja ele shell, python e assim por diante) executado em uma conta privilegiada executará uma única tarefa específica. Então, basicamente é um tipo de IPC entre usuários sem privilégios e operações que precisam ser feitas com privilégios mais altos (root?) . Você deve implementar algum mecanismo de autenticação para proteger essa URL secreta para evitar o DDoS. Além disso, se você usasse HTTPS para essas coisas, sua URL secreta não seria exposta a man-in meio-a .

    
por 15.08.2018 / 16:45