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 / computer / Perguntas / 1532644
Accepted
Dave
Dave
Asked: 2020-03-14 22:20:26 +0800 CST2020-03-14 22:20:26 +0800 CST 2020-03-14 22:20:26 +0800 CST

Restringindo o acesso a arquivos quando as permissões padrão do Linux não forem suficientes

  • 772

Eu administro vários sistemas RHEL 6.9. Em cada sistema, um diretório específico, chame-o de /app_dir , é o nível superior onde os scripts, executáveis, arquivos de configuração e logs do nosso projeto são armazenados. A árvore sob esse diretório de nível superior é ampla e profunda. Todos os arquivos e subdiretórios em /app_dir pertencem ao usuário user1 e têm participação no grupo group1 . Os usuários humanos sempre executam como user1 e o grupo primário de user1 é group1 .

Alguns sistemas são para os membros da equipe de fabricação testarem os widgets de hardware que produzimos antes da entrega a um cliente, e alguns sistemas são para o desenvolvimento do software usado para testar os widgets de hardware.

Todos os usuários humanos efetuam login em um desktop GNOME como user1 . Nosso aplicativo principal (GUI) é executado abrindo um terminal e iniciando o aplicativo a partir da linha de comando.

Os sistemas de fabricação precisam permanecer em um estado primitivo. No entanto, por vários motivos, os desenvolvedores alteram um script ou arquivo de configuração para testar algo em um sistema de fabricação e esquecem de reverter a alteração. Um problema clássico.

Então, quando um membro da equipe de produção usar o sistema, ele não funcionará, dará um passe falso (este é o pior caso porque nos faz entregar um widget de hardware com defeito) ou dará um falso falhar (causando perda de receita por não entregar um widget de hardware que era, de fato, adequado para entrega).

Portanto, preciso encontrar uma maneira de bloquear (ou seja, tornar legíveis, mas não graváveis) os scripts e arquivos de configuração em nossa estrutura de diretórios para que, com algumas exceções bem definidas, eles não possam ser alterados, exceto por um lead que tenha privilégios especiais. As permissões padrão do Linux são inadequadas, pois, dado o que está descrito no primeiro parágrafo deste post, elas permitem que qualquer usuário humano (que sempre roda como user1 ) altere qualquer arquivo à vontade.

Neste ponto do nosso ciclo de vida, infelizmente não temos flexibilidade para mudar muito em termos de estrutura de diretórios, usuários, grupos, etc.

Estou pensando que o SELinux fornecerá uma solução.

A situação real é muito mais complexa, mas como exemplo, considere esta estrutura de diretórios:

/app_dir/bin/
/app_dir/bin/widget_tester
/app/dir/bin/<other executables>

/app_dir/config/
/app_dir/config/widget_info.txt
/app_dir/config/test_tolerances.txt
/app_dir/config/<other configuration files>

/app_dir/scripts/
/app_dir/scripts/script_1.py
/app_dir/scripts/script_2.sh
/app_dir/scripts/<other scripts>

/app_dir/logs/
/app_dir/logs/<log files>

/app_dir/bin/ , e tudo abaixo dele, deve ser bloqueado sem exceções.

/app_dir/config/ , e tudo abaixo dele, deve ser bloqueado com exceção de widget_info.txt . Um membro da equipe de fabricação precisa ser capaz de fornecer informações sobre o widget de hardware que está prestes a ser testado.

/app_dir/scripts/ , e tudo abaixo dele, deve ser bloqueado com exceção de script_1.py .

/app_dir/logs/ , e tudo abaixo dele, deve ser gravável por nossos executáveis ​​e scripts, mas para humanos (ou seja , user1 ), deve ser apenas legível.

O SELinux é a ferramenta certa para este trabalho? Em caso afirmativo, os tipos/imposição de tipo são o mecanismo a ser usado? se não para nenhum dos dois, onde mais eu focaria melhor meus esforços de aprendizado?

ATUALIZAÇÃO 1

Observe que a configuração que descrevi para que todos os humanos sejam executados como usuário1 é anterior à minha chegada ao projeto em, literalmente, anos. Eu entendo que ele tem suas deficiências (mas na verdade existem razões válidas para isso que não preciso entrar aqui). Esta é uma operação de fabricação do mundo real. Uma reestruturação do nosso setup é totalmente inviável do ponto de vista do negócio. Não seria permitido pela administração.

Aponto isso para enfatizar que não estou solicitando uma crítica de nossa configuração atual. Estou tentando descobrir com especialistas da comunidade que sabem mais sobre o SELinux do que eu se estou latindo na árvore certa ou errada gastando meus esforços aprendendo sobre o SELinux. Também estou solicitando ponteiros para outros mecanismos do Linux que talvez não conheça e que possam resolver esse problema. (ou seja, embora meu foco atual seja o SELinux, não quero necessariamente limitar a discussão ao SELinux.)

linux redhat-enterprise-linux
  • 2 2 respostas
  • 126 Views

2 respostas

  • Voted
  1. Reda Salih
    2020-03-17T17:34:24+08:002020-03-17T17:34:24+08:00

    Estes são problemas de permissões simples, o SeLinux não ajudará neste caso:

    ACL: é um mecanismo de permissão adicional e mais flexível para sistemas de arquivos.

    O que você precisa fazer aqui é simplesmente dar a cada usuário/grupo as permissões necessárias nos arquivos:

    1- Primeiro, verifique se seus sistemas de arquivos suportam ACLs (por exemplo, xfs, ext2, ext3, ext4):

    2- Defina a propriedade de /app_dir/* para leaduser , para que o lead seja o único a ter controle total sobre ele:

    chown -R lead:lead /app_dir/
    

    OU

    Se você quiser continuar usando user1 & group1 porque é assim que o aplicativo deve ser iniciado, adicione leaduser a group1 como um grupo secundário:

    usermod -G group1 leaduser
    

    3- Defina as exceções configurando ACLS em diretórios/arquivos.

    Ex: /app_dir/bin/

    setfacl -Rm g:devgroup:rx /app_dir/bin/
    setfacl -Rm g:manufactgroup:rx /app_dir/bin/
    

    PS: R é para recursivo.

    3- Verifique se as ACLs foram aplicadas corretamente:

    getfacl /app_dir/bin/
    

    Aqui está um ótimo artigo que ajudará a definir as ACLs corretas para os caminhos restantes

    • 1
  2. Best Answer
    kreemoweet
    2020-03-17T17:57:56+08:002020-03-17T17:57:56+08:00

    Use o comando "chattr" para atribuir aos arquivos/pastas selecionados o atributo "imutável". Ninguém poderá modificar esses arquivos, nem mesmo o proprietário do arquivo ou o usuário root até que o atributo seja removido pelo root.

    • 1

relate perguntas

  • Como eu faria minha máquina Linux parecer que está executando o Windows?

  • Existe um equivalente a cd - para cp ou mv?

  • execute o contêiner do docker como root

  • Como ativar o sensor de impressão digital no domínio e no diretório ativo do Linux

  • Como alterar permanentemente Ctrl + C para Ctrl + K no CentOS 7?

Sidebar

Stats

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

    Como posso reduzir o consumo do processo `vmmem`?

    • 11 respostas
  • Marko Smith

    Baixar vídeo do Microsoft Stream

    • 4 respostas
  • Marko Smith

    O Google Chrome DevTools falhou ao analisar o SourceMap: chrome-extension

    • 6 respostas
  • Marko Smith

    O visualizador de fotos do Windows não pode ser executado porque não há memória suficiente?

    • 5 respostas
  • Marko Smith

    Como faço para ativar o WindowsXP agora que o suporte acabou?

    • 6 respostas
  • Marko Smith

    Área de trabalho remota congelando intermitentemente

    • 7 respostas
  • Marko Smith

    O que significa ter uma máscara de sub-rede /32?

    • 6 respostas
  • Marko Smith

    Ponteiro do mouse movendo-se nas teclas de seta pressionadas no Windows?

    • 1 respostas
  • Marko Smith

    O VirtualBox falha ao iniciar com VERR_NEM_VM_CREATE_FAILED

    • 8 respostas
  • Marko Smith

    Os aplicativos não aparecem nas configurações de privacidade da câmera e do microfone no MacBook

    • 5 respostas
  • Martin Hope
    CiaranWelsh Como posso reduzir o consumo do processo `vmmem`? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Pesquisa do Windows 10 não está carregando, mostrando janela em branco 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    v15 Por que uma conexão de Internet gigabit/s via cabo (coaxial) não oferece velocidades simétricas como fibra? 2020-01-25 08:53:31 +0800 CST
  • Martin Hope
    fixer1234 O "HTTPS Everywhere" ainda é relevante? 2019-10-27 18:06:25 +0800 CST
  • Martin Hope
    andre_ss6 Área de trabalho remota congelando intermitentemente 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney Por que colocar um ponto após o URL remove as informações de login? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension Ponteiro do mouse movendo-se nas teclas de seta pressionadas no Windows? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca Todos os meus complementos do Firefox foram desativados repentinamente, como posso reativá-los? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK É possível criar um código QR usando texto? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 Altere o nome da ramificação padrão do git init 2019-04-01 06:16:56 +0800 CST

Hot tag

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

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