보안 모니터링 오탐 알림이 5분마다 울릴 때: 해시 갱신 누락 문제 해결기
문제 상황
홈서버에서 텔레그램으로 .bashrc 변경 알람이 5분마다 반복해서 날아오기 시작했습니다. 서버에 모네로 채굴 악성코드가 침투했던 전력이 있는 만큼(2026년 1~2월 3차례 감염), 이런 알림은 무시할 수 없는 상황이었습니다.
원인 분석
1단계: 실제 위협 여부 확인
Claude Code를 활용해 보안 점검을 자동화했습니다. 확인 항목은 다음과 같습니다:
| 점검 항목 | 결과 |
|---|---|
.bashrc 내 악성 코드 | 없음 |
| 의심 프로세스 (마이너 등) | 없음 |
숨김 폴더 (/dev/shm/.x, /tmp/.x) | 없음 |
.profile 해시 검증 | 일치 |
| 접속 IP | 모두 정상 ( IP 또는 tmux) |
| crontab 이상 항목 | 없음 |
결론: 오탐(False Positive) 이었습니다.
2단계: 반복 알림의 근본 원인
보안 모니터 스크립트가 5분 간격 cron으로 실행되면서 .bashrc의 파일 해시를 기준값과 비교하고 있었습니다. 문제는 해시 불일치를 감지한 후 알림만 보내고 기준 해시를 갱신하지 않는 구조였다는 점입니다.
bash
문제가 된 로직 (의사 코드)
current_hash=$(sha256sum ~/.bashrc) if [ "$current_hash" != "$saved_hash" ]; then send_telegram_alert "bashrc 변경 감지!" # 여기서 saved_hash 갱신이 빠져 있음 fi
정상적인 수정(환경 설정 변경 등)이 발생해도 해시가 갱신되지 않으니, 매 실행마다 동일한 알림이 무한 반복됩니다.
3단계: auditd 로그 공백 발견
auditd가 실행 중이었지만 .bashrc 변경에 대한 로그가 비어 있었습니다. 서버 재부팅(2월 3일) 이후 auditd 규칙이 초기화되었을 가능성이 높으며, 규칙이 영구 적용되도록 설정이 필요했습니다.
해결 방법
- 즉시 조치: 관리자 확인 후
.bashrc기준 해시를 현재 값으로 갱신 - 구조 개선: 알림 발송 후 해시 갱신 또는 확인 플래그 추가
- auditd 규칙 영구화:
/etc/audit/rules.d/에 규칙 파일 작성하여 재부팅 후에도 유지
핵심 정리
보안 모니터링 스크립트를 운영할 때 체크리스트입니다:
- 알림 후 상태 갱신: 변경 감지 → 알림 → 기준값 갱신(또는 확인 대기) 흐름이 완결되어야 합니다
- 알림 중복 방지: 동일 이벤트에 대한 반복 알림을 억제하는 로직(쿨다운, 확인 플래그)이 필요합니다
- 재부팅 후 상태 확인: auditd 규칙, cron 작업, 서비스 상태가 재부팅 이후에도 유지되는지 검증해야 합니다
- 오탐 처리 프로세스: 과거 실제 침해 이력이 있는 서버일수록 오탐 판별 기준을 명확히 문서화해 두는 것이 중요합니다
Claude Code를 활용하면 여러 로그와 파일을 동시에 점검하여 위협 여부를 빠르게 판별할 수 있습니다. 보안 알림이 올 때마다 일일이 수동 점검하는 대신, AI에게 체계적인 점검 항목을 넘겨 자동화하는 것이 효율적입니다.