
AI에게 정보보안기사 실기 예상문제를 부탁해 보았습니다.
===============================================================
[주요 출제 경향]
- 2022~2025 기출 분석 결과, 위험관리·ISMS-P·법규, 시스템·네트워크, 웹 취약점, 로그·포렌식이 반복 출제
- 최근 단답·서술형 비중 증가, 실무형 축소 추세
- 같은 개념을 다양한 상황과 용어로 변형해 재출제하는 패턴 강함
- 개념 암기가 아닌 "왜"와 "어떻게"를 설명할 수 있는 능력 중요
===============================================================
제1부: 단답형 문제 (12문제) - 각 3점 만점
===============================================================
【1번】 위험분석 접근법
─────────────────────────────────────────────
문제: 위험분석 접근방법 세 가지의 명칭을 쓰시오.
정답:
① 기준선(베이스라인) 접근법
② 상세 위험 분석
③ 복합 접근법
해설:
• 베이스라인: 모든 시스템에 공통 기준선 적용, 빠르고 저비용
• 상세 위험분석: 자산·위협·취약성을 정량·정성 분석, 정확하지만 고비용
• 복합 접근법: 고위험만 상세, 나머지 베이스라인 적용, 균형
【2번】 위험대응 전략
─────────────────────────────────────────────
문제: ISMS-P에서 정의하는 위험 처리 방법 네 가지를 쓰시오.
정답:
① 위험 수용 (위험을 감수하고 진행)
② 위험 감소 (완화 - 보안 통제로 위험 수준 낮춤)
③ 위험 전가 (보험·외주 등으로 이전)
④ 위험 회피 (위험 활동 중단)
해설:
• 각 전략의 선택은 위험도·비용·영향도에 따라 결정
• ISMS-P 위험관리계획에서 각 위험에 대응 방법 명시
【3번】 자산·위협·취약성 정의
─────────────────────────────────────────────
문제: 정보보호 위험관리에서 자산, 위협, 취약성을 한 줄씩 정의하시오.
정답:
자산: 조직이 보호해야 할 유형(HW·DB·장비)·무형(정보·지적재산권) 대상
위협: 자산에 손실을 초래할 수 있는 원하지 않는 사건의 잠재적 원인
또는 외부/내부 행위자 (예: 해킹, 자연재해, 내부자)
취약성: 위협이 악용할 수 있는 자산·통제의 기술적·관리적·물리적 약점
(예: 보안 패치 미흡, 권한 과다 설정, 불충분한 감시)
【4번】 리눅스 로그 파일
─────────────────────────────────────────────
문제: 리눅스에서 (1) 현재 로그인 상태를 저장하는 파일,
(2) 성공 로그인/로그아웃 누적 기록 파일,
(3) 마지막 성공 로그인 기록 파일명을 순서대로 쓰시오.
정답:
(1) utmp → 현재 로그인 사용자 정보 실시간 기록
(2) wtmp → 로그인·로그아웃 이력 누적 (wtmp, lastlog와 다름)
(3) lastlog → 각 사용자별 최근 로그인 시간·IP 기록
추가 정보:
• btmp: 실패한 로그인 시도 기록
• lastcomm: 실행 완료된 프로세스 기록 (일부 시스템)
【5번】 리눅스 비밀번호 파일과 권한
─────────────────────────────────────────────
문제: 리눅스에서 (1) 사용자 계정 정보 저장 파일명과 권한(3자리),
(2) 암호 해시 저장 파일명과 권한(3자리)을 쓰시오.
정답:
(1) /etc/passwd → 권한 644 (r--r--r--)
형식: username:x:uid:gid:description:home:shell
(2) /etc/shadow → 권한 400 (r-------)
형식: username:$id$salt$hash:lastchange:min:max:warn:inactive:expire
해설:
• passwd는 일반 사용자도 읽어야 하므로 644
• shadow는 암호해시 저장이므로 root만 읽을 수 있도록 400
• $id: 1=MD5, 5=SHA-256, 6=SHA-512
【6번】 PAM 모듈 유형
─────────────────────────────────────────────
문제: PAM(Pluggable Authentication Module) 모듈 유형 중
(A) 비밀번호·인증 정보 검사 담당,
(B) 계정 유효성·접근정책 검사 담당,
(C) 세션 시작·종료 시 작업 담당 유형명을 쓰시오.
정답:
(A) auth → 사용자 신원 확인 (비밀번호 검증)
(B) account → 계정 유효성·접근 정책 검증 (계정 만료 확인 등)
(C) session → 세션 시작/종료 시 추가 작업 (로깅·환경 설정)
기타 모듈:
• password: 비밀번호 변경 관리
【7번】 VLAN 종류
─────────────────────────────────────────────
문제: (1) 스위치 포트 기반,
(2) MAC 주소 기반,
(3) 네트워크(IP) 주소 기반,
(4) 프로토콜 기반 VLAN을 각각 무엇이라 하는가?
정답:
(1) 포트 기반 VLAN (Port-based VLAN)
→ 스위치 포트에 수동으로 VLAN 할당, 설정 간단·안정적
→ 기기 이동 시 재설정 필요
(2) MAC 기반 VLAN (MAC-based VLAN)
→ 호스트 MAC 주소로 자동 할당
→ 이동 시 동일 VLAN 유지, VMPS 서버 필요
(3) 네트워크주소 기반 VLAN (IP-based VLAN)
→ IP 주소 범위로 VLAN 할당
(4) 프로토콜 기반 VLAN (Protocol-based VLAN)
→ 이더타입(Ethertype)으로 VLAN 할당 (예: IPX, IP)
【8번】 스위치 프레임 전송 방식
─────────────────────────────────────────────
문제: LAN 스위치의 프레임 전송 모드 세 가지 명칭을 쓰시오.
정답:
① Cut-through (컷-쓰루)
→ 목적지 MAC 주소만 읽고 즉시 전송
→ 속도 빠름, 오류 검사 없음 → 오류율 높음
② Fragment-free (프래그먼트 프리)
→ 처음 64바이트 읽은 후 전송 (중간 크기 프레임까지 확인)
→ 속도·정확성 중간
③ Store-and-forward (스토어 앤 포워드)
→ 전체 프레임 수신 후 CRC 검사 후 전송
→ 속도 느림, 오류 검사 철저 → 신뢰성 높음
【9번】 IPsec 기본
─────────────────────────────────────────────
문제: IPsec에서 (1) 인증·무결성·기밀성을 제공하는 프로토콜 두 가지,
(2) 동작 모드 두 가지의 명칭을 쓰시오.
정답:
(1) 프로토콜:
① AH (Authentication Header)
→ 인증·무결성 제공, 기밀성 없음
→ 재생 공격 방지를 위해 시퀀스 번호 사용
② ESP (Encapsulating Security Payload)
→ 기밀성·인증·무결성 동시 제공
→ AH보다 광범위한 보호
(2) 모드:
① 전송 모드 (Transport Mode)
→ 페이로드만 암호화, 원본 IP 헤더 유지
→ 호스트 간 통신에 사용
② 터널 모드 (Tunnel Mode)
→ 전체 패킷(IP 헤더 포함) 캡슐화·암호화
→ VPN에 주로 사용
【10번】 개인정보 마스킹 방식
─────────────────────────────────────────────
문제: DB에서 개인정보 비식별화 시 (1) 정규표현식 등 규칙으로
특정 위치 문자만 치환하는 방식,
(2) SQL을 분석해 조건에 맞는 값만 마스킹하는 방식 이름을 쓰시오.
정답:
(1) 패턴 기반 마스킹 (Pattern-based Masking)
예: 주민등록번호 뒤 7자리만 * 치환 → 123456-*******
→ 규칙이 명확하면 구현 간단, 오탐·미탐 가능성 있음
(2) SQL 파싱 기반 마스킹 (SQL-based Masking)
예: WHERE salary > 100000000 조건에만 급여 마스킹
→ 조건별 선별 마스킹 가능, 구현 복잡하나 정확도 높음
【11번】 쿠키 보안 속성
─────────────────────────────────────────────
문제: XSS 기반 쿠키 탈취 방지에 사용하는 쿠키 속성 두 가지와 각각의 기능을 쓰시오.
정답:
(1) Secure 속성
→ HTTPS 연결에서만 쿠키 전송
→ 평문 HTTP 전송 시 자동 제외 (중간자 공격 방지)
(2) HttpOnly 속성
→ 자바스크립트(document.cookie)에서 접근 불가
→ XSS 기반 쿠키 탈취 방지
추가 속성:
• SameSite: CSRF 공격 방지 (Strict/Lax/None)
• Domain/Path: 쿠키 유효 범위 지정
• Max-Age/Expires: 쿠키 유효 기간
【12번】 디지털 포렌식 5대 원칙
─────────────────────────────────────────────
문제: 디지털 포렌식 5대 원칙 중 세 가지를 선택해 명칭만 쓰시오.
정답 (모두 알면 5점, 3개 이상 정답 시 3점):
① 정당성 (Justifiability)
→ 적법 절차에 따른 증거 수집
② 재현성 (Reproducibility)
→ 동일한 조건에서 동일한 결과 도출 가능
③ 신속성 (Speediness)
→ 휘발성 증거부터 우선 확보
④ 연계보관성 (Chain of Custody)
→ 증거 인수·인계·보관 과정 문서화
⑤ 무결성 (Integrity)
→ 증거의 위·변조 방지 및 입증 (해시값 기록 등)
===============================================================
제2부: 서술형 문제 (6문제) - 각 12점 (실제로는 4문제)
===============================================================
【1번】 위험분석 접근법 비교 서술 (12점)
─────────────────────────────────────────────
문제:
베이스라인 접근법, 상세 위험분석, 복합 접근법의 개념을 각각 설명하고,
복합 접근법의 장점과 단점을 서술하시오. (채점: 개념 설명 3점, 장단점 2점)
모범답안 작성 지침:
1) 베이스라인 접근법 개념 (1점):
모든 시스템·조직에 공통적으로 적용할 보호 기준선(정책·표준)을 정하고
일괄 적용해 최소 보호 수준을 빠르게 확보하는 접근 방식
2) 상세 위험분석 개념 (1점):
개별 시스템·자산의 가치, 위협 발생 가능성, 취약성 정도를 정량적·정성적으로
분석하여 각각 위험도(Risk = Asset × Threat × Vulnerability)를 산정하는 방식
3) 복합 접근법 개념 (1점):
고위험도 영역은 상세 위험분석으로 정밀하게 분석하고,
저위험도 영역은 베이스라인으로 일괄 처리해 효율성을 높이는 방식
4) 복합 접근법 장점 (1점):
- 고위험 자산에 자원을 집중 배분 → 비용 효율성
- 저위험도 항목의 불필요한 분석 생략 → 시간 단축
- 정확성과 효율성의 균형 달성
5) 복합 접근법 단점 (1점):
- 고위험 영역 식별 오류 시 핵심 자산이 보호되지 못할 위험
- 저위험으로 분류된 영역의 위험도가 증가할 경우 대응 지연
- 적절한 분류 기준 수립의 어려움
【2번】 ISMS-P 물리보안·관리체계 서술 (12점)
─────────────────────────────────────────────
문제:
ISMS-P에서 물리보호(2.4) 영역의 주요 통제 항목을 3개 이상 예로 들고,
정보보호 방침과 실행계획 수립이 왜 중요한지 설명하시오.
(채점: 물리보호 항목 설명 2점, PDCA 관점 2점, 중요성 1점)
모범답안 작성 지침:
1) 물리보호(2.4) 주요 통제 항목 설명 (2점):
① 보호구역 지정 (2.4.1)
→ 정보시스템이 위치한 구역을 명확히 지정·표시·제한
→ 승인받지 않은 사람의 접근 방지
② 출입통제 (2.4.2)
→ 출입문, 경비 인력, 카드키, 생체인식 등으로 물리적 접근 제한
→ 사용자 인증·권한 기반 입퇴실 관리
③ 정보시스템 보호 (2.4.3)
→ 서버·네트워크 장비를 잠금·케이지·랙 등으로 보호
→ 장비 도난·무단 연결 방지
④ 보호설비 운영 (2.4.4)
→ CCTV 감시, 화재감지기, 소화기 등 설비 운영·점검
→ 사건 기록·환경 사고 방지
⑤ 반출입 기기 통제 (2.4.5)
→ 노트북·USB 등 외부 반출 정책·기록
→ 정보 유출·외부 악성코드 유입 방지
⑥ 업무환경 보안 (2.4.6)
→ 청소용역자 관리, 쓰레기 처리(파쇄) 등
→ 민감 정보 우발적 노출 방지
2) 정보보호 방침과 실행계획의 중요성 (2점):
정보보호 방침:
- 조직의 정보보호 목표·범위·책임·원칙을 명문화
- 임직원이 따라야 할 기준과 기대치 명확화
- 조직 전체 정보보호 방향의 최상위 지침 역할
정보보호 실행계획:
- 방침을 구체적 프로젝트·일정·예산으로 구현하는 실행 로드맵
- ISMS-P의 "실행(DO)" 단계에서 필수
- 계획 없이는 방침이 선언적 지침에만 그침
3) PDCA 관점에서의 중요성 (1점):
- Plan: 방침 수립 + 실행계획으로 목표·수단 정의
- Do: 실행계획에 따른 보안 투자·프로젝트 추진
- Check: 방침·계획 이행도 감사·평가
- Act: 부족 부분 개선·방침 개정
【3번】 리눅스 계정·세션·로그 보안 강화 (12점)
─────────────────────────────────────────────
문제:
리눅스 서버의 계정·세션·로그 측면 보안을 강화하기 위해 적용할 수 있는
설정 4가지를 선정하고, 각 설정의 목적과 효과를 설명하시오.
(채점: 각 설정당 1점 = 4점, 설정 선정의 타당성 1점)
모범답안 작성 지침:
1) TMOUT 환경변수 설정 (1점):
설정: export TMOUT=600 (또는 /etc/profile에 영구 등록)
목적: 세션 유휴 상태 시간 제한
효과: 장시간 방치된 터미널 세션을 자동 종료
→ 무단 접근·세션 하이재킹 방지
2) /etc/securetty 설정 (1점):
내용: Root가 로그인 가능한 TTY(터미널) 목록 지정 예) tty1, tty2만 허용
목적: Root의 원격 직접 로그인(SSH/Telnet) 차단
효과: 일반 사용자 계정 탈취 후 root 권한 직접 탈취 시도 방지
→ 공격 난이도 상승
3) /etc/passwd·/etc/shadow 권한 관리 (1점):
설정:
- /etc/passwd: 644 (r--r--r--)
- /etc/shadow: 400 (r-------)
목적: 암호 해시 파일 접근 권한 최소화
효과: 비root 사용자의 shadow 파일 읽기 불가
→ 오프라인 암호 크래킹·사전 공격 난이도 상승
4) World-writable 파일 검사·제거 (1점):
명령: find / -type f -perm -2 2>/dev/null (또는 -perm /o+w)
목적: 모든 사용자가 쓰기 가능한 파일 탐지
효과: 권한 상승·정상 파일 변조·백도어 설치 발판 제거
→ 시스템 무결성 보증
추가 설정 예시:
- su/sudo 명령 감시 (pam_wheel, PAM log 활성화)
- SSH 보안 설정 (PermitRootLogin no, PubkeyAuthentication yes 등)
- 로그 아카이빙·원격 전송 (rsyslog 설정)
【4번】 웹 파일 업로드 취약점과 대응 (12점)
─────────────────────────────────────────────
문제:
웹 애플리케이션의 파일 업로드 기능에서 발생할 수 있는 주요 취약점을
설명하고, 공격자가 업로드를 이용한 임의 명령 실행에 성공하는 조건 2가지,
그리고 보완 대책 3가지를 서술하시오.
(채점: 취약점 설명 1점, 성공 조건 2점, 대책 2점)
모범답안 작성 지침:
1) 파일 업로드 취약점의 종류 (1점):
MIME 타입 검증 우회:
- 서버가 Content-Type 헤더만 확인할 때
- 공격자가 웹쉘 파일(shell.php)을 image/jpeg으로 변조해 업로드
- 검증 우회 후 백엔드에서 php 확장자로 저장됨
매직넘버 검증 부족:
- 파일 확장자+MIME만 확인할 때
- 실제 파일 헤더(매직넘버)를 위조할 수 없음
- 그러나 일부 이미지 라이브러리 구멍 존재 가능
2) 임의 명령 실행 성공 조건 (2점):
조건 1: 업로드 디렉터리의 실행 권한 설정
- 일반적으로 /var/www/upload 같은 폴더가 웹루트 하위에 위치
- chmod 755 등으로 실행 권한이 있을 때
- 업로드된 웹쉘(shell.php)이 실행 가능해짐
조건 2: 외부에서 업로드 파일에 직접 접근 가능
- http://example.com/upload/shell.php 처럼 URL 직접 호출 가능
- 업로드 디렉터리가 웹 루트 하위 & .htaccess 등 제한 없을 때
- 공격자가 URL 호출로 shell.php 실행 → 서버 명령 실행
3) 보완 대책 (2점 이상):
애플리케이션 측:
- 확장자 화이트리스트: .jpg, .png 등만 허용 (블랙리스트 피함)
- 파일 MIME 타입+매직넘버 검사: Content-Type + 파일 헤더 검증
- 업로드 후 재검증: 저장 후 image/jpeg 라이브러리로 재이미지화
서버(시스템) 측:
- 업로드 디렉터리 실행 권한 제거: chmod 644 등으로 실행 불가 설정
- 웹루트 외 저장: 업로드 파일을 /var/upload 등 웹 외부에 저장
- 파일명 난독화: 저장 시 UUID 또는 hash로 파일명 변경
- .htaccess 설정: <FilesMatch "\\.(php|exe|sh)$"> Deny from all
보안솔루션 측:
- WAF(Web Application Firewall) 정책 적용
- 파일 업로드 감시 및 격리 시스템(DLP 등) 연동
【5번】 이메일 인증 (SPF·DKIM·DMARC) (12점)
─────────────────────────────────────────────
문제:
SPF와 DKIM의 개념과 동작 방식을 각각 설명하고, 두 기술을 결합한 DMARC의
목적과 효과를 서술하시오.
(채점: SPF 설명 1.5점, DKIM 설명 1.5점, DMARC 설명 2점)
모범답안 작성 지침:
1) SPF (Sender Policy Framework) - 1.5점:
개념:
- 도메인의 DNS TXT 레코드에 "어떤 IP가 이 도메인으로 메일을 보낼 수 있는가"를 등록
- 예: v=spf1 ip4:203.0.113.1 include:google.com ~all
동작 방식:
1. 공격자가 attacker@example.com으로 스푸핑 메일 발송
2. 수신 서버가 Envelope From (Return-Path) 주소 확인 → example.com
3. example.com의 DNS SPF 레코드 조회
4. 발송 서버 IP가 SPF 레코드의 허용 IP 목록에 있는지 확인
5. 없으면 fail 또는 softfail → 메일 거부/스팸 폴더
장점:
- 도메인 위장 발송 탐지 용이
- 기존 메일 인프라 변경 최소
제한:
- SPF alignment 문제: SMTP 경로와 From 도메인 일치 보장 안 됨
- 메일 전달(forwarding) 시 실패 가능
2) DKIM (DomainKeys Identified Mail) - 1.5점:
개념:
- 발신 도메인이 개인키로 메일(헤더·본문)에 전자서명 첨부
- 수신 측이 DNS 공개키로 서명 검증 → 위장·변조 탐지
동작 방식:
1. 발송 서버: 메일 헤더·본문을 SHA-256 해시화
2. 발송 서버: 개인키로 해시값 서명 → DKIM-Signature 헤더 첨부
(형식: v=1; a=rsa-sha256; c=relaxed/relaxed; d=example.com;
s=selector; h=from:to:subject:date; bh=...; b=...)
3. 수신 서버: DKIM-Signature에서 selector(s=) + domain(d=) 추출
4. 수신 서버: selector._domainkey.example.com DNS TXT 레코드 조회
5. 공개키 획득 후 서명 검증
6. 검증 성공 → 발신자 신원 확인 & 메일 위변조 없음 증명
장점:
- 메일 본문 변조 탐지 가능
- 발신자 암호학적 증명
- 메일 전달 시에도 작동
제한:
- 발송 서버 설정 필요 (개인키 관리)
- 수신 서버 설정 필요 (공개키 배포)
3) DMARC (Domain-based Message Authentication, Reporting & Conformance) - 2점:
개념:
- SPF + DKIM 결과를 수집·정책화·리포팅하는 정책 체계
- 도메인 소유자가 "SPF/DKIM 실패 시 어떻게 처리할지" 정책 지정
DNS TXT 레코드 예시:
v=DMARC1; p=quarantine; rua=mailto:admin@example.com; ruf=mailto:forensics@example.com
정책(p) 옵션:
- none: 조치 없음, 리포트만 전송
- quarantine: 의심 메일을 스팸 폴더 격리
- reject: 메일 거부
동작 흐름:
1. 수신 서버: SPF/DKIM 검증 수행
2. SPF 통과하지만 DKIM 실패 또는 그 반대의 경우
3. DMARC alignment 정책 적용 (relaxed/strict)
- Relaxed: 서브도메인 허용 (mail.example.com → example.com)
- Strict: 완벽한 도메인 일치만 허용
4. 정책 불일치 시 p=quarantine이면 격리, p=reject이면 거부
5. 일일/주간 리포트(Aggregate Report) 생성 → admin@example.com으로 전송
6. 위조 시도 시 Forensics Report(ruf) 별도 전송
효과:
- SPF/DKIM만으로 방어 불가한 부위 보완
- 도메인 스포핑 종합 대응
- 메일 보안 통합 모니터링
【6번】 디지털 포렌식 5대 원칙 적용 사례 (12점)
─────────────────────────────────────────────
문제:
디지털 포렌식 5대 원칙(정당성, 재현성, 신속성, 연계보관성, 무결성) 중
세 가지를 선택해 정의하고, 침해사고 현장에서 각 원칙을 어떻게 준수해야
하는지 현장 사례를 들어 설명하시오.
(채점: 정의 3점, 현장 준수 방법 2점)
모범답안 작성 지침 (세 가지 선택 예시):
1) 정당성 (Justifiability) - 1점:
정의:
증거 수집이 법적 절차를 준수하고 적절한 권한 하에서 이루어져야 한다는 원칙
- 적법 절차: 영장 취득, 내부 인가, 법정 대리인 입회 등
- 부적절 수집: 비인가 스니핑, 도청, 불법 침입 등은 증거능력 상실
현장 준수 사례 (2점):
- 경찰·검찰·법원으로부터 압수수색 영장 획득 후 컴퓨터 디스크 수집
- 내부 사건 (예: 내부자 의심): CISO·법무팀 승인 후 증거 수집
- 수집 시 변호사·감시자 입회로 적법성 확보
- 수집 과정 전체 영상 기록·문서화 (법적 공방 대비)
2) 재현성 (Reproducibility) - 1점:
정의:
동일한 절차·환경·데이터로 분석을 반복할 때 같은 결과가 나와야 한다는 원칙
- 타 전문가가 같은 도구·방법으로 검증 가능해야 함
- 주관적 해석 배제, 객관적 사실만 기록
현장 준수 사례 (2점):
- 디스크 이미징:
* Write blocker 사용해 원본 디스크 접촉 차단 (변조 방지)
* dd if=/dev/sda of=image.img bs=4096 명령으로 1:1 복사
* 이미징 전후 MD5/SHA256 해시값 기록
(예: Original: a1b2c3d4e5f6... → Image: a1b2c3d4e5f6... ✓ 일치)
* 이미지로만 분석 수행 (원본 접근 절대 금지)
- 분석 도구 & 방법 기록:
* 사용 도구(FTK, Encase 등) 버전·설정 명시
* 분석 절차 단계별 스크린샷 또는 로그 저장
* 다른 포렌식 전문가가 같은 도구로 재분석 가능하도록 정리
3) 신속성 (Speediness) - 1점:
정의:
증거 보전의 우선순위를 고려해 휘발성 높은 정보부터 수집해야 한다는 원칙
- 메모리·네트워크 연결 정보는 전원 차단 시 소실됨
- 하드디스크는 상대적으로 휘발성 낮음
현장 준수 사례 (2점):
- 우선순위별 증거 수집:
1순위: 메모리 덤프 (즉시 수행, 전원 유지)
→ volatility, dd if=/dev/mem of=memory.bin 등으로 메모리 캡처
2순위: 네트워크 연결 정보 (netstat, ss 명령 기록)
→ netstat -anp > network_state.txt (활성 연결 저장)
3순위: 로그 파일 (syslog, auth.log 등 백업)
4순위: 하드디스크 이미징
- 절대 금지: 혼란 중 디스크 접근 → 메모리 휘발 → 나중에 이미징
(증거 손상 + 신속성 원칙 위배)
또는 다른 조합 선택 가능:
4) 연계보관성 (Chain of Custody) - 1점:
정의:
증거의 수집·인수·인계·보관 과정을 문서화해 증거의 출처·무결성·연속성을 증명하는 원칙
현장 준수 사례 (2점):
- 증거 수집 시:
* "2025-11-24 14:30, HDD 1개 (SN: 123ABC), 용량 1TB"
* "수집자: A, 서명, 타임스탬프"
- 증거 이동 시마다 기록:
* "14:35 A → B로 인수인계, B 서명"
* "냉동보관실 입고, 보관자 C 서명"
- 분석 단계별 기록:
* "15:00 분석자 D가 증거 인수, 봉인 상태 확인 ✓"
* "해시값 검증 ✓ (원본과 일치)"
- 법정 제출 전 최종 확인:
* 증거 수집~분석~제출까지 모든 단계 기록 제출
* "누가 언제 어떤 목적으로 접근했는가" 전체 추적 가능
5) 무결성 (Integrity) - 1점:
정의:
증거의 변조·손상을 방지하고, 변조되지 않았음을 암호학적으로 입증해야 한다는 원칙
현장 준수 사례 (2점):
- 해시값 기록 & 검증:
* 원본 디스크: MD5 = a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6
* 이미지 생성 완료 후 재계산: MD5 = a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6
* 일치 ✓ → 이미지 정합성 증명
- 저장 매체 보호:
* 증거 저장 매체(CD/USB 등)를 손상으로부터 보호
* 냉동 보관실 등 통제된 환경에서 보관
- 증거 접근 제한:
* 필요한 사람만 접근 (접근 로그 기록)
* 불필요한 도구/소프트웨어 설치 금지 (의도치 않은 변조 방지)
- 분석 후 검증:
* 최종 분석 보고서에 해시값 재기록
* "본 분석 과정에서 증거 무결성 확인 완료" 명시
===============================================================
제3부: 실무형 시나리오 문제 (2문제 중 선택) - 각 16점 만점
===============================================================
【1번】 리눅스 서버 보안 점검 시나리오 (16점)
─────────────────────────────────────────────
[상황 제시]
귀사 정보보안팀이 운영 중인 리눅스 서버에서 정기 보안 점검을 수행했습니다.
다음과 같은 설정이 확인되었습니다.
1) SSH 설정
/etc/ssh/sshd_config:
→ PermitRootLogin yes (root 원격 직접 로그인 허용)
2) 세션 관리
/etc/profile:
→ TMOUT 설정이 전혀 없음 (타임아웃 무제한)
3) 파일 권한
/etc/passwd: -rw-rw-rw- (666)
/etc/shadow: -rw-r----- (640)
4) 파일시스템 점검
find / -type f -perm -2 결과:
→ world-writable 파일 다수 발견 (예: /tmp/test.sh, /opt/app/config.txt 등)
[요구사항]
(1) 각 항목별 보안 취약점 설명 (6점)
- 취약점 명칭
- 보안상 영향 (공격자의 가능 행동)
- CVSS 또는 심각도 평가 (High/Medium/Low)
(2) 개선 조치 방법 (6점)
- 각 항목별 구체적 설정 방법 또는 명령 예시
- 설정 후 검증 방법
(3) 추가 보안 강화 방안 (3점)
- 위 4가지 외 리눅스 서버 보안 강화를 위한 추가 조치 2~3가지
[모범답안 작성 지침]
(1) 각 항목별 취약점 분석 (6점):
【항목 1: SSH root 원격 로그인 허용】(1.5점)
취약점: 원격 Root 권한 탈취 위험
영향:
- 일반 사용자 계정 탈취 후, SSH로 root 직접 로그인 시도
- 로그인 성공 시 시스템 최고 권한 즉시 확보
- root 권한으로 백도어 설치, 시스템 전체 장악
심각도: HIGH (최상위 권한 탈취)
【항목 2: TMOUT 미설정】(1.5점)
취약점: 세션 타임아웃 없음 → 장시간 방치 세션 지속
영향:
- 사용자가 로그오프하지 않고 자리 떠날 경우
- 다른 사용자가 해당 터미널 접근 → 무단 명령 실행
- 세션 하이재킹, 권한 오용
심각도: MEDIUM (우발적 권한 오용 / 의도된 공격 모두 가능)
【항목 3: /etc/passwd 과도 권한 (666)】(1.5점)
취약점: 모든 사용자가 읽기·쓰기 가능
영향:
- 일반 사용자가 /etc/passwd 읽기 → 전체 사용자 계정 조회 가능
- 악의적 사용자가 /etc/passwd 수정
* 기존 계정 암호 제거 (UID 0으로 변조)
* 신규 계정 추가 → 백도어 계정 생성
심각도: HIGH (권한 상승 / 백도어 설치)
【항목 3-2: /etc/shadow 과도 권한 (640)】(1.5점)
취약점: 일반 사용자가 shadow 읽기 가능 (표준은 400 또는 000)
영향:
- 일반 사용자가 /etc/shadow 읽기 → 전체 계정의 암호 해시 획득
- 오프라인에서 해시 크래킹 (John the Ripper, Hashcat 등)
* 약한 비밀번호 경우 빠르게 역산 가능
- root 계정 비밀번호 탈취 → 전권한 장악
심각도: HIGH (암호 해시 노출)
【항목 4: world-writable 파일】(1점)
취약점: 모든 사용자가 읽기·쓰기·실행 가능
영향:
- /tmp/test.sh: 일반 사용자가 스크립트 수정 → 타 사용자 실행 시 악의적 명령 실행
- /opt/app/config.txt: 애플리케이션 설정 변조 → 기능 오류 또는 권한 상승
- 특히 cron·systemd 등 root 소유 스크립트가 world-writable이면 권한 상승 취약점
심각도: HIGH (권한 상승)
(2) 개선 조치 방법 (6점):
【항목 1: SSH root 로그인 차단】(1.5점)
명령:
1. vi /etc/ssh/sshd_config
2. PermitRootLogin yes → PermitRootLogin no 변경
3. PermitRootLogin prohibit-password (암호 로그인만 차단, 공개키만 허용 옵션도 있음)
4. SSH 서비스 재시작: systemctl restart sshd
5. 설정 검증:
grep "^PermitRootLogin" /etc/ssh/sshd_config
→ "PermitRootLogin no" 출력 확인
효과:
- root 계정으로 SSH 직접 접근 불가
- 일반 사용자 로그인 → sudo su - 로 권한 상승 (감시 로그 남음)
【항목 2: TMOUT 설정】(1.5점)
명령:
1. vi /etc/profile (또는 /etc/bash.bashrc)
2. 하단에 추가:
export TMOUT=600 (600초 = 10분)
3. 파일 저장 후 로그아웃
4. 새 터미널 로그인 후 검증:
echo $TMOUT
→ 600 출력 확인
동작:
- 세션 유휴 10분 후 자동 로그아웃
- 환경에 따라 TMOUT=1800 (30분) 등으로 조정 가능
주의:
- /etc/profile은 모든 쉘 사용자에 적용
- .bashrc는 bash 사용자만 적용
【항목 3: /etc/passwd·/etc/shadow 권한 정정】(1.5점)
명령:
chmod 644 /etc/passwd # 표준 권한: r--r--r--
chmod 400 /etc/shadow # 표준 권한: r------
검증:
ls -la /etc/passwd /etc/shadow
출력 예:
-rw-r--r-- 1 root root /etc/passwd
r-------- 1 root shadow /etc/shadow
해설:
- /etc/passwd 644: 모든 사용자 읽기 필요 (로그인 명령에서 사용)
쓰기는 root만 (비밀번호 명령어에서 shadow 업데이트)
- /etc/shadow 400: root만 읽기 (해시 정보 보호)
【항목 4: World-writable 파일 권한 정정】(1.5점)
명령:
1. world-writable 파일 검사:
find / -type f -perm -2 2>/dev/null (또는 -perm /o+w)
또는
find / -type f -perm /o+w 2>/dev/null
2. 결과 검토 (예):
/tmp/test.sh
/opt/app/config.txt
3. 각 파일별 권한 확인 & 정정:
ls -la /tmp/test.sh → -rwxrwxrwx
chmod 750 /tmp/test.sh (또는 755, 소유자·그룹만 쓰기)
4. /opt/app/config.txt는?
ls -la /opt/app/config.txt → -rw-rw-rw-
chmod 640 /opt/app/config.txt (소유자 읽기·쓰기, 그룹 읽기만)
5. 정정 후 재확인:
find / -type f -perm -2 2>/dev/null
→ world-writable 없어야 함 (또는 /tmp, /dev 등 예외만 남아야 함)
주의:
- /tmp, /var/tmp: 세션 임시 파일이라 world-writable 허용되는 경우 많음
- /dev: 디바이스 파일이라 world-writable 정상
- 일반 애플리케이션·데이터 파일은 world-writable 제거
(3) 추가 보안 강화 방안 (3점):
추가 조치 1: sudo 명령 감시 & 권한 상승 로깅 (1점)
목적: 권한 상승 시도를 추적
설정:
- sudo 명령 실행 로그: /var/log/auth.log (또는 /var/log/secure)
- auditd 활성화:
systemctl enable auditd && systemctl start auditd
auditctl -w /etc/sudoers -p wa -k sudoers_edits
- 모든 sudo 사용 기록 및 권한 상승 흔적 남김
추가 조치 2: /etc/securetty 설정 (1점)
목적: Root 로그인 가능 터미널 제한
설정:
vi /etc/securetty
→ 콘솔 터미널(tty1, tty2 등)만 허용
→ 원격 Telnet/SSH에서는 root 로그인 완전 불가
(예) /etc/securetty 내용:
tty1
tty2
# SSH/Telnet 등 원격 접근은 명시되지 않음 → 원격 root 로그인 불가
추가 조치 3: fail2ban 설치 & SSH 무차별 대입 공격 방어 (1점)
목적: SSH 포트 스캔·무차별 공격(Brute-force) 방어
설정:
apt-get install fail2ban
systemctl enable fail2ban && systemctl start fail2ban
# 5회 실패 후 60초 차단 등 정책 설정
효과: 잦은 로그인 실패 IP 자동 차단 (iptables 룰 적용)
【2번】 웹·DB 연동 취약점 시나리오 (16점)
─────────────────────────────────────────────
[상황 제시]
한 전자상거래 웹 서비스를 점검한 결과, 다음과 같은 문제가 발견되었습니다.
【로그인 기능 코드】
```php
<?php
$user = $_POST['user'];
$query = "SELECT pw FROM member WHERE id='$user'";
$result = mysqli_query($conn, $query);
if ($result && mysqli_num_rows($result) > 0) {
$row = mysqli_fetch_assoc($result);
if ($row['pw'] == $_POST['pwd']) {
$_SESSION['id'] = $user;
echo "로그인 성공";
}
}
?>
```
【파일 업로드 기능 코드】
```php
<?php
if ($_FILES['file']['type'] == 'image/jpeg') { // MIME 타입만 검사
$upload_dir = '/var/www/html/upload/'; // 웹루트 하위
move_uploaded_file($_FILES['file']['tmp_name'],
$upload_dir . $_FILES['file']['name']);
echo "파일 업로드 완료: " . $_FILES['file']['name'];
}
?>
```
【서버 설정】
- /var/www/html/upload/ 디렉터리 권한: 755 (실행 권한 있음)
- URL 직접 접근 가능: http://example.com/upload/any_file.php
- 웹 서버(Apache): mod_php 활성화 → PHP 파일 실행 가능
[요구사항]
(1) SQL 쿼리의 취약점 명칭과 공격 페이로드 2개 (5점)
(2) 파일 업로드 취약점의 유형과 웹쉘 공격 성공 조건 (5점)
(3) 위 두 취약점을 모두 고려한 종합 보완 대책 (5점)
- 애플리케이션 코드 수정
- DB 보안 조치
- 서버·시스템 조치
각각 2~3가지씩
[모범답안 작성 지침]
(1) SQL Injection 취약점 분석 (5점):
【취약점 명칭】(1점)
SQL Injection (SQL 인젝션)
【원인 분석】(1점)
- 사용자 입력값($user)을 직접 SQL 쿼리에 연결
- 입력값 검증·이스케이프 없음
- 쿼리문과 데이터의 경계 불명확
【공격 페이로드 1: 인증 우회】(1.5점)
입력: user = admin' OR '1'='1
실행 쿼리:
SELECT pw FROM member WHERE id='admin' OR '1'='1'
결과: '1'='1'은 항상 참이므로 첫 번째 계정(대개 admin) 반환
→ 비밀번호 모르고도 로그인 성공
【공격 페이로드 2: 전체 데이터 유출】(1.5점)
입력: user = admin' UNION SELECT group_concat(id,':',pw) FROM member WHERE 'x'='x
실행 쿼리:
SELECT pw FROM member WHERE id='admin' UNION SELECT group_concat(...) WHERE 'x'='x'
결과: 회원 테이블 전체 ID·비밀번호 조회 (UNION 기반 인젝션)
→ 계정 정보 대량 탈취
추가 공격 예시:
- admin' ; DROP TABLE member; -- (테이블 삭제)
- admin' UNION SELECT @@version; -- (DB 버전 조회)
(2) 파일 업로드 취약점 분석 (5점):
【취약점 유형】(1.5점)
- 부정확한 파일 타입 검증 (MIME 타입만 검사)
- 업로드 파일이 실행 가능한 위치에 저장
- 업로드 디렉터리 외부 접근 가능
【MIME 타입 검증 우회】(1.5점)
공격자 행동:
1. 웹쉘 작성: shell.php (PHP 코드 포함)
2. 파일명을 shell.jpg로 변경
3. Content-Type을 image/jpeg으로 조작 (Burp Suite 등 이용)
4. 업로드 실행
서버 처리:
if ($_FILES['file']['type'] == 'image/jpeg') // ✓ 통과
move_uploaded_file(..., '...shell.jpg'); // jpg로 저장됨
그러나:
- Apache 설정에서 .jpg.php 같은 이중 확장자 실행 가능 경우
또는 .htaccess 설정 불완전
- 또는 .jpg 파일도 실행 가능 설정된 경우 (AddType image/jpeg .jpg 등)
- 또는 파일명에 null byte 삽입: shell.php%00.jpg → shell.php로 저장
【웹쉘 공격 성공 조건】(2점)
조건 1: 업로드 디렉터리의 실행 권한 (755)
- /var/www/html/upload 권한 755
- 모든 사용자가 실행 가능
- PHP 파일이 저장되면 실행 가능해짐
조건 2: 외부에서 업로드 파일 URL 직접 호출
- http://example.com/upload/shell.php 호출 가능
- URL을 브라우저에서 호출 → PHP 엔진 실행
- 웹쉘 코드 (예: system($_GET['cmd']);) 실행
→ 공격자가 원격에서 서버 명령 실행 가능
(3) 종합 보완 대책 (5점):
【애플리케이션 코드 측 (2.5점)】
대책 1: PreparedStatement 및 파라미터 바인딩 사용 (1.25점)
수정 전:
```php
$query = "SELECT pw FROM member WHERE id='$user'";
$result = mysqli_query($conn, $query);
```
수정 후:
```php
$query = "SELECT pw FROM member WHERE id=?";
$stmt = $conn->prepare($query);
$stmt->bind_param("s", $user); // "s" = string 파라미터
$stmt->execute();
$result = $stmt->get_result();
```
효과:
- SQL 쿼리 구조와 데이터 분리
- 특수문자(' " ; --) 자동 이스케이프
- SQL Injection 완벽 방지
대책 2: 파일 업로드 보안 강화 (1.25점)
수정 전:
```php
if ($_FILES['file']['type'] == 'image/jpeg') {
move_uploaded_file(..., '/var/www/html/upload/' . $_FILES['file']['name']);
}
```
수정 후:
```php
// 확장자 화이트리스트
$allowed_ext = ['jpg', 'jpeg', 'png', 'gif'];
$file_ext = strtolower(pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION));
if (!in_array($file_ext, $allowed_ext)) {
die("허용되지 않는 파일 타입입니다.");
}
// MIME 타입 검사
$finfo = finfo_open(FILEINFO_MIME_TYPE);
$mime = finfo_file($finfo, $_FILES['file']['tmp_name']);
if (!in_array($mime, ['image/jpeg', 'image/png', 'image/gif'])) {
die("파일이 이미지가 아닙니다.");
}
// 파일명 난독화 (임의의 명칭으로 변경)
$new_filename = bin2hex(random_bytes(16)) . '.' . $file_ext;
// 웹루트 외에 저장
$upload_dir = '/var/uploads/'; // /var/www/html 외부
move_uploaded_file($_FILES['file']['tmp_name'], $upload_dir . $new_filename);
```
효과:
- 확장자 화이트리스트로 PHP/JSP 등 실행 파일 제외
- MIME 타입 검증 + 파일 매직넘버 검증
- 파일명 난독화 → URL 예측 불가
- 웹루트 외 저장 → 직접 실행 불가
【DB 보안 측 (1.25점)】
대책 1: 최소권한 원칙 + 별도 계정 분리 (0.625점)
현상: 웹 애플리케이션이 DB root 또는 admin 계정으로 연결
문제: 웹 서버 해킹 시 전체 DB 제어 가능
개선:
```sql
-- 웹 애플리케이션용 별도 계정 생성
CREATE USER 'webapp'@'localhost' IDENTIFIED BY 'strong_password';
-- 필요한 권한만 부여 (SELECT/INSERT/UPDATE만, DELETE 제외)
GRANT SELECT, INSERT, UPDATE ON ecommerce.member TO 'webapp'@'localhost';
-- 관리자 계정과 분리
-- webapp 계정이 해킹되어도 다른 DB는 접근 불가
```
효과:
- 웹 서버 침해 시 피해 범위 제한
- 실수로 인한 DELETE 명령 차단
- 감시·감사 용이
대책 2: AUDIT 활성화 & 암호화 (0.625점)
MySQL AUDIT Plugin 설정:
```sql
-- 민감한 쿼리(로그인·결제) 감시
SET GLOBAL audit_log_events = 'CONNECT', 'QUERY_DCL', 'QUERY_DML';
-- 모든 SELECT 쿼리 기록
SELECT * FROM mysql.audit_log WHERE event_class='query_error';
```
TDE (Transparent Data Encryption):
```sql
-- DB 파일 자체를 암호화
SET GLOBAL innodb_encrypt_tables=ON;
ALTER TABLE member ENCRYPTION='Y';
```
효과:
- SQL Injection 시도 흔적 기록
- DB 파일 유출 시에도 암호화로 보호
【서버·시스템 측 (1.25점)】
대책 1: 업로드 디렉터리 실행권한 제거 + .htaccess (0.625점)
파일시스템 설정:
```bash
chmod 755 /var/www/html/upload # 디렉터리 자체는 접근 가능하나
chmod 644 /var/www/html/upload/* # 파일들은 실행 불가
```
또는 Apache .htaccess:
```apache
# /var/www/html/upload/.htaccess
<FilesMatch "\\.(php|php5|php7|phps|jsp|asp|aspx|cgi|pl|py|sh|exe)$">
Deny from all
</FilesMatch>
# 또는 모든 스크립트 실행 금지
php_flag engine off
AddType text/plain .php .php5 .php7 .jsp
```
동작:
- 공격자가 shell.php 업로드 → 브라우저에서 호출해도 실행 안 됨
- 텍스트 파일로 다운로드만 되거나 거부
대책 2: WAF (Web Application Firewall) 및 모니터링 (0.625점)
ModSecurity WAF 규칙 예:
```
# SQL Injection 탐지
SecRule ARGS "@contains OR" "id:1001,deny,status:403"
SecRule ARGS "@contains UNION" "id:1002,deny,status:403"
# 파일 업로드 크기 제한
SecRule REQUEST_HEADERS:Content-Length "@gt 10485760" "id:1003,deny"
```
로그 모니터링:
```bash
tail -f /var/log/apache2/error.log | grep -i "injection|upload"
이상 탐지 시 즉시 알림 발송
```
효과:
- 의심 쿼리 실시간 탐지·차단
- 업로드 이상 탐지 (초과 크기, 의심 파일 등)
