2012-05-13 3 views
1

나는 우분투 12.04에서 컴퓨팅 서비스를 호스팅하고 있으며 사용자가 포위 공격을 막을 수있는 방법이 필요합니다. 현재 리눅스에서는 setrlimit(RLIMIT_NPROC)을 사용하고 있습니다. 그러나 이는 실제로 주어진 UID에 대한 프로세스의 수에 대한 전역 한계를 설정합니다. 내 서비스에는 동일한 UID로 실행되는 많은 병렬 작업이 있기 때문에 하나의 프로세스가 DOS 전체 서비스를 수행 할 수 있습니다.포크/자식 procs의 수 제한

대신에 예를 들어 제한을 설정하는 방법을 찾고 있습니다. 현재 프로세스에 대한 자식 procs의 재귀 번호. 나는 리눅스를 들여다 보라고 들었다. cgroups/libcgroup 그러나 솔직히 이것이 내 문제를 어떻게 해결할 수 있는지 이해하지 못한다. 어떤 팁?

답변

1

포크 폭탄을 예방 (읽기 : 완화)하는 유일한 방법은 RLIMIT_NPROC를 설정하는 것입니다. 아마도 사용자 ID가 "지금까지 분기 된 프로세스"호출을 첨부 할 수있는 유일한 실제 장소이기 때문일 수 있습니다.

제안 : 귀하의 서비스를 여러 uid로 실행하고 각 서비스 호출을 선택하십시오. 그런 다음 포크 폭격을 통한 DOS에 대한 불량 클라이언트의 기능은 사용 된 UID의 수에 비례하여 제한됩니다.

서비스의 최상위 프로세스가 루트로 실행되지 않는 한 일반적으로 SUID 도우미 프로그램이 필요합니다. 일반적으로 나쁜 생각으로 간주됩니다.