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