페이지 목차
이 페이지에서 검색
EIS
이 페이지에 묻기
EIS · 현재 차시와 목차 본문에서만 찾아 답합니다. 답을 지어내지 않고 해당하는 대목을 그대로 보여 주며, 여기에 없으면 없다고 알려 드립니다.
생성형 AI가 아니라 이 페이지 본문을 찾아 그대로 보여 주는 방식입니다. 외부로 나가는 요청이 없습니다.
EIS · SECURITY
EIS
생성 수정
정보보안기사의 시스템·네트워크·애플리케이션 보안과 암호·관리·실기 내용을 개념의 경계와 실습으로 연결합니다.
29개 문서 · 1 · 시스템보안 · 3 / 29
02 · 시스템 정보와 로그
지도 위치 : 1과목 · README 4장의 ③ 영역(시스템) — 시스템이 누구를 들여보냈고 무엇을 했는지 남기는 곳. ④ 운영(로그 분석 · 포렌식)으로 이어지는 다리 | 출제기준: 1. 정보 시스템의 범위 및 이해 > 3. 시스템 정보 | 이전: 01 단말 · 서버 시스템과 운영체제 | 다음: 03 시스템 보안위협과 공격기법 출제 빈도 : ⭐⭐ (회당 약 2.9문항 — 출제분석.md) · 변화 – (이전 3.1 → 현행 2.6) 세세항목 : 시스템 환경정보, 인증정보, 시스템/감사 로그
이 노트를 다 읽으면
/etc/passwd와/etc/shadow의 필드를 순서대로 말하고, UID 0 계정과 잠긴 계정을 알아볼 수 있다.- 패스워드 해시 표기(
$6$등)와 솔트 가 무엇을 막는지 앞에서 배운 해시(20번 노트)와 연결해 설명할 수 있다. - 윈도우 인증의 SAM · LSA · SRM 이 각각 무엇을 하는지, SID의 RID 500이 무엇인지 말할 수 있다.
- 리눅스 로그 utmp · wtmp · btmp · lastlog · pacct 를 "무엇을 기록하나 + 무엇으로 보나"로 짝지을 수 있다.
- syslog 설정 한 줄(
authpriv.* /var/log/secure)을 해석할 수 있다. - 윈도우 이벤트 로그 세 종류, 주요 이벤트 ID, 감사 정책 9개 항목 을 구별할 수 있다.
0. 이 노트의 판별 축
| # | 축 | 왼쪽 (0) | 오른쪽 (1) | 이 축으로 갈리는 것 | 큰 축 (README 5장) |
|---|---|---|---|---|---|
| 1 | 지금인가 지금까지인가 | 현재 상태 | 누적 이력 | utmp(who) ↔ wtmp(last) | 이 노트의 축 |
| 2 | 성공인가 실패인가 | 성공한 로그인 | 실패한 로그인 | wtmp(last) ↔ btmp(lastb), 이벤트 4624 ↔ 4625 | 이 노트의 축 |
| 3 | 사람이 바로 읽을 수 있는가 | 텍스트 로그 (cat · grep) | 바이너리 로그 (전용 명령 필요) | secure · messages ↔ utmp · wtmp · btmp · lastlog | 이 노트의 축 |
| 4 | 신원을 묻는가, 권한을 묻는가 | 인증 — 누구인가 | 인가 — 무엇을 해도 되나 | SAM · LSA · PAM auth ↔ SRM · PAM account | ⑥ 인증 ↔ 인가 |
| 5 | 언제 작동하는가 | 사전 (막기) | 사후 (기록 · 추적) | 패스워드 정책 ↔ 감사 정책 · 로그 | ④ 예방 ↔ 탐지 · 대응 |
| 6 | 전원을 끄면 사라지는가 | 휘발성 (메모리 · 프로세스 · 네트워크 연결) | 비휘발성 (디스크의 로그 · 파일) | 메모리 덤프 ↔ 이벤트 로그 | 이 노트의 축 |
이 노트의 질문은 "시스템은 누가 들어왔는지 어떻게 알고, 그 흔적을 어디에 남기는가" 입니다. 앞에서 배운 인증(17번 노트)이 "누구인지 확인하는 원리"였다면, 여기는 그 원리가 리눅스 · 윈도우의 실제 파일과 프로세스 로 어떻게 구현되는지입니다. 앞 노트(01번)의 퍼미션이 이 파일들을 지키고, 다음 노트(03번)의 공격자는 이 로그를 지우려 합니다.
1. 시스템 정보의 지도
| 종류 | 무엇 | 리눅스 | 윈도우 |
|---|---|---|---|
| 환경정보 | 운영체제 · 설정 · 부팅 · 실행 환경 | /etc/*, uname -a, /proc | 레지스트리, systeminfo |
| 인증정보 | 계정과 패스워드(해시) | /etc/passwd · /etc/shadow · /etc/group | SAM (레지스트리 하이브) |
| 시스템 · 감사 로그 | 누가, 언제, 무엇을 | /var/log/*, utmp · wtmp · btmp | 이벤트 로그(응용 · 보안 · 시스템) |
로그 — [기록]인데, [ 사건이 일어난 뒤에 누가 무엇을 했는지 추적하게 해 준다 ]는 점에서 일어나기 전에 막는 접근통제와 구별된다(축 5). 로그가 보장하는 성질을 책임추적성 (Accountability)이라고 합니다.
응용 로그 ↔ 시스템 로그 : 시스템 로그는 운영체제 · syslog가 남기는 것(/var/log/messages, 윈도우 시스템 로그), 응용 로그는 프로그램이 직접 남기는 것(웹 서버 접근 로그, DB 로그, 윈도우 응용 프로그램 로그)입니다.
2. 리눅스 계정 · 인증 정보
2.1 /etc/passwd — 7개 필드
root:x:0:0:root:/root:/bin/bash
kim:x:1001:1001:Kim CS:/home/kim:/bin/bash
backdoor:x:0:0::/tmp:/bin/sh ← ⚠️ UID 0
daemon:x:2:2:daemon:/sbin:/sbin/nologin
① ② ③ ④ ⑤ ⑥ ⑦
| # | 필드 | 뜻 |
|---|---|---|
| ① | 계정명 | 로그인 이름 |
| ② | 패스워드 | x = 실제 해시는 /etc/shadow에 있음 |
| ③ | UID | 사용자 번호. 0 = root (이름이 아니라 번호가 권한을 정함) |
| ④ | GID | 기본 그룹 번호 |
| ⑤ | 설명(GECOS) | 이름 · 연락처 등 |
| ⑥ | 홈 디렉터리 | 로그인 후 위치 |
| ⑦ | 로그인 셸 | /sbin/nologin · /bin/false = 로그인 불가 (시스템 계정) |
🔍 읽는 포인트 : 세 번째 필드가 0 인 계정은 이름이 무엇이든 root와 같은 권한 입니다. 위 예의 backdoor가 침해 흔적입니다. 점검 명령은 awk -F: '$3==0 {print $1}' /etc/passwd.
⚠️ /etc/passwd는 모든 사용자가 읽어야 하는 파일(사용자 이름 ↔ UID 변환)이라 644입니다. 그래서 옛날처럼 해시를 여기에 두면 누구나 해시를 가져가 크래킹할 수 있었고, 해시를 root만 읽는 /etc/shadow로 옮겼습니다.
2.2 /etc/shadow — 9개 필드
kim:$6$Xy7pQ...$Lk2v...:19650:1:90:7:30::
① ② ③ ④ ⑤ ⑥ ⑦ ⑧ ⑨
| # | 필드 | 위 예의 값 |
|---|---|---|
| ① | 계정명 | kim |
| ② | 암호화된(해시) 패스워드 | $6$솔트$해시. ! · *로 시작하면 잠김 · 로그인 불가 |
| ③ | 마지막 변경일 | 1970-01-01부터의 일수 |
| ④ | 최소 사용 기간 | 1일 지나야 다시 바꿀 수 있음 |
| ⑤ | 최대 사용 기간 | 90일 뒤 변경해야 함 |
| ⑥ | 경고 기간 | 만료 7일 전부터 경고 |
| ⑦ | 비활성 기간 | 만료 후 30일 지나면 계정 비활성 |
| ⑧ | 계정 만료일 | 비어 있으면 없음 |
| ⑨ | 예약 | — |
| 해시 표기 | 알고리즘 |
|---|---|
$1$ | MD5 (구형, 쓰지 않음) |
$5$ | SHA-256 |
$6$ | SHA-512 — 오랫동안 주요 배포판의 기본값 |
$y$ | yescrypt — 최근 Debian · Fedora · Arch 등의 기본값 |
$2b$ | bcrypt |
솔트 (Salt) — [패스워드 저장 기법]인데, [ 사용자마다 다른 난수를 섞어 해시해, 같은 패스워드도 다른 해시가 되게 한다 ]는 점에서 해시를 여러 번 반복해 계산을 느리게 하는 키 스트레칭과 구별된다. 앞에서 배운 해시의 일방향성(20번 노트)만으로는 미리 계산해 둔 표(레인보우 테이블) 를 막지 못합니다. 솔트가 붙으면 그 표가 쓸모없어집니다(03번 노트).
📝 기출 포인트 —
/etc/passwd의 필드 구조(특히 세 번째 = UID , UID 0 점검)가 최근 3년 연속 나왔습니다. shadow는 "담긴 정보의 범위", 해시 알고리즘(SHA-512), 솔트의 목적이 반복됩니다.
2.3 PAM — 인증을 모듈로 갈아 끼우기
PAM (Pluggable Authentication Modules) — [인증 프레임워크]인데, [ 프로그램을 다시 컴파일하지 않고 설정 파일만 바꿔 인증 방식을 교체한다 ]는 점에서 프로그램 안에 인증 코드를 직접 넣는 방식과 구별된다.
# /etc/pam.d/sshd (예)
auth required pam_faillock.so ... # 실패 횟수 잠금
auth required pam_unix.so # /etc/shadow로 패스워드 확인
account required pam_nologin.so # /etc/nologin 있으면 일반 사용자 거부
password requisite pam_pwquality.so retry=3 # 패스워드 복잡도
session required pam_limits.so # 세션 자원 제한
🔍 읽는 포인트 : 첫 칸이 모듈 타입 , 둘째 칸이 제어 플래그 입니다.
| 모듈 타입 | 하는 일 | 축 4 |
|---|---|---|
| auth | 본인 확인(패스워드 · OTP) | 인증 |
| account | 계정이 지금 쓸 수 있는가(만료 · 접근 시간 · 접속 위치) | 인가 |
| password | 패스워드 변경 규칙(복잡도 · 재사용) | — |
| session | 로그인 전후 처리(로그 기록 · 자원 제한 · 홈 마운트) | — |
| 제어 플래그 | 실패하면 | 성공하면 |
|---|---|---|
| required | 최종 실패. 단 나머지 모듈은 계속 실행 (어디서 실패했는지 숨김) | 다음으로 |
| requisite | 즉시 실패 반환 | 다음으로 |
| sufficient | 무시하고 다음으로 | 앞의 required가 실패하지 않았다면 즉시 성공 |
| optional | 다른 모듈 결과가 없을 때만 의미 | — |
앞으로 다시 만납니다 — 04번 노트에서 PAM으로 계정 잠금 (
deny·unlock_time)과 패스워드 복잡도 (minlen·dcredit등)를 설정합니다.
📝 기출 포인트 — PAM은 1과목 세 군데(운영체제 · 시스템 정보 · 대응기술)에 걸쳐 나옵니다. " 재컴파일 없이 인증 방식 변경", 모듈 타입 4개 중 아닌 것 , 처리 순서가 반복됩니다.
3. 윈도우 계정 · 인증 정보
3.1 SAM · LSA · SRM
[로그인 화면] → (winlogon) → LSA(lsass.exe) ──▶ SAM에서 계정 · 해시 비교
│ (도메인이면 DC에 Kerberos/NTLM 인증)
▼
인증 성공 → SID와 그룹 정보가 담긴 액세스 토큰
│
파일 접근 시 → SRM이 토큰의 SID와 파일의 ACL 비교 → 허용/거부 · 감사 기록
| 구성요소 | 하는 일 | 축 4 |
|---|---|---|
| SAM (Security Account Manager) | 로컬 사용자 · 그룹 계정과 패스워드 해시를 저장 하는 데이터베이스. 입력 값과 비교해 인증 | 인증 (저장소) |
| LSA (Local Security Authority) | 모든 로그인 검증 총괄, 보안 정책 관리, 계정 이름 ↔ SID 매칭 , 감사 로그 기록 | 인증 (관리자) |
| SRM (Security Reference Monitor) | 커널 모드 에서 객체 접근 요청마다 권한을 검사하고, 감사 메시지를 생성 | 인가 |
⚠️ 시험 교재는 흔히 "SAM이 인증 → SRM이 SID를 바탕으로 액세스 토큰 발급 "으로 설명합니다. Microsoft 문서상으로는 토큰을 만드는 것은 LSA이고 SRM은 접근 검사를 맡습니다. 보기에서 SAM · LSA · SRM의 핵심 역할 (저장 · 총괄/정책/감사기록 · 접근 검사)로 판단하세요.
| SAM 파일 | 내용 |
|---|---|
| 위치 | %SystemRoot%\System32\config\SAM (레지스트리 HKLM\SAM) |
| 특징 | 윈도우가 실행 중일 때 잠겨 있어 복사 · 열람 불가 |
| 접근 권한 | Administrators와 SYSTEM 만 — 그 외 그룹 권한이 있으면 취약 |
| 한계 | 로컬 계정만 . 도메인 계정은 도메인 컨트롤러(AD)가 인증 |
3.2 SID와 인증 프로토콜
S-1-5-21-3623811015-3361044348-30300820-500
│ │ │ └─ 컴퓨터(도메인) 고유 식별자 ─────────┘ └ RID
│ │ └ 식별자 권한(5 = NT Authority)
│ └ 버전
└ SID임을 표시
🔍 읽는 포인트 : 마지막 RID 가 계정을 가리킵니다. 500 = Administrator , 501 = Guest , 일반 사용자는 1000 이상 . 관리자 계정 이름을 바꿔도 RID 500은 그대로라 공격자는 SID로 관리자를 찾습니다.
| 인증 프로토콜 | 종차 |
|---|---|
| NTLM | 챌린지-응답 — 서버가 난수를 주면 패스워드 해시로 계산해 응답. 로컬 · 워크그룹 · 구형 호환 |
| Kerberos | 티켓 기반 — 도메인(AD) 환경의 기본. 앞에서 배운 Kerberos(17번 노트) |
📝 기출 포인트 — LSA · SAM · SRM 구분이 2018년부터 거의 매년 나옵니다("인증 구성요소가 아닌 것", "SID 매칭 · 감사 로그 = LSA"). SAM은 저장 위치와 접근 권한 (Administrators · SYSTEM), SID는 RID 필드 를 묻습니다.
4. 리눅스 로그
4.1 syslog — 텍스트 로그의 배달부
syslogd (rsyslogd) — [로그 데몬]인데, [ 여러 프로그램이 보낸 메시지를 종류(facility)와 심각도(priority)에 따라 정해진 파일로 나눠 기록한다 ]는 점에서 프로그램이 자기 파일에 직접 쓰는 응용 로그와 구별된다.
# /etc/rsyslog.conf (예전 /etc/syslog.conf)
# facility.priority action
*.info;mail.none;authpriv.none;cron.none /var/log/messages
authpriv.* /var/log/secure
mail.* -/var/log/maillog
cron.* /var/log/cron
*.emerg :omusrmsg:*
local7.* /var/log/boot.log
*.* @192.168.10.5 # 원격 로그 서버(UDP)
🔍 읽는 포인트 : authpriv.* = 인증 관련 모든 심각도 → secure. *.info = info 이상 (info · notice · warning · err · crit · alert · emerg). mail.none = 메일은 제외 . @는 원격 서버로 보냄(@@는 TCP).
| 심각도 (높음 → 낮음) | emerg · alert · crit · err · warning · notice · info · debug |
|---|---|
| 주요 facility | auth/ authpriv (인증) · kern(커널) · mail · cron · daemon · user · local0~7 |
4.2 텍스트 로그 — 바로 읽는 파일
| 파일 | 기록 내용 |
|---|---|
| /var/log/secure | 인증 · 원격접속 — ssh 로그인 성공/실패, su · sudo 사용, TCP Wrapper 접근 기록 (Debian 계열은 /var/log/auth.log) |
| /var/log/messages | 시스템 전반의 일반 메시지 (Debian 계열은 /var/log/syslog) |
| /var/log/maillog | 메일 송수신 |
| /var/log/cron | cron 작업 실행 |
| /var/log/boot.log · dmesg | 부팅 메시지, 커널이 하드웨어를 인식한 기록(dmesg 명령) |
| /var/log/xferlog | FTP 파일 업로드 · 다운로드 기록 (12번 노트에서 필드 해석) |
| sulog | su 명령 사용 기록 (솔라리스 /var/adm/sulog. 리눅스는 secure에 남음) |
~/.bash_history | 사용자가 친 셸 명령 이력 — 공격자가 가장 먼저 지우는 파일 |
4.3 바이너리 로그 — 전용 명령으로만 본다 ⭐
| 파일 | 기록 내용 | 확인 명령 | 축 |
|---|---|---|---|
utmp (/var/run/utmp) | 현재 로그인한 사용자 | who , w, users | 지금 |
wtmp (/var/log/wtmp) | 로그인 · 로그아웃 · 재부팅 누적 이력 | last | 지금까지 · 성공 |
btmp (/var/log/btmp) | 로그인 실패 이력 | lastb | 실패 |
lastlog (/var/log/lastlog) | 사용자별 마지막 로그인 시각 · 위치 | lastlog | 사용자별 1줄 |
pacct (/var/account/pacct 등) | 사용자가 실행한 명령 | lastcomm (accton으로 켜야 기록) | 프로세스 회계 |
$ last -5
kim pts/0 203.0.113.7 Mon Oct 13 22:10 still logged in
root pts/1 198.51.100.23 Mon Oct 13 03:12 - 03:40 (00:28)
reboot system boot 5.14.0 Mon Oct 13 00:01
$ lastb -3
root ssh:notty 198.51.100.23 Mon Oct 13 03:11 - 03:11 (00:00)
root ssh:notty 198.51.100.23 Mon Oct 13 03:11 - 03:11 (00:00)
admin ssh:notty 198.51.100.23 Mon Oct 13 03:10 - 03:10 (00:00)
🔍 읽는 포인트 : 같은 IP(198.51.100.23)가 btmp(lastb)에 연속 실패 를 남긴 직후 wtmp(last)에 root 로그인 성공 — 무차별 대입이 성공한 전형적 흔적입니다. 바이너리라서 cat으로는 깨진 글자만 보입니다.
💡 외우는 법 : u tmp = u p-to-now(지금), w tmp = w hole(전부), b tmp = b ad(실패).
4.4 로그 보존 — logrotate
# /etc/logrotate.conf
weekly # 매주 교체
rotate 4 # 4개까지 보관하고 오래된 것 삭제
create # 교체 후 빈 새 파일 생성
compress # 지난 로그 압축
include /etc/logrotate.d
🔍 읽는 포인트 : 로그가 디스크를 채우는 것(가용성)과 너무 빨리 지워지는 것(추적 불가) 사이의 균형입니다. 법적 보관 기간이 있는 접속기록은 24번 노트(개인정보 안전성 확보조치)에서 다룹니다. systemd 배포판은 journalctl로 저널 로그를 봅니다. 솔라리스의 감사 모듈은 BSM (Basic Security Module)입니다.
📝 기출 포인트 — 1과목 시스템 정보에서 가장 많이 나온 문제 입니다. wtmp(7회) · btmp(7회) · utmp(4회) · lastb(3회). "wtmp에 기록되지 않는 것 = 로그인 실패", "로그인 실패 확인 명령 = lastb", "파일 ↔ 내용 ↔ 명령 매칭" 세 유형이 돌아가며 나옵니다. xferlog(FTP)와 secure(TCP Wrapper 로그)도 단골입니다.
5. 윈도우 로그와 감사 정책
5.1 이벤트 로그
| 로그 | 기록 내용 |
|---|---|
| 응용 프로그램 | 프로그램이 남긴 이벤트 (DB · 백신 등) |
| 보안 | 로그온 성공 · 실패 , 개체 접근, 권한 사용 — 감사 정책을 켠 항목만 기록 |
| 시스템 | 드라이버 · 서비스 시작 실패, 시스템 구성요소 이벤트 |
| (설치 · 전달된 이벤트) | 설치 관련, 다른 컴퓨터에서 수집한 이벤트 |
- 저장 위치:
%SystemRoot%\System32\winevt\Logs\(.evtx, Vista 이후). 그 전에는System32\config\의.evt. - 바이너리 형식 이라 메모장이 아니라 이벤트 뷰어 (
eventvwr.msc)로 봅니다. - 이벤트 수준: 오류 · 경고 · 정보 · 성공 감사 · 실패 감사.
| 이벤트 ID | 뜻 | 볼 때 |
|---|---|---|
| 4624 | 로그온 성공 | 로그온 유형 3 = 네트워크(공유), 10 = 원격 데스크톱 |
| 4625 | 로그온 실패 | 짧은 시간에 반복 → 무차별 대입 |
| 4634 | 로그오프 | |
| 4672 | 특수 권한(관리자급) 할당 | 4624와 함께 → 관리자 로그온 |
| 4720 | 사용자 계정 생성 | 공격자의 계정 추가 |
| 4740 | 계정 잠김 | 계정 잠금 정책 동작 |
| 1102 | 보안 로그 삭제 | 흔적 지우기의 강한 신호 |
5.2 감사 정책 — 무엇을 기록할지 정하기
감사 정책 — [보안 설정]인데, [ 어떤 사건을 보안 로그에 남길지(성공 · 실패) 정한다 ]는 점에서 사건 자체를 막는 계정 · 암호 정책과 구별된다(축 5). 위치: secpol.msc → 로컬 정책 → 감사 정책.
| 감사 정책 (기본 9개) | 기록 대상 |
|---|---|
| 계정 로그온 이벤트 감사 | 이 컴퓨터가 계정을 검증 할 때 (도메인 컨트롤러가 인증 처리) |
| 로그온 이벤트 감사 | 이 컴퓨터 에 로그온 · 로그오프할 때 |
| 계정 관리 감사 | 계정 · 그룹 생성 · 변경 · 삭제 , 암호 설정 |
| 개체 액세스 감사 | 파일 · 폴더 · 레지스트리 등 감사 설정(SACL)된 개체 접근 |
| 디렉터리 서비스 액세스 감사 | Active Directory 개체 접근 |
| 정책 변경 감사 | 사용자 권한 할당 · 감사 정책 · 신뢰 정책 변경 |
| 권한 사용 감사 | 사용자 권한(예: 백업, 시스템 시간 변경) 행사 |
| 프로세스 추적 감사 | 프로그램 실행 · 종료 등 |
| 시스템 이벤트 감사 | 시스템 시작 · 종료, 보안 로그에 영향을 주는 사건 |
⚠️ 계정 로그온 ↔ 로그온 : "계정 로그온"은 인증을 처리한 쪽 (도메인 컨트롤러)에, "로그온"은 사용자가 실제로 들어간 컴퓨터 에 남습니다. 이름이 비슷해 가장 많이 헷갈리는 짝입니다.
5.3 그 밖의 흔적 — 아티팩트와 휘발성 정보
| 흔적 | 위치 · 명령 | 무엇을 알려 주나 |
|---|---|---|
| 자동 실행 레지스트리 | HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run (HKCU 쪽 · RunOnce도) | 부팅 · 로그인 때 자동 실행되는 프로그램 — 악성코드 지속성 단골 |
| IE 방문 기록 | index.dat (구형 IE), 이후 버전은 WebCache 데이터베이스 | 방문 URL · 시각 |
| 마지막 부팅 시각 | net statistics workstation의 "통계 시작 시간", systeminfo | 침해 시점 추정 |
휘발성 정보 — [증거 유형]인데, [ 전원이 꺼지면 사라진다 ]는 점에서 디스크에 남는 비휘발성 정보와 구별된다(축 6). 그래서 수집 순서는 휘발성이 큰 것부터 : 레지스터 · 캐시 → 메모리 · 실행 중인 프로세스 · 네트워크 연결 · ARP 캐시 → 임시 파일 → 디스크(로그 포함) → 백업 매체. 이벤트 로그는 디스크에 저장되므로 휘발성 정보가 아닙니다.
📝 기출 포인트 — "로그인 시도 횟수가 남는 윈도우 로그 = 보안 로그 ", " 휘발성 정보가 아닌 것 = 이벤트 로그", 이벤트 로그 저장 폴더 , 감사 정책 항목 ↔ 기록 대상 매칭 이 나왔습니다. 자동 실행 Run 키 와 index.dat는 포렌식 아티팩트 문제로 나옵니다.
6. 실기 연결
수행준거 1.1-4 "운영체제에서 생성되는 로그파일 관리 점검" , 2.1-3 "이벤트 로그정보 생성과 관리 점검" , 3.2 "로그분석 및 대응" 에 해당합니다. 필답형에서 로그 문제는 거의 매회 나옵니다.
자주 나오는 형태
last·lastb·/var/log/secure발췌를 주고 "공격 유형, 공격자 IP, 성공 여부, 대응" → 핵심어: 무차별 대입(사전 대입), btmp 연속 실패 후 wtmp 성공, 계정 잠금 임계값 설정(PAM), 해당 IP 차단(iptables · TCP Wrapper), root 원격 접속 제한- "로그인 실패 기록 파일과 확인 명령" →
/var/log/btmp,lastb /etc/passwd몇 줄을 주고 "취약한 계정과 이유" → UID 0인 일반 계정, 셸이 있는 불필요한 시스템 계정, 두 번째 필드에 해시가 직접 들어 있는 계정(shadow 미사용)- syslog 설정을 주고 "인증 로그가 기록되는 파일" → authpriv. → /var/log/secure*
로그 관리 점검표
| 점검 항목 | 리눅스 | 윈도우 |
|---|---|---|
| 로그가 생성되는가 | rsyslog 동작, authpriv 설정 | 감사 정책(로그온 · 계정 관리 · 정책 변경 성공/실패) 설정 |
| 로그 파일 권한 | /var/log/* root 소유, 일반 사용자 쓰기 불가 | 이벤트 로그 접근 제한 |
| 보존 · 용량 | logrotate 주기 · 개수 | 이벤트 로그 최대 크기 · 덮어쓰기 정책 |
| 위변조 방지 | 원격 로그 서버(@), WORM 저장소(04번 노트) | 로그 수집 서버로 전달 |
| 정기 검토 | secure · btmp 검토 | 4625 · 1102 · 4720 검토 |
💡 서술형에서 "어디에(파일), 무엇이(내용), 무엇으로(명령)" 를 한 문장에 넣으면 부분 점수를 잃지 않습니다. 예: "로그인 실패 기록은 /var/log/btmp에 바이너리로 저장되며 lastb 명령으로 확인한다."
7. 확인 문제
문제 1. /etc/passwd의 한 줄 admin2:x:0:500::/home/admin2:/bin/bash에서 보안상 가장 문제가 되는 필드는?
① 두 번째 필드 x ② 세 번째 필드 0 ③ 네 번째 필드 500 ④ 일곱 번째 필드 /bin/bash
문제 2. 다음 중 /etc/shadow에 저장되지 않는 정보는?
① 패스워드 최대 사용 기간 ② 마지막 패스워드 변경일 ③ 사용자의 홈 디렉터리 ④ 패스워드 만료 경고 기간
문제 3. 리눅스에서 로그인 실패 이력을 기록하는 파일과 확인 명령의 짝으로 옳은 것은? ① utmp — who ② wtmp — last ③ btmp — lastb ④ lastlog — lastcomm
문제 4. 패스워드 해시에 솔트를 사용하는 가장 직접적인 목적은? ① 해시 계산 속도 향상 ② 해시값을 복호화할 수 있게 함 ③ 같은 패스워드라도 다른 해시가 되게 하여 사전 계산 테이블 공격을 어렵게 함 ④ 패스워드 길이 제한 완화
문제 5. 윈도우에서 계정 이름과 SID를 매칭하고 감사 로그를 기록하며 로그인 검증을 총괄하는 구성요소는? ① SAM ② LSA ③ SRM ④ NTLM
문제 6. PAM 모듈 타입이 아닌 것은? ① auth ② account ③ session ④ access
문제 7. 윈도우 감사 정책 중 사용자가 파일 · 폴더에 접근한 사건 을 기록하려면 어떤 항목을 설정해야 하는가? ① 계정 관리 감사 ② 개체 액세스 감사 ③ 정책 변경 감사 ④ 시스템 이벤트 감사
문제 8. 침해사고 현장에서 수집할 때 휘발성 정보가 아닌 것은? ① 실행 중인 프로세스 목록 ② 현재 네트워크 연결 상태 ③ 보안 이벤트 로그 파일 ④ ARP 캐시
정답과 해설
| # | 정답 | 해설 (판별 축) |
|---|---|---|
| 1 | ② | UID 0은 이름과 관계없이 root 권한입니다. x는 shadow 사용을 뜻하는 정상 값이고, 500은 GID, /bin/bash는 셸입니다. |
| 2 | ③ | 홈 디렉터리는 passwd 의 여섯 번째 필드입니다. shadow는 해시와 기간 정보 만 담습니다. |
| 3 | ③ | 축 2(실패)는 btmp/lastb. ①은 지금 로그인한 사용자, ②는 성공 이력 누적, lastcomm은 pacct(실행 명령) 확인 명령입니다. |
| 4 | ③ | 솔트는 레인보우 테이블 무력화가 목적입니다. 해시는 여전히 되돌릴 수 없고(②), 속도를 늦추는 것은 키 스트레칭입니다. |
| 5 | ② | LSA = 총괄 · 정책 · SID 매칭 · 감사 기록. SAM은 계정 저장소, SRM은 접근 검사(축 4의 인가 쪽), NTLM은 프로토콜입니다. |
| 6 | ④ | 타입은 auth · account · password · session 넷입니다. |
| 7 | ② | 파일 · 레지스트리 접근 = 개체 액세스. 계정 관리는 계정 생성 · 변경, 정책 변경은 정책 수정입니다. |
| 8 | ③ | 이벤트 로그는 디스크 에 저장된 비휘발성 정보입니다(축 6). 나머지는 전원이 꺼지면 사라집니다. |
부록 A. 스스로 확인하기
| # | 질문 | 답이 있는 곳 |
|---|---|---|
| 1 | 환경정보 · 인증정보 · 로그는 리눅스와 윈도우에서 각각 어디에 있나? | 1 |
| 2 | /etc/passwd 7개 필드를 순서대로 말하면? UID 0은 무엇을 뜻하나? | 2.1 |
| 3 | 해시가 passwd에서 shadow로 옮겨 간 이유는? | 2.1 |
| 4 | shadow의 두 번째 필드가 !로 시작하면? $6$는 무엇인가? | 2.2 |
| 5 | 솔트와 키 스트레칭은 무엇이 다른가? | 2.2 |
| 6 | PAM의 모듈 타입 4개와 required ↔ requisite의 차이는? | 2.3 |
| 7 | SAM · LSA · SRM의 역할은? SAM 파일의 위치와 접근 가능한 그룹은? | 3.1 |
| 8 | SID에서 RID 500과 501은 무엇인가? | 3.2 |
| 9 | authpriv.* /var/log/secure는 무슨 뜻인가? | 4.1 |
| 10 | utmp · wtmp · btmp · lastlog · pacct를 확인하는 명령은? | 4.3 |
| 11 | 윈도우 이벤트 로그 세 종류와 저장 폴더는? | 5.1 |
| 12 | "계정 로그온 이벤트 감사"와 "로그온 이벤트 감사"는 어디에 기록되나? | 5.2 |
| 13 | 이벤트 ID 4625와 1102는 무엇을 뜻하나? | 5.1 |
부록 B. 자주 하는 실수 · 함정
| 실수 | 바로잡기 |
|---|---|
| "/etc/passwd에 패스워드가 저장된다" | ❌ 지금은 x만 있고 해시는 /etc/shadow |
| "root라는 이름이 관리자 권한을 준다" | ❌ 권한은 UID 0 이 결정 |
| "wtmp에는 로그인 실패도 남는다" | ❌ 실패는 btmp |
| "utmp와 wtmp는 같은 내용이다" | ❌ utmp = 현재 로그인, wtmp = 누적 이력 |
| "로그는 cat으로 다 볼 수 있다" | ⚠️ utmp · wtmp · btmp · lastlog · pacct는 바이너리 — 전용 명령 필요 |
| "솔트를 쓰면 해시를 복호화할 수 있다" | ❌ 해시는 여전히 일방향. 솔트는 사전 계산 공격 방지 |
| "PAM required가 실패하면 즉시 중단된다" | ❌ 즉시 중단은 requisite . required는 끝까지 진행 후 실패 |
| "SAM은 도메인 계정도 저장한다" | ❌ SAM은 로컬 계정. 도메인은 AD(도메인 컨트롤러) |
| "보안 로그에는 항상 모든 로그온이 남는다" | ⚠️ 감사 정책을 켠 항목만 기록 |
| "이벤트 로그는 휘발성 정보다" | ❌ 디스크에 저장되는 비휘발성 |
| "TCP Wrapper 로그는 messages에 남는다" | ⚠️ 접근 기록은 secure (인증 · 접근 관련) |
부록 C. AI · NotebookLM 복습 프롬프트
이 02번 노트만 근거로 4지선다 7문제를 내줘.
/etc/passwd·/etc/shadow 필드, utmp·wtmp·btmp·lastlog·pacct와 확인 명령, SAM·LSA·SRM, 감사 정책 항목은 반드시 포함해줘.
로그 발췌(last, lastb 출력)를 주고 해석하는 문제도 하나 넣어줘.
내가 답하면 채점하고, 오답은 노트 0절의 판별 축과 절 번호를 근거로 설명해줘.
LangTailor