Posso desativar a execução do comando em find

3

Fui solicitado a fornecer acesso a uma pilha de servidores RedHat EL para uma ferramenta de descoberta externa (e não, não é uma opção). Esta ferramenta requer acesso a uma lista de comandos via sudo. A maioria dessas listas são simples ou podem ser bloqueadas em uma opção. No entanto, eles também exigem sudo / usr / bin / find.

Obviamente, não estou feliz com isso, pois o find permite executar qualquer comando via -exec e amigos, assim como excluir arquivos aleatórios. É tão bom quanto dar acesso irrestrito à raiz.

Eu não acho que um simples alias de comando sudo irá ajudar, já que necessariamente deve incluir um caractere curinga para o caminho (1º argumento), o que permitirá qualquer argumento subseqüente também. É de todo possível / viável desativar os comandos inseguros em / usr / bin / find quando executado com o sudo?

Então, para resumir:

  • Acontecer achados normais: por exemplo

    /usr/bin/sudo /usr/bin/find /some/path/or/other -mtime +3 -print
    /usr/bin/sudo /usr/bin/find /home -executable -ls
    
  • Bloqueie o uso de exec / execdir / delete: por exemplo

    /usr/bin/sudo /usr/bin/find /some/path/or/other -name '*' -type f -exec /bin/rm -f {} \;
    /usr/bin/sudo /usr/bin/find / -ctime -1 -delete
    
por Tony 13.11.2017 / 07:07

2 respostas

1

Você menciona que precisa fornecer acesso aos comandos via sudo , para que você possa fazer coisas que fazem com que sudo exija mais intenção prejudicial de contornar as regras. Não é uma ferramenta perfeita para o trabalho, já que está tentando bloquear o acesso depois de ser dado, em vez de permitir acesso específico de uma posição de negação padrão em outras implementações do RBAC.

Eu nunca confiaria em um auditor com acesso irrestrito. Seu trabalho é tentar quebrar seu perfil de segurança e iluminar quaisquer vulnerabilidades. Quanto mais seguro você fizer o seu sistema, mais difícil será para eles, e para qualquer parte nefasta também, para escolher seus bloqueios.

Como sudo funciona aplicando regras em ordem, comece com os comandos que eles podem executar e adicione regras que restrinjam várias opções a esses comandos. Você pode modificar o arquivo sudoers para usar algo como:

%auditor ALL = /usr/bin/lsattr,
               /usr/bin/find, 
               ! /usr/bin/find *-exec*,
               ! /usr/bin/find *-delete*

Isso permitiria ao auditor executar o find, sem permitir que ele fosse executado com -exec, -execdir ou -delete.

tom@evil:~$ sudo id
uid=0(root) gid=0(root) groups=0(root),999(lightsd)

tom@evil:~$ sudo find . -mtime -50
.
./.bashrc
./.kshrc
./.bash_history
./.bash_logout
./.profile

tom@evil:~$ sudo find . -mtime 5 -exec ls -la {} \;
Sorry, user tom is not allowed to execute '/usr/bin/find . -mtime 5 -exec ls -la {} ;' as root on localhost.

tom@evil:~$ sudo find . -mtime -5 -name .kshrc -delete
Sorry, user tom is not allowed to execute '/usr/bin/find . -mtime -5 -name .kshrc -delete' as root on localhost.

É uma espécie de PITA para configurar e manter bons perfis de sudoers, mas considero que vale a pena o esforço, especialmente em um ambiente compatível.

    
por 13.11.2017 / 19:13
0

Concentre-se em LOGGING em vez disso, se tiver que conceder um acesso de usuário parcialmente confiável que possa ser escalado para root - e deixar claro que escapar do log usando alguma variante de "sudo su" está obsoleto e considerado uma ação malevolente. / p>

Efetue login em um servidor de log remoto que esteja fora dos limites do usuário parcialmente confiável e também faça com que o servidor de log monitore a conectividade de rede contínua com a máquina sob supervisão (para que uma entrada de log não seja suprimida por interrupção da rede). / p>     

por 21.03.2018 / 12:07