Restringir arquivos do usuário sudo

2

(Desenvolvedor aqui - novato relativo no mundo sysadmin).

Alguém sabe de uma maneira que os arquivos podem ser restritos (sem acesso de leitura, gravação ou execução) do usuário sudo?

Um pequeno histórico sobre a situação: No momento, estamos procurando uma maneira de fornecer acesso sudo a alguns usuários e, ao mesmo tempo, restringir o acesso a um conjunto de arquivos. A menos que isso seja feito, o acesso sudo não será uma opção e, em vez disso, colocaremos na lista de permissões os arquivos / comandos (ou envolvê-los em um script) conforme necessário, em resposta a solicitações do usuário.

Como seria de esperar, a opção de lista de permissões exigiria muito mais manutenção e atraso, pois os usuários aguardariam a resposta da equipe de administradores para solicitações.

    
por Jeff Levine 06.01.2017 / 15:44

1 resposta

5

A maneira que eu geralmente implemento esse tipo de restrição requer que várias condições sejam atendidas, caso contrário as restrições podem ser facilmente contornadas:

  • O usuário não pertence ao grupo wheel , o único autorizado a usar su (imposto pelo PAM).
  • O usuário recebe um propriamente protegido rbash com um PATH de somente leitura apontando para um ~/bin privado, esse diretório ~/bin/ contém links para utilitários simples:

    $ ll ~/bin
    total 0
    lrwxrwxrwx. 1 root dawud 14 Sep 17 08:58 clear -> /usr/bin/clear*
    lrwxrwxrwx. 1 root dawud  7 Sep 17 08:58 df -> /bin/df*
    lrwxrwxrwx. 1 root dawud 10 Sep 17 08:58 egrep -> /bin/egrep*
    lrwxrwxrwx. 1 root dawud  8 Sep 17 08:58 env -> /bin/env*
    lrwxrwxrwx. 1 root dawud 10 Sep 17 08:58 fgrep -> /bin/fgrep*
    lrwxrwxrwx. 1 root dawud  9 Sep 17 08:58 grep -> /bin/grep*
    lrwxrwxrwx. 1 root dawud 10 Sep 17 08:58 rview -> /bin/rview*
    lrwxrwxrwx. 1 root dawud 13 Sep 17 08:58 rvim -> /usr/bin/rvim*
    lrwxrwxrwx. 1 root dawud 13 Sep 17 08:58 sudo -> /usr/bin/sudo*
    lrwxrwxrwx. 1 root dawud 17 Sep 17 08:58 sudoedit -> /usr/bin/sudoedit*
    lrwxrwxrwx. 1 root dawud 13 Sep 17 08:58 tail -> /usr/bin/tail*
    lrwxrwxrwx. 1 root dawud 11 Sep 17 08:58 wc -> /usr/bin/wc*
    
  • o usuário recebe um ambiente restrito e somente leitura (pense em coisas como LESSSECURE , TMOUT , HISTFILE variables).

  • opcionalmente, o usuário é mapeado para o usuário do SELinux staff_u e recebe direitos para executar comandos como outro usuário, conforme necessário, por meio de sudo .
  • o usuário /home , /tmp e possivelmente /var/tmp são polyinstantiated via /etc/security/namespace.conf :

    /tmp       /tmp/.inst/tmp.inst-$USER-     tmpdir:create   root
    /var/tmp   /tmp/.inst/var-tmp.inst-$USER- tmpdir:create   root
    $HOME      $HOME/$USER.inst/              tmpdir:create   root
    

    Além disso, /etc/security/namespace.init faz todos os arquivos esqueletais somente para o usuário e pertencem a root .

Dessa forma, você pode escolher se $USER pode executar qualquer comando em seu próprio nome (por meio de um link no diretório ~/bin privado, provisionado via /etc/skel , conforme explicado acima), em nome de outro usuário (via sudo ) ou nenhum.

Com relação a "acesso a um conjunto de arquivos", você não especifica se é somente leitura ou acesso de leitura / gravação.

Em qualquer caso, isso pode ser configurado por meio das regras sudo . Eu implementaria regras para conceder acesso somente leitura a arquivos via rview e leitura-gravação via rvim , o último normalmente sendo configurado usando a diretiva editor no seu arquivo sudoers :

Defaults editor=/usr/bin/rvim

Assim, os usuários podem sudoedit de arquivos permitidos.

Esta solução pode ser facilmente implementada usando sua ferramenta de gerenciamento de configuração de escolha.

Novos comandos podem ser adicionados rapidamente ao diretório ~/bin privado (já que são apenas links simbólicos gerenciados a partir da lógica de namespace). Novas regras sudo também podem ser gerenciadas da mesma maneira.

    
por 06.01.2017 / 15:58