새 프로세스(신뢰할 수 없는 코드)가 생성되지 않도록 새 프로세스를 시작할 수 있습니까?
또한 일반적으로 파일 및 모든 장치에 대한 입력/출력을 수행할 수 없도록 프로세스를 시작하려면 어떻게 해야 합니까?
답변1
이건 직업인 것 같아필수 접근 제어시스템처럼SELinux또는갑옷을 적용.
SELinux에 관한 이 기사그러한 시스템의 힘과 그러한 정책을 개발하는 데 필요한 도구를 소개하게 될 것입니다.
모든 파일에 대한 액세스를 제한하려는 경우 역효과를 낳을 수 있습니다. Unix에서는 "모든 것이 파일"이므로 모든 파일 액세스를 완전히 차단하면 프로그램이 시작되지 않습니다. 보다 효율적인 접근 방식은 파일 쓰기를 완전히 또는 특정 디렉터리에만 제한하고 프로그램이 합법적으로 읽을 수 있는 파일 범주를 허용 목록에 추가하는 것입니다.
또 다른 옵션은 다음을 사용하는 것입니다.chroot또는감옥. 이러한 운영 체제 기능을 사용하면 파일 I/O 또는 프로그램 실행을 차단할 필요가 없습니다. 신뢰할 수 없는 프로그램에서 중요한 내용을 읽거나 쓰거나 실행할 수 없는 제한된 환경을 간단히 구축할 수 있습니다. 귀하의 프로그램은 "상자"에 넣은 파일에서만 작동할 수 있습니다.
답변2
시스템에서 를 사용하는 경우 pam
신뢰할 수 없는 전용 사용자를 만들고 다음을 참조하세요 /etc/security/limits.conf
.
#Each line describes a limit for a user in the form:
#<domain> <type> <item> <value>
#
#Where:
#<domain> can be:
# - an user name
# - a group name, with @group syntax
[...]
#
#<type> can have the two values:
# - "soft" for enforcing the soft limits
# - "hard" for enforcing hard limits
#
#<item> can be one of the following:
# - core - limits the core file size (KB)
# - data - max data size (KB)
# - fsize - maximum filesize (KB)
# - memlock - max locked-in-memory address space (KB)
# - nofile - max number of open files
# - rss - max resident set size (KB)
# - stack - max stack size (KB)
# - cpu - max CPU time (MIN)
# - nproc - max number of processes
# - as - address space limit (KB)
# - maxlogins - max number of logins for this user
# - maxsyslogins - max number of logins on the system
# - priority - the priority to run user process with
# - locks - max number of file locks the user can hold
# - sigpending - max number of pending signals
# - msgqueue - max memory used by POSIX message queues (bytes)
# - nice - max nice priority allowed to raise to values: [-20, 19]
# - rtprio - max realtime priority
nproc
당신은 특히 아마도를 찾고 있습니다 nofile
. 그럼에도 불구하고 어떤 프로그램도 user hard nofile 0
.
면책 조항 : 나는 그것을 직접 사용해 본 적이 없습니다. (이런 뜻입니다 pam
. 신뢰할 수 없는 전용 사용자를 만드는 것은 나쁜 것이 아닙니다.)