특정 프로세스를 숨기는 방법은 무엇입니까?

특정 프로세스를 숨기는 방법은 무엇입니까?

이 명령은 hidepid사용자가 볼 수 없도록 하는 데 사용됩니다.모두해당 프로세스에 속하지 않지만 특정 프로세스를 선택할 수 있는 가능성을 제공하지 않는 프로세스입니다. 그냥 숨길 수 있습니까?하나Linux 머신에서 프로세스를 진행하시나요?

답변1

약간 더러우며 아마도 더 깨끗한 솔루션(SELinux 또는 grsec 사용)이 있을 수 있지만 /proc/<pid>.

예를 들어 다음과 같습니다.

mount -o bind /empty/dir /proc/42

일반 사용자는 프로세스 42를 볼 수 없습니다.

그러나 장착 지점을 볼 수 있기 때문에 숨겨진 내용도 볼 수 있습니다.

서비스에 대해 이 작업을 수행하려면 서비스가 시작될 때마다 초기화 스크립트나 다른 방법을 사용하여 이를 수행해야 합니다.

특정 사용자에게만 pid를 숨기려면 네임스페이스를 사용하여(아마도 사용 pam_namespace) 대상 사용자의 네임스페이스에서만 마운트 바인딩을 완료할 수 있습니다.

이 상황을 되돌리려면 다음을 실행하세요.

umount /proc/42

답변2

커널 3.3부터 사용자 요구 사항을 충족하는 몇 가지 기능을 구현했습니다.

PROC(5)에 따르면:

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 be‐
                  havior, and the default if this mount option is not specified.

              1   Users may not access files and subdirectories inside any /proc/[pid]  directo‐
                  ries  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  ele‐
                  vated  privileges,  whether  another  user  is running some sensitive program,
                  whether other users are running any program at all, and so on).

       gid=gid (since Linux 3.3)
              Specifies the ID of a group whose members are authorized to learn process informa‐
              tion  otherwise  prohibited by hidepid (i.e., users in this group behave as though
              /proc was mounted with hidepid=0).  This group  should  be  used  instead  of  ap‐
              proaches such as putting nonroot users into the sudoers(5) file.

이는 /proc/PID를 읽을 수 있는 사람을 선택할 수 있기 때문에 유용합니다.

따라서 시도해 보고 싶다면 필요에 따라 /proc를 다시 마운트하는 것을 잊지 마세요.

--실제 사례:

: su -
Password: 
root@foo:~# mount -o remount,hidepid=2 /proc
root@foo:~# exit
logout
:ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
tntx          709  0.0  0.1  33980  8012 tty2      S   18:12   0:00 irssi
tntx          746  0.0  0.0   8868  3880 tty1     S    18:13   0:00 -ksh93

이제 PS(1) 또는 lsof(8)를 통해 내 프로세스 외에 다른 프로세스를 볼 수 없습니다.

관련 정보