먼저, 가능하다면 루트 (또는 루트의 UID 0을 공유하는 사용자)로 수행해야한다고 가정합니다.
어떻게 프로세스가 그것에 표시되지 않도록 실행할 수 있습니다 ps aux
하거나 ps ef
또는 top
명령이 비 루트에 의해 실행되는 경우 목록?
이것도 가능합니까?
내가 일반적으로 실행하는 배포판은 RHEL / CentOS와 Ubuntu입니다. 따라서 배포 판별 답변이 있으면 괜찮습니다.
먼저, 가능하다면 루트 (또는 루트의 UID 0을 공유하는 사용자)로 수행해야한다고 가정합니다.
어떻게 프로세스가 그것에 표시되지 않도록 실행할 수 있습니다 ps aux
하거나 ps ef
또는 top
명령이 비 루트에 의해 실행되는 경우 목록?
이것도 가능합니까?
내가 일반적으로 실행하는 배포판은 RHEL / CentOS와 Ubuntu입니다. 따라서 배포 판별 답변이 있으면 괜찮습니다.
답변:
여기 몇 가지 옵션이 있습니다. 쉬운 방법은 ps와 최상위 프로그램을 숨기고 싶은 것을 숨기는 수정 버전으로 바꾸는 것입니다.
대안은 기존 프로세스에 포함 된 코드를 실행하거나 코드 주위에 무해한 이름으로 래퍼 스크립트를 작성하는 것입니다.
일부 PS 버전에서는 argv []를 변경하여이를 수정할 수 있지만, 이것이 최상으로 작동하는지 확실하지 않으며 Linux에서 작동하는지 확실하지 않습니다 (주로 BSD 규칙 임).
이 모든 것을 수행함으로써 달성하고자하는 것에 정확히 달려 있습니까?
python myScript.py
및 모든 subprocess.Popen
명령 (암호를 포함하거나 포함하지 않을 수 있음)이 표시되지 않습니까?
커널 패치 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
hidepid=2
특정 사용자에게만 영향을 미치거나 특정 사용자를 허용 목록에 추가하도록 제한 할 수 있습니까 ?
root
?