시스템 보안 · 취약점 › E. 중요 정보 접근 로그 분석 · 24/50편 (전체 224/450)
학습 단계: DB·대량 데이터 접근 이상
실습 표기: 이 글의 명령어·출력·로그는 로컬 VMware 테스트 VM(Rocky Linux 9 / Ubuntu 22.04) 기준의 「실습 예시」이며, IP·계정·호스트명은 가상의 값입니다.
DB에서도 민감 테이블·컬럼이 특히 고가치입니다. 개인정보(users·members)·결제(payments·cards)·인증(credentials) 테이블과 주민번호·카드번호·비밀번호 컬럼 접근을 집중 탐지합니다.
민감 테이블·컬럼 접근 위험
테이블: users, members, payments, cards, credentials
컬럼: ssn(주민번호), card_no, password, api_token
패턴: SELECT * FROM payments (전체)
SELECT ssn, card_no FROM users (민감 컬럼 선별)
COUNT(*) 후 전체 조회 (규모 파악→추출)
법적 의미: 개인정보·결제정보는 유출 시 법적 책임(GDPR·개인정보보호법)
민감 테이블·컬럼은 법적으로도 보호 대상(개인정보보호법)이라, 접근 탐지가 컴플라이언스와 직결됩니다.
| 접근 패턴 | 데이터 | 위험 |
|---|---|---|
SELECT * payments | 전체 결제 | 매우 높음 |
SELECT ssn,card_no | 민감 컬럼 | 매우 높음 |
SELECT password | 자격증명 | 매우 높음 |
| 전체 users 조회 | 개인정보 | 높음 |
| 필요 행·컬럼만 | 정상 앱 | 정상 |
# 민감 테이블·컬럼 접근 탐지 (분석 방법)
# 민감 컬럼 선별 조회(DB 로그, 분석용)
sudo grep -iE 'SELECT .*(ssn|card_no|password|passwd|api_token|rrn)' /var/log/mysql/*.log 2>/dev/null | tail
# 민감 테이블 전체 조회
sudo grep -iE 'SELECT \* FROM (payments|cards|credentials|members)' /var/log/mysql/*.log 2>/dev/null | tail
$ (민감 컬럼 조회) 앱의 정상 범위(단건·WHERE 조건) 쿼리만
$ (민감 테이블 전체) (없음)
민감 테이블·컬럼 조회가 앱의 정상 범위(조건절·단건)에 그치고, 전체·민감 컬럼 선별 조회가 없는 상태가 정상입니다.
$ (민감 컬럼 조회)
SELECT ssn, card_no, password FROM users (민감 컬럼 전체)
$ (민감 테이블 전체)
SELECT * FROM payments (전체 결제 데이터)
민감 테이블·컬럼 접근 흐름입니다(가상의 예시).
[규모 파악] SELECT COUNT(*) FROM users (전체 규모 확인)
↓
[민감 추출] SELECT ssn, card_no FROM users (WHERE 없음)
↓
[파일화] INTO OUTFILE (E23) 또는 결과 저장
↓
[유출] 외부 전송(E32)
| 단계 | 신호 |
|---|---|
| 규모 파악 | COUNT(*) |
| 추출 | 민감 컬럼·전체 |
| 파일화 | OUTFILE |
| 유출 | 전송 |
COUNT로 규모 파악 후 전체 추출은 전형적 유출 패턴입니다.
<!-- 실습 예시 룰: 적용 전 wazuh-logtest 및 테스트 환경 검증 필요 -->
<group name="local,syssec_e,data_access,">
<rule id="104230" level="13">
<decoded_as>mysql_log</decoded_as>
<field name="query" type="pcre2">SELECT\s+.*(ssn|rrn|card_no|card_number|password|passwd|api_token).*FROM|SELECT\s+\*\s+FROM\s+(payments|cards|credentials)</field>
<description>민감 테이블·컬럼 조회(개인정보·결제 추출)</description>
<mitre><id>T1005</id></mitre>
</rule>
</group>
민감 테이블·컬럼 목록은 데이터 분류(E02)에 맞춰 정의합니다. 정상 앱 쿼리 패턴은 예외로 등록합니다.
| 접근 패턴 | 데이터 |
|---|---|
| SELECT * payments | 전체 결제 |
| SELECT ssn,card_no | 민감 컬럼 |
| SELECT password | 자격증명 |
| 필요 행·컬럼만 | 정상 |
| 면접 포인트 | "민감 테이블·컬럼 유출은 법적 책임 — 전체·민감 컬럼 조회가 핵심 신호" |
다음 편 225. 중요 정보 접근 — 대용량 데이터 수집(staging) 탐지 에서는 대용량 데이터 수집을 다루는 대용량 데이터 수집(staging) 탐지를 다룹니다.
이전 편: 223. 중요 정보 접근 — 쿼리·DB 로그를 통한 접근 분석
📚 시리즈 전체 보기: 시스템 보안 · 취약점