← 전체 목록
서버백업운영

Nginx 로그 분석으로 해킹 시도를 조기에 탐지합니다

ℹ️ 본 글은 정보 제공 목적이며, 광고·제휴 링크가 포함될 수 있습니다.

Nginx 액세스 로그 해킹 흔적 분석은 서버 관리자의 핵심 루틴입니다. 제가 주기적으로 로그를 보지 않았다면, 한 병원 사이트의 특정 API 엔드포인트를 향한 수상한 요청 패턴을 놓쳤을 것입니다. 로그는 서버에서 일어나는 모든 일의 기록입니다. 공격이 성공하기 전에 시도 단계에서 탐지하고 차단할 수 있는 가장 중요한 정보 소스입니다.

로그 위치와 기본 확인

# 기본 액세스 로그 위치
/var/log/nginx/access.log
/var/log/nginx/error.log

# 실시간 확인
sudo tail -f /var/log/nginx/access.log

# 최근 100줄 확인
sudo tail -100 /var/log/nginx/access.log

로그 한 줄의 구성:

IP주소 - - [날짜시간] "요청" 상태코드 바이트수 "리퍼러" "유저에이전트"

해킹 흔적 찾는 패턴 분석

1. wp-login.php 무차별 대입

grep "wp-login.php" /var/log/nginx/access.log | grep "POST" | awk '{print $1}' | sort | uniq -c | sort -rn | head -20

같은 IP에서 POST 요청이 수백 번 반복된다면 브루트포스입니다.

2. 스캐너/봇 탐지

grep -E "(sqlmap|nikto|nmap|masscan|zgrab|python-requests)" /var/log/nginx/access.log

자동화 취약점 스캐너 이름이 유저에이전트에 들어 있는 경우입니다.

3. 404 폭탄 (파일 스캔)

grep " 404 " /var/log/nginx/access.log | awk '{print $1}' | sort | uniq -c | sort -rn | head -10

같은 IP에서 404가 수백 건이면 숨겨진 파일이나 취약한 URL을 찾는 스캔입니다.

4. SQL 인젝션 시도

grep -E "(union.*select|drop.*table|insert.*into|exec\(|script>)" /var/log/nginx/access.log -i

자동 분석 스크립트

매일 아침 로그 요약을 이메일로 받는 간단한 스크립트입니다.

#!/bin/bash
# /etc/cron.daily/nginx-log-summary

LOG=/var/log/nginx/access.log
echo "=== Nginx 로그 요약 $(date) ==="
echo "상위 10 IP:"
awk '{print $1}' $LOG | sort | uniq -c | sort -rn | head -10
echo ""
echo "404 상위 5 IP:"
grep " 404 " $LOG | awk '{print $1}' | sort | uniq -c | sort -rn | head -5

로그를 주기적으로 들여다보는 습관이 있으면, 사고가 나기 전에 징후를 잡을 수 있습니다.

편집 정책

AI가 초안을 생성하고, 의료기관 인프라 운영자가 1차 데이터 기반으로 최종 검수·승인합니다.

작성·검수: WavePix 운영자 (의료기관 3곳 인프라 전담)