대상 OS: Rocky Linux 9
서버가 죽었을 때 남는 코어 덤프는 디버깅에 도움되지만, 보안 관점에선 ‘메모리 스냅샷 유출’이기도 합니다.
프로세스 메모리에는 토큰, API 키, 세션 쿠키, DB 비밀번호, TLS 키 소재까지 섞여 있을 수 있습니다.
공격자는 굳이 루트킷을 심지 않아도, 덤프 파일 하나만 얻으면 데이터 탈취를 끝낼 수 있습니다.
게다가 코어 덤프는 종종 월권한/디렉터리 권한 실수로 읽기 가능한 곳에 떨어집니다.
이 글에서는 Rocky Linux 9에서 systemd-coredump와 커널 파라미터, ulimit를 조합해 “코어 덤프를 아예 끄거나(권장), 필요한 경우에도 최소한으로만 남기기”를 운영 관점에서 정리합니다.
---
코어 덤프가 위험해지는 대표 상황
1) 웹/배치 앱이 환경변수로 시크릿을 들고 있는 경우
2) 자바/파이썬/노드처럼 런타임이 커서 메모리에 민감 정보가 넓게 퍼지는 경우
3) 덤프가 /var/lib/systemd/coredump 또는 작업 디렉터리에 남고, 백업/로그 수집에 같이 실려 나가는 경우
4) SUID/SGID 바이너리 크래시로 권한 경계가 꼬이는 경우
덤프는 “발생 자체”가 사고의 증거이기도 하고, “내용”이 또 다른 유출 벡터가 됩니다.
---
1) 현재 상태 스냅샷(변경 전 확인)
1) 코어 덤프 관련 커널 설정 확인
sysctl kernel.core_pattern kernel.core_uses_pid fs.suid_dumpable
2) systemd-coredump 사용 여부/설정 확인
systemctl status systemd-coredump.socket --no-pager || true
systemctl status [email protected] --no-pager || true
rpm -q systemd
3) 현재 셸의 ulimit 확인
ulimit -a
ulimit -c
4) 전역 제한(로그인 세션/서비스)에 적용되는 limits 확인
grep -R "^[[:space:]]*\*\|^[[:space:]]*root" -n /etc/security/limits.conf /etc/security/limits.d 2>/dev/null | head -n 60
---
2) 가장 안전한 선택: 코어 덤프 ‘비활성화’(운영 기본값 추천)
코어 덤프가 꼭 필요한 개발/스테이징이 아니라면, 운영 서버에서는 기본적으로 끄는 편이 안전합니다.
1) 전역 ulimit로 코어 덤프 0 설정
sudo tee /etc/security/limits.d/90-coredump.conf >/dev/null