Existe uma maneira de controlar o acesso ao sistema de arquivos com o systemd?

3

Então estou mergulhando nas complexidades do systemd e sua capacidade de medir recursos com cgroups como cpu, io e memória.

Existe também uma maneira de controlar os diretórios aos quais um processo tem acesso com o systemd? Por exemplo, /usr/bin é geralmente marcado com o+rX e gostaria que um processo de servidor da Web fosse bloqueado desse diretório. Houve alguns exploits de software em que você pode ler arquivos arbitrários do disco, isso aumentaria a abordagem em camadas da segurança.

Tenho certeza de que isso poderia ser feito com algumas permissões do sistema de arquivos, mas queria saber se havia uma maneira melhor. Obrigado falha do servidor!

    
por Jonathan S. Fisher 28.04.2017 / 16:05

1 resposta

4

Você tem um número de opções, na verdade, que você pode definir no (s) arquivo (s) da unidade para seus serviços. Todos eles trabalham no mesmo princípio, usando montagens de ligação dentro do namespace systemd configurado para o serviço. Certas partes do sistema de arquivos são montadas somente para leitura ou renderizadas completamente invisíveis / inacessíveis pela montagem de um diretório vazio.

PrivateTmp é indiscutivelmente o mais comum.
A ativação de PrivateTmp configura um novo namespace do sistema de arquivos para os processos executados e monta diretórios privados /tmp e /var/tmp dentro dele que não são compartilhados por processos fora do namespace.

ProtectSystem
 Se true , monta os diretórios /usr e /boot somente leitura para processos chamados por esta unidade.
Se definido como full , o diretório /etc também será montado como somente leitura. Se configurado como "strict", toda a hierarquia do sistema de arquivos será montada como somente leitura, exceto pelas subárvores do sistema de arquivos da API / dev, / proc e / sys

ProtectHome
Aceita um argumento booleano ou "somente leitura". Se true , os diretórios /home , /root e /run/user ficarão inacessíveis e vazios para os processos invocados por esta unidade. Se definido como " read-only ", os três diretórios serão tornados somente leitura em vez disso

ProtectKernelTunables
Se for verdade, as variáveis do kernel acessíveis por /proc/sys , /sys , /proc/sysrq-trigger , /proc/latency_stats , /proc/acpi , /proc/timer_stats , /proc/fs e /proc/irq serão feitas somente leitura.

ReadOnlyPaths
Os caminhos listados em ReadOnlyPaths= são acessíveis apenas para leitura, a escrita será recusada mesmo que os controles usuais de acesso a arquivos permitam isso.

InaccessiblePaths
Os caminhos listados em InaccessiblePaths= serão tornados inacessíveis para processos dentro do namespace (junto com tudo abaixo deles na hierarquia do sistema de arquivos).

Pode haver mais opções.

Uma política de acesso mais em camadas provavelmente exigiria o SELinux, e um entendimento muito completo disso, assim como você provavelmente precisará adotar o Segurança de vários níveis .

    
por 28.04.2017 / 16:43