Como gerenciar processos pai e filho

Prev Next

O Segura® EPM para Linux permite o gerenciamento e controle de processos pai e filho. Por meio de políticas de acesso, administradores podem definir quais processos filhos podem ser gerados ou quais processos pai têm permissão para gerar determinados processos filhos ao configurar novas políticas.

Caso de uso: apenas o shell bash pode executar o comando ls

Vamos criar uma regra que permite apenas ao shell bash executar o comando ls. Essa configuração exige o registro de uma nova regra na plataforma Segura®.

  1. No Segura®, na barra de navegação, passe o mouse sobre o menu Produtos e selecione EPM.
  2. No menu lateral, selecione Políticas > Linux > Políticas.
  3. Clique em Adicionar para ser direcionado à tela de seleção de política.
  4. Clique no botão Dispositivo.
  5. No formulário de Cadastro de política de acesso, navegue até a aba Geral e preencha os seguintes campos:
    1. Nome da política: preencha com Apenas bash pode executar “ls”.
    2. Status: selecione Habilitar.
    3. Diretriz: selecione Executar no menu suspenso.
    4. Checker (caminho ou executor): preencha com exec="/bin/ls".
    5. Habilitar auditoria: selecione Sim.
    6. Na tabela Regras, clique no botão Adicionar e preencha:
      1. Permitir ou Bloquear: selecione Permitir no menu suspenso.
      2. Texto da Regra: preencha com task.exe="/bin/bash".
  6. Navegue até a aba Revisar e clique em Salvar.

Caso de Uso: o shell bash só pode executar o comando ls

Para garantir que o shell bash esteja restrito a executar apenas o comando ls, uma nova regra deve ser criada e registrada na plataforma Segura®, conforme ilustrado no cenário a seguir.

  1. No Segura®, na barra de navegação, passe o mouse sobre o menu Produtos e selecione EPM.
  2. No menu lateral, selecione Políticas > Linux > Políticas.
  3. Clique em Adicionar para ser direcionado à tela de seleção de política.
  4. Clique no botão Dispositivo.
  5. No formulário de Cadastro de política de acesso, navegue até a aba Geral e preencha os seguintes campos:
    1. Nome da política: preencha com Bash só pode executar “ls”.
    2. Status: selecione Habilitar.
    3. Diretriz: selecione Executar no menu suspenso.
    4. Checker (caminho ou executor): preencha com exec="/bin/ls".
    5. Habilitar auditoria: selecione Sim.
    6. Na tabela Regras, clique no botão Adicionar duas vezes e preencha:
      1. Permitir ou Bloquear: selecione Permitir no menu suspenso.
      2. Texto da Regra: preencha com task.exe="/bin/bash".
      3. Permitir ou Bloquear: selecione Bloquear no menu suspenso.
      4. Texto da Regra: preencha com * para negar todos os comandos, exceto o ls.
  6. Navegue até a aba Revisar e clique em Salvar.
Info

Aplicaremos o controle de processos pai e filho para qualquer tipo de execução, incluindo shell, software e script.

Validando a política no dispositivo de destino

Veja um exemplo ilustrando o conceito de processos pai e filho.

  • Estabelecemos a regra no dispositivo de destino.
  • O usuário administrador do banco de dados tem permissão para escrever no arquivo.
  • O superusuário não terá permissão para escrever no arquivo.

Visualize o arquivo /sys/kernel/security/caitsith/policy para verificar as regras padrão do CaitSith aplicadas ao dispositivo.

     root@debian:/root# cat /sys/kernel/security/caitsith/policy
     POLICY_VERSION = 20120401
     stat Policy updated: 9036 (Last: 2019/12/24 00:31:57)
     stat Requests denied: 10 (Last: 2019/12/23 18:55:22)
     stat Memory used by policy: 4512
     stat Memory used by audit: 63808
     stat Memory used by query: 0
     quota memory audit 16777216
     quota memory query 1048576
     quota audit [1] allowed = 0 denied = 1024 unmatched = 1024
     100 acl write path="/etc/oracle/tnsnames.ora"
     audit 1
     100 allow task.uid = 1002
     200 deny

Escrevendo no arquivo como um usuário DBA

Utilizando a conta do usuário DBA, o conteúdo será adicionado ao arquivo designado. Essa ação deve ser permitida pela regra atual. É importante observar que o usuário DBA possui privilégios de escrita para esse arquivo específico.

     dba@debian:-S$ ls -1 /etc/oracle/
     total 4
     -rw-r--r-- 1 dba oracle 118 Jan 23 21:42 tnsnames.ora
     dba@debian:~$ echo 'production=(DESCRIPTION= (ADDRESS=(PROTOCOL=tcp) (HOST=db.corp) (PORT=1630)) (CONNECT_DATA= (SERVICE_NAME=intranet.corp)))' > /etc/oracle/tnsnames.ora
     dba@debian:-$ cat /etc/oracle/tnsnames.ora
     production= (DESCRIPTION= (ADDRESS= (PROTOCOL=tcp) (HOST=db.corp) (PORT=1630)) (CONNECT_DATA= (SERVICE_NAME=intranet.corp)))

Tentando escrever no arquivo como superusuário

Devido a uma regra de negação criada especificamente, o superusuário é impedido de escrever no arquivo. Consequentemente, mesmo com privilégios de superusuário, a operação de escrita não é bem-sucedida.

     root@debian:~# ls -1 /etc/oracle/
     total 4
     -rw-r--r-- 1 dba oracle 118 Jan 23 21:43 tnsnames.ora
     root@debian:~# echo "root was here” > /etc/oracle/tnsnames.ora
     bash: /etc/oracle/tnsnames.ora: Operação não permitida
     root@debian:~# cat /etc/oracle/tnsnames.ora
     production= (DESCRIPTION= (ADDRESS= (PROTOCOL=tcp) (HOST=db.corp) (PORT=1630)) (CONNECT_DATA= (SERVICE_NAME=intranet.corp)))
     root@debian:~# id
     uid=0 (root) gid=0 (root) groups=0 (root)