시나리오
- 오래된 버전의 관리 툴의 보안 이슈를 이용해 해커에 노출되어, 포크 폭탄 공격을 받게 됨.
- 포크 폭탄 : 프로세스가 지속적으로 자신을 복제함으로써 이용 가능한 시스템 자원을 고갈시키고 시스템 속도를 떨어뜨려 결국엔 기아 상태로 인한 시스템 충돌을 일으키는 서비스 거부 공격
cgroup의 pids로 이동
cd /sys/fs/cgroup/pids/
컨트롤 그룹 만들기
mkdir police
police 그룹을 만들고 들어가보면 PID 제어와 관련된 다양한 속성들이 있다.
기본값을 확인하면 제한이 없다.
max로 되어 있는 상태.
시스템이 허용하는 최대 범위로 프로세스를 생성할 수 있다.
cat pids.max
max로 되어 있는 것을 5로 바꿔서 제한을 걸어준다.
echo 5 > pids.max
fork bomb 실행
이거 지금 실행하면 fork bomb 맞은 상태가 됨. cgroup 설정을 안했기 때문
서버 콘솔 가서 재부팅해야 함. 재부팅으로 안되면 정지 후 재시작 해야 함.
:(){ :|:& };:
재부팅과 정지, 재시작의 차이
재부팅은 호스트 머신은 그대로 있고, 가상 머신만 재부팅 됨.
정지, 재시작은 해당 물리적인 호스트 머신 위에서 가상 머신이 중단이 되고 반드시 다른 물리 호스트를 찾아서 그 호스트에 가상 머신이 설치가 됨.
재부팅하니까 아까 만든 police가 사라져있다.
다시 police 만들고, max를 20으로 변경
mkdir police
cd police
echo 20 > pids.max
현재 프로세스를 tasks에 등록
echo $$ > tasks
fork bomb이 제대로 안만들어져서 max를 20개로 변경한 후 한다.
cgroup 설정을 했기 때문에 fork bomb을 실행해도 전체 cpu가 죽지 않는다.
:(){ :|:& };:
실행중인 프로세스 확인
ps aux
grep으로 특정 프로세스 확인하기
ps aux | grep "0:00 bash" | wc -l
원래 이렇게하면 20개가 떠야 하는데 2개 밖에 안뜬다.
뭐가 뭔지 잘 모르겠음.
정리하면 fork bomb을 실행하면 프로세스가 엄청 많이 떠서 전체 프로세스가 죽어야 하는데 pids.max를 제한함으로써 프로세스가 무한히 실행되는 것을 막는 것 같다.
메인 워크로드가 아닌 경우 어플리케이션 관리형으로 쓰이는 설치하는 많은 어플리케이션이 존재하고 이럴 경우 PID나 메모리, CPU 등 제한을 걸어서 안정적인 운영 환경을 만들 수 있다.
'배운 내용 > 리눅스: 클라우드 환경 운영부터 성능분석까지' 카테고리의 다른 글
11월24일 - (실습) namespace - Mount 네임스페이스 (0) | 2023.11.24 |
---|---|
11월24일 - 내용 (0) | 2023.11.24 |
11월23일 - (실습) cgroup으로 Anti Virus 앱 CPU 사용량 제한하기 (0) | 2023.11.23 |
11월22일 내용 (0) | 2023.11.22 |
11월21일 내용 정리 (1) | 2023.11.21 |