시스템 보안 · 취약점 › B. 계정 · 인증 보안 강화 · 22/50편 (전체 072/450)
학습 단계: 2단계 · 설정 및 점검
실습 표기: 이 글의 명령어·출력·로그는 로컬 VMware 테스트 VM(Rocky Linux 9 / Ubuntu 22.04) 기준의 「실습 예시」이며, IP·계정·호스트명은 가상의 값입니다.
brute-force는 한 계정에 여러 비밀번호를 빠르게 시도하는 공격입니다. 열거(071편)로 찾은 실존 계정이 표적이 됩니다. 탐지 핵심은 "정상적인 실패"와 구분하는 임계값입니다.
판별 축
빈도 : 짧은 시간(예: 1분)에 실패 N회 이상
간격 : 기계적으로 일정(사람은 불규칙) → 자동화
출발지 : 단일 IP 집중 / 여러 IP 분산(분산형)
대상 : 한 계정 집중(brute-force) vs 여러 계정(스프레이, 073편)
결과 : 실패만 / 실패 후 성공(돌파)
사람의 오타: 수 회, 불규칙 간격, 업무 시간, 관리망, 결국 성공 또는 포기
| 지표 | 명령 |
|---|---|
| 계정별 실패 수 | sudo grep 'Failed password for' /var/log/secure | grep -oE 'for [^ ]+' | sort | uniq -c | sort -rn |
| 출발지별 실패 수 | ... | grep -oE 'from [0-9.]+' | sort | uniq -c | sort -rn |
| 분당 실패 빈도 | ... | awk '{print $1,$2,$3}' | cut -d: -f1,2 | uniq -c |
| 실패→성공 연결 | 같은 계정·출발지의 Failed 다음 Accepted |
| 느린 공격 | 긴 시간 창에서 일정 간격 실패 |
LOG=/var/log/secure # Ubuntu: /var/log/auth.log
# 1) 계정×출발지별 실패 집계 (집중 대상 식별)
sudo grep 'Failed password for' $LOG | sed -E 's/.*for (invalid user )?([^ ]+) from ([0-9.]+).*/\3 \2/' | sort | uniq -c | sort -rn | head
# 2) 분당 실패 추이 (급증 구간)
sudo grep 'Failed password' $LOG | awk '{print $1,$2,substr($3,1,5)}' | uniq -c | sort -rn | head
# 3) 실패 후 성공 (돌파 여부) — 계정·출발지 기준
sudo grep -E 'Failed password for devops from 192.168.56.77|Accepted .* for devops from 192.168.56.77' $LOG | tail
3 192.168.56.5 admin1
$ (분당) 1 Oct 2 09:15
특정 계정에 수 회, 관리망 출발지, 분산된 시각 → 사용자 오타 수준으로 정상 범위입니다.
220 192.168.56.77 devops
18 192.168.56.77 admin1
$ (분당) 95 Oct 2 02:10
88 Oct 2 02:11
$ (실패→성공)
02:10:41 Failed password for devops from 192.168.56.77
02:10:44 Accepted password for devops from 192.168.56.77
devops에 분당 90여 회 실패 집중 → 기계적 brute-forcebrute-force의 빈도와 돌파를 함께 본 예시입니다(가상의 예시 로그 집계).
devops @ 192.168.56.77
02:10:00 ~ 02:10:59 실패 95
02:11:00 ~ 02:11:44 실패 88, 02:10:44 성공 1
간격: 약 0.6초 균일 → 자동화 도구
결론: brute-force 성공(돌파) → 탈취 세션 ses=12 로 이후 행위 추적
| 지표 | 판정 |
|---|---|
| 분당 ~90회, 균일 간격 | 자동화 |
| 단일 출발지, 새벽 | 공격 |
| 실패 후 성공 | 돌파 → Incident |
<group name="local,syssec_b,authentication,">
<!-- Wazuh 기본 5712(SSHD brute force)를 보완: 돌파(실패 후 성공) 상관 -->
<rule id="101200" level="13">
<if_sid>5715</if_sid>
<if_matched_sid>5712</if_matched_sid>
<same_source_ip />
<same_user />
<description>brute-force 이후 동일 계정·출발지 로그인 성공(돌파)</description>
</rule>
</group>
5712는 Wazuh의 brute-force 룰입니다. 위 룰은 "brute-force가 관측된 출발지·계정에서 성공이 발생"을 잡는 상관 예시이며, same_* 동작은 wazuh-logtest로 검증합니다.
| 축 | 내용 |
|---|---|
| 빈도 | 짧은 시간 실패 급증 |
| 간격 | 균일(자동화) vs 불규칙(사람) |
| 출발지·대상 | 단일 IP → 단일 계정 집중 |
| 결과 | 실패만 vs 실패 후 성공(돌파) |
| 면접 포인트 | "실패 1000건보다 실패 후 성공 1건이 중요하다" |
다음 편 073. 계정 · 인증 보안 — password spraying 징후 분석 에서는 여러 계정에 소수 비밀번호를 뿌리는 password spraying 징후 분석을 다룹니다.
이전 편: 071. 계정 · 인증 보안 — invalid user와 계정 열거 시도 판별
📚 시리즈 전체 보기: 시스템 보안 · 취약점