AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / server / Perguntas / 712947
Accepted
anx
anx
Asked: 2015-08-10 10:49:54 +0800 CST2015-08-10 10:49:54 +0800 CST 2015-08-10 10:49:54 +0800 CST

Como conseguir a separação de privilégios entre vários serviços (por exemplo, uwsgi) com proxy por nginx?

  • 772

Um site que mantenho é composto de vários aplicativos locais, todos com proxy da mesma instância nginx . Cada aplicativo está sendo executado sob seu próprio usuário e expondo um soquete unix gravável pelo grupo de servidores da web www-data.

Todos os usuários do aplicativo fazem parte do www-datagrupo, portanto podem chown seus soquetes. Como posso melhorar minha configuração, de modo que uma vulnerabilidade em um aplicativo não possa mais ser usada para tentar escalar privilégios por meio de conexões diretas com outros soquetes?

Minha solução anterior: crie um novo grupo para cada usuário e adicione o servidor da web a todos eles. Esta solução é menos preferível, pois complica a adição/remoção de aplicativos e requer uma reinicialização forçada do servidor da web para atualizar os grupos.

nginx
  • 1 1 respostas
  • 422 Views

1 respostas

  • Voted
  1. Best Answer
    anx
    2019-03-28T21:23:38+08:002019-03-28T21:23:38+08:00

    Semelhante a como os serviços podem herdar portas privilegiadas do systemd , eles podem receber acesso a soquetes locais que, de outra forma, não teriam permissão para abrir. O Systemd cria o soquete unix e passa apenas a descrição do arquivo para o serviço - dessa forma, o serviço não precisa de permissões de acesso no arquivo do soquete.

    Configure o soquete usando /etc/systemd/system/example.socketassim: (ler man systemd.socket)

    [Unit]
    PartOf=example.service
    [Socket]
    SocketUser=www-data
    SocketMode=0600
    ListenStream=%t/example.sock
    

    E use esse soquete /etc/systemd/system/example.serviceassim: (ler man systemd.unit)

    [Unit]
    Requires=example.socket
    After=example.socket
    [Service]
    User=example
    WorkingDirectory=~
    ExecStart=/usr/bin/uwsgi --uwsgi-socket=fd://3 --opt2 --opt3 ..
    

    Observe que muitos programas, incluindo uwsgi, entendem LISTEN_FDSem seu ambiente, portanto, codificar o descritor de arquivo 3 geralmente é desnecessário.

    Aplique e inicie a unidade usando:

    systemctl dameon-reload
    systemctl start example.service
    

    Se uma conta de serviço tentar abrir o soquete de outro serviço, ele não terá sucesso - os soquetes pertencem e podem ser lidos exclusivamente por www-data(ou seja, apenas o servidor da Web executado sob esse usuário pode acessá-los).

    • 1

relate perguntas

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Você pode passar usuário/passar para autenticação básica HTTP em parâmetros de URL?

    • 5 respostas
  • Marko Smith

    Ping uma porta específica

    • 18 respostas
  • Marko Smith

    Verifique se a porta está aberta ou fechada em um servidor Linux?

    • 7 respostas
  • Marko Smith

    Como automatizar o login SSH com senha?

    • 10 respostas
  • Marko Smith

    Como posso dizer ao Git para Windows onde encontrar minha chave RSA privada?

    • 30 respostas
  • Marko Smith

    Qual é o nome de usuário/senha de superusuário padrão para postgres após uma nova instalação?

    • 5 respostas
  • Marko Smith

    Qual porta o SFTP usa?

    • 6 respostas
  • Marko Smith

    Linha de comando para listar usuários em um grupo do Windows Active Directory?

    • 9 respostas
  • Marko Smith

    O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL?

    • 3 respostas
  • Marko Smith

    Como determinar se uma variável bash está vazia?

    • 15 respostas
  • Martin Hope
    Davie Ping uma porta específica 2009-10-09 01:57:50 +0800 CST
  • Martin Hope
    kernel O scp pode copiar diretórios recursivamente? 2011-04-29 20:24:45 +0800 CST
  • Martin Hope
    Robert ssh retorna "Proprietário incorreto ou permissões em ~/.ssh/config" 2011-03-30 10:15:48 +0800 CST
  • Martin Hope
    Eonil Como automatizar o login SSH com senha? 2011-03-02 03:07:12 +0800 CST
  • Martin Hope
    gunwin Como lidar com um servidor comprometido? 2011-01-03 13:31:27 +0800 CST
  • Martin Hope
    Tom Feiner Como posso classificar a saída du -h por tamanho 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent Como determinar se uma variável bash está vazia? 2009-05-13 09:54:48 +0800 CST

Hot tag

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve