태그 보관물: ps

ps

Linux에서`ps` 또는`top` 목록에서 프로세스를 ‘숨길’수 있습니까? 수행해야한다고 가정합니다. 어떻게 프로세스가 그것에 표시되지 않도록 실행할

먼저, 가능하다면 루트 (또는 루트의 UID 0을 공유하는 사용자)로 수행해야한다고 가정합니다.

어떻게 프로세스가 그것에 표시되지 않도록 실행할 수 있습니다 ps aux하거나 ps ef또는 top명령이 비 루트에 의해 실행되는 경우 목록?

이것도 가능합니까?

내가 일반적으로 실행하는 배포판은 RHEL / CentOS와 Ubuntu입니다. 따라서 배포 판별 답변이 있으면 괜찮습니다.



답변

여기 몇 가지 옵션이 있습니다. 쉬운 방법은 ps와 최상위 프로그램을 숨기고 싶은 것을 숨기는 수정 버전으로 바꾸는 것입니다.

대안은 기존 프로세스에 포함 된 코드를 실행하거나 코드 주위에 무해한 이름으로 래퍼 스크립트를 작성하는 것입니다.

일부 PS 버전에서는 argv []를 변경하여이를 수정할 수 있지만, 이것이 최상으로 작동하는지 확실하지 않으며 Linux에서 작동하는지 확실하지 않습니다 (주로 BSD 규칙 임).

이 모든 것을 수행함으로써 달성하고자하는 것에 정확히 달려 있습니까?


답변

커널 패치 http://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/commit/?id=0499680a42141d86417a8fbaa8c8db806bea1201 에 따르면 proc 파일 시스템에 hidepid 옵션을 사용할 수 있습니다.

hidepid = 0 (기본값)은 이전 동작을 의미합니다. 누구나 세상에서 읽을 수있는 모든 / proc / PID / * 파일을 읽을 수 있습니다.

hidepid = 1은 사용자가 / proc // 디렉토리에 액세스 할 수없고 자신의 디렉토리에 액세스 할 수 있음을 의미합니다. cmdline, sched *, status와 같은 민감한 파일은 이제 다른 사용자로부터 보호됩니다. proc_pid_permission ()에서 수행 된 권한 검사와 파일의 권한은 그대로 유지되므로 특정 파일 모드를 기대하는 프로그램은 혼동되지 않습니다.

hidepid = 2는 hidepid = 1에 모든 / proc / PID /가 다른 사용자에게는 보이지 않음을 의미합니다. 프로세스가 존재하는지 여부를 숨기는 것은 아니며 (예 : kill -0 $ PID와 같은 다른 방법으로 배울 수 있음) 프로세스의 euid 및 egid를 숨 깁니다. 침입자는 프로세스 실행, 일부 데몬이 높은 권한으로 실행되는지 여부, 다른 사용자가 민감한 프로그램을 실행하는지 여부, 다른 사용자가 프로그램을 전혀 실행하는지 여부 등에 대한 정보 수집 작업을 수행합니다.

gid = XXX는 모든 프로세스 정보를 수집 할 수있는 그룹을 정의합니다 (hidepid = 0 모드에서와 같이). 이 그룹은 루트가 아닌 사용자를 sudoers 파일 등에 넣는 대신 사용해야합니다. 그러나 전체 시스템에서 작업을 모니터링하지 않는 신뢰할 수없는 사용자 (데몬 등)는 그룹에 추가해서는 안됩니다.

프로세스 수준에서 가시성을 제어 할 수는 없지만 사용자가 자신의 프로세스 만 볼 수 있도록 할 수 있습니다.

커널 버전이 3.3보다 큰 경우 다음 명령을 사용하여 시도 할 수 있습니다.

 
mount /proc -o remount,hidepid=2


답변

예를 들어 top 및 n 명령에서 F 명령을 사용하여보고자하는 것을 구성하십시오. ~ / .toprc에 원하는 구성을 작성하려면 W 명령을 사용하십시오. 최고의 명령을 볼 수 있습니다. 이렇게하면 문제를 빠르게 해결할 수 있습니다. F를 사용하면보고 싶은 필드를 추가 / 제거 할 수 있지만 f에서는 s를 사용하여 정렬을 설정 한 다음 q를 다시 표시로 되돌릴 수 있습니다. 그런 다음 n은보고 싶은 프로세스 수를 설정하고 W는 .toprc에 저장합니다.


답변