포크 폭탄을 방지하는 방법?


14

포크 폭탄을 방지하기 위해 나는 이것을 http://www.linuxhowtos.org/Tips%20and%20Tricks/ulimit.htm에 따랐다 .

ulimit -a새 설정을 반영하지만 난 (로 실행할 때 rootbash) :(){ :|:&};:는 VM은 여전히 최대의 CPU +의 RAM 및 동결 시스템에 간다.

포크 폭탄을 사용하거나 버그가있는 응용 프로그램을 실행하여 사용자가 시스템을 중단시키지 못하게하는 방법은 무엇입니까?

운영체제 : RHEL 6.4


여기서 재현 할 수 없습니다. root우연히 그렇게 노력하고 있습니까? 어느 쉘에서 시도하고 있습니까? (뒤에 누락 된 공간이 {암시 zsh하지만 거기에서도 재현 할 수 없습니다).
Stéphane Chazelas

Stephane Chazelas : 1] 루트로 실행 중이었고 일반 사용자와 함께 사용해 보았습니다. 2] 빠진 공간은 오타입니다. 나는 bash를 사용하고 있습니다. 죄송합니다. 3] ulimit가 'root'사용자를 평가할 수 없습니까?
user44441

@ stephane-chazelas 1] 루트로 실행 중이며 일반 사용자와 함께 시도했습니다. 2] 빠진 공간은 오타입니다. 나는 bash를 사용하고 있습니다. 죄송합니다. 3] ulimit가 'root'사용자를 평가할 수 없습니까?
user44441

답변:


8

수퍼 유저 또는 CAP_SYS_ADMIN 또는 CAP_SYS_RESOURCE 기능이있는 프로세스는 이러한 제한의 영향을받지 않으며 변경할 수있는 것이 아닙니다. root항상 프로세스를 포크 할 수 있습니다.

일부 소프트웨어를 신뢰할 수없는 경우 root어쨌든 실행되지 않아야 합니다.


3
그것이 특별한 것을하지 않으면 어쨌든 루트로 실행되는 것은 거의 없습니다. root는 어떤 권한 / 권한을 파악하는 데 지치거나 기본적인 시스템 서비스를 찾는 데 지칠 때 사용하는 계정입니다.
Bratchley

11

이 변경 사항을 광범위하게 적용하려면 전체 환경에 이러한 제한을 추가해야합니다. ulimit명령을 사용하여 변경 하면 현재 환경에만 적용됩니다.

참고 : 이것은 루트 사용자에게 영향을 미치지 않습니다!

이 파일을 편집하고 파일 vi /etc/security/limits.conf에 항목을 추가 nproc하여 특정 사용자 또는 사용자 그룹이 가질 수있는 프로세스 수 ( )를 제한하십시오 .

vivek hard nproc 300
@student hard nproc 50
@faculty soft nproc 100
@pusers hard nproc 200

참고 : 해당 파일에 더 많은 예가 있습니다. "all"(일명. *)을 사용하면 시스템 계정도 제한됩니다.

참고 문헌


"모두"는 시스템 계정을 제한하지만 해당 시스템 계정으로 실행되는 대부분의 서비스는 통과하지 않습니다 pam_limits.
jordanm

ulimit가 '루트'사용자를 평가할 수 없습니까?
user44441

게시물에 더 많은 것을 추가하는 일반적인 아이디어와 마찬가지로 OP 플랫폼이 지원하기 때문에 pam_cgroup 에 대해 뭔가를 추가하고 싶을 pam_limits때 cgroup이 더 널리 채택되면 대체 될 것입니다.
Bratchley

또한 OP가 리소스 사용 정책을 사용하고있는 것처럼 들리므로 cgroups네트워크 및 CPU 사용률을 향상시킬 수 있습니다.
Bratchley
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.