Por que o top não requer raiz (programas não-root podem ver outros processos em execução)?

0

Eu tenho tentado descobrir se um aplicativo que não é executado como root tem acesso a uma lista de programas em execução no sistema. Eu diria que a resposta é não, mas não consegui encontrar nada sobre isso. Parece estranho para mim que o comando top não exija root, o que sugere que qualquer aplicativo também pode obter acesso a esse comando.

Existe alguma maneira de contornar isso? Eu suponho que seria possível apenas definir as permissões de / usr / bin / top para root?

    
por Astrum 27.01.2017 / 02:00

2 respostas

3

No Linux, é tradicional que todos os usuários possam ver a lista de processos em execução. Embora revele informações sobre o software que está sendo executado e sobre quais privilégios ele está sendo executado, ele não é considerado, tradicionalmente, um risco de segurança principal.

Você pode configurá-lo para que os usuários não possam ver a lista de processos, embora isso possa quebrar a compatibilidade com alguns aplicativos.

Mais informações em: link

    
por thomasrutter 27.01.2017 / 02:19
1

No caso das distribuições Ubuntu e Linux, tudo tem a ver com /proc filesystem, onde cada processo possui um diretório que corresponde ao seu pid e arquivos que listam informações sobre o processo. A maioria das informações é acessível publicamente, como nomes de processos, estatísticas de memória, etc. Isso também é fácil de ver com o comando strace -e trace=open top -b -n1 , que informará que top abre um monte de diretórios e arquivos em /proc para leitura.

% bl0ck_qu0te%

A chave aqui é que você precisa acessar o sistema em primeiro lugar. Se você é um usuário em um sistema, não há motivo para ocultar outros processos seus, já que a segurança através da obscuridade nunca funciona.

% bl0ck_qu0te%

Você pode definir permissões de top , exceto que isso não impedirá que outros programas acessem informações sobre a execução de processos.

Você pode definir opções de montagem para /proc no arquivo /etc/fstab com a opção hidepid . De man proc :

Opções de montagem        O sistema de arquivos proc suporta as seguintes opções de montagem:

   hidepid=n (since Linux 3.3)
          This option controls who can access the information in
          /proc/[pid] directories.  The argument, n, is one of the
          following values:

          0   Everybody may access all /proc/[pid] directories.  This is
              the traditional behavior, and the default if this mount
              option is not specified.

          1   Users may not access files and subdirectories inside any
              /proc/[pid] directories but their own (the /proc/[pid]
              directories themselves remain visible).  Sensitive files
              such as /proc/[pid]/cmdline and /proc/[pid]/status are now
              protected against other users.  This makes it impossible
              to learn whether any user is running a specific program
              (so long as the program doesn't otherwise reveal itself by
              its behavior).

          2   As for mode 1, but in addition the /proc/[pid] directories
              belonging to other users become invisible.  This means
              that /proc/[pid] entries can no longer be used to discover
              the PIDs on the system.  This doesn't hide the fact that a
              process with a specific PID value exists (it can be
              learned by other means, for example, by "kill -0 $PID"),
              but it hides a process's UID and GID, which could
              otherwise be learned by employing stat(2) on a /proc/[pid]
              directory.  This greatly complicates an attacker's task of
              gathering information about running processes (e.g.,
              discovering whether some daemon is running with elevated
              privileges, whether another user is running some sensitive
              program, whether other users are running any program at
              all, and so on).

Assim, o que você provavelmente quer é ter algo assim em /etc/fstab :

proc            /proc           proc    defaults,hidepid=2        0       0

Há também a opção gid , onde você pode permitir que determinado grupo de usuários veja as informações do processo, como o grupo de administradores. Os gid são numéricos, então você usaria algo como gid=1000 para permitir que apenas o usuário administrador e outros usuários que pertencem ao grupo dele vejam as informações do processo.

Você também pode remontar temporariamente /proc filesystem assim (para testes ou outros propósitos):

mount -o remount,hidepid=2 /proc
    
por Sergiy Kolodyazhnyy 27.01.2017 / 02:58