🛡️ 정보보안기사 | 시스템보안 핵심 정리 (1-3편)
PAM 세부 옵션 · 버퍼 오버플로우 방어 심화 · find 명령어 총정리 · 패스워드 정책 · 디지털 포렌식 · 악성코드 분석까지
시스템보안 전 범위 마지막 편을 완벽 정리합니다.
📋 목차
- 1. PAM 세부 옵션 (deny · unlock_time · no_magic_root)
- 2. 버퍼 오버플로우 방어 심화 (StackGuard · StackShield · ASLR)
- 3. 리눅스 find 명령어 총정리
- 4. 패스워드 정책 심화 (login.defs · OS별 경로 · 윈도우 정책)
- 5. 리눅스 보안 설정 심화 (rhosts · PATH · crontab · 레지스트리)
- 6. 침해사고 대응 명령어
- 7. 디지털 포렌식
- 8. 악성코드 분석 (정적·동적·샌드박스·폴리모픽·패커)
- 9. 보안 관리 원칙 (최소 권한 · RPO·RTO · 3대 보안)
- 10. 시스템보안 전체 최종 요약
1. PAM 세부 옵션
🔧 현직자 실무 포인트
PAM의 pam_tally2 또는 pam_faillock 모듈로 로그인 실패 횟수를 제한합니다. 실무에서는 deny=5, unlock_time=300 조합이 일반적입니다. no_magic_root 옵션 없이 설정하면 root 계정도 잠길 수 있어 원격 서버 접근 불가 사태가 발생할 수 있습니다.
| PAM 옵션 | 의미 |
|---|---|
| deny=5 | 패스워드 5회 입력 실패 시 계정 잠금. 무차별 대입 공격(Brute Force) 방어 |
| unlock_time=120 | 계정 잠금 후 마지막 실패 시간부터 120초 경과 시 자동 잠금 해제 |
| no_magic_root | root 계정에는 잠금 설정 미적용. root 계정 접근 불가 사태 방지 |
| reset | 로그인 성공 시 이전 실패 횟수 초기화 |
🎯 시험 출제 포인트
- deny=5 = 5회 실패 시 계정 잠금
- unlock_time=120 = 120초 후 자동 해제
- no_magic_root = root는 잠금 제외
- reset = 성공 시 실패 횟수 0으로 초기화
2. 버퍼 오버플로우 방어 심화
| 방어 기법 | 원리 | 핵심 키워드 |
|---|---|---|
| Stack Canary (Stackguard) |
복귀 주소와 변수 사이에 카나리 값 삽입 → 리턴 전 변조 여부 확인 → 변조 시 프로그램 종료 | 카나리 워드(Canary Word) |
| Stack Shield | 함수 시작 시 리턴 주소를 Global RET라는 별도 스택에 저장 → 함수 종료 시 비교 → 다르면 종료 | 리턴 주소 별도 저장 |
| NX bit / DEP | 스택 영역 코드 실행 금지 | No-eXecute |
| ASLR | 실행 시마다 스택·힙·라이브러리 주소 랜덤 배치 | 주소 예측 불가 |
🎯 시험 출제 포인트
- Stackguard = 카나리 워드로 오버플로우 탐지
- Stack Shield = Global RET에 리턴 주소 별도 저장 후 비교
- ASLR 활성화: randomize_va_space = 2
- 스택 오버플로우 대응 3종: ASLR + NX bit + Stack Canary
3. 리눅스 find 명령어 총정리
🔧 현직자 실무 포인트
리눅스 서버 보안 점검의 핵심이 find 명령어입니다. SUID 파일 점검, 소유자 없는 파일 탐색, 월드 라이터블 파일 탐색은 정기 보안 점검 필수 항목입니다. 스크립트로 자동화하여 주기적으로 실행하는 것이 현업 관행입니다.
| find 명령어 | 용도 |
|---|---|
| find / -perm -4000 -print | SUID 설정 파일 탐색 |
| find / -perm -2000 -print | SGID 설정 파일 탐색 |
| find / -perm -1000 -print | Sticky Bit 설정 파일 탐색 |
| find / -user root -perm -4000 -print | 소유자가 root인 SUID 파일 탐색 (위험) |
| find / -nouser -print | 소유자 없는 파일 탐색 (삭제된 계정 잔존 파일) |
| find / -type f -perm -2 -print | 월드 라이터블(모든 사용자 쓰기 가능) 파일 탐색 |
| find / -mtime -7 | 최근 7일 이내 수정된 파일 탐색 |
| find / -mtime -10 -print > 파일명 | 최근 10일 이내 수정 파일 → 결과 저장 |
| find / -type f | 정규 파일만 탐색 |
| find / -type d | 디렉터리만 탐색 |
| find / -type l | 심볼릭 링크만 탐색 |
| find / -xdev | 현재 파일시스템만 탐색 (마운트된 다른 파티션 제외) |
🔢 find -perm 옵션 숫자 요약
SUID = 4000 / SGID = 2000 / Sticky Bit = 1000
월드 라이터블 = -2 (기타 사용자 쓰기 권한)
Sticky Bit + 777 = 1777 (예: /tmp 디렉터리)
🎯 시험 출제 포인트
- 소유자 없는 파일: find / -nouser
- 월드 라이터블: find / -type f -perm -2
- 최근 수정 파일: find / -mtime -N (N일 미만)
- 다른 파일시스템 제외: -xdev
- 정규 파일: -type f / 디렉터리: -type d / 심볼릭 링크: -type l
- root SUID 파일: find / -user root -perm -4000
4. 패스워드 정책 심화
| login.defs 설정 항목 | 의미 | 권장값 |
|---|---|---|
| PASS_MAX_DAYS | 패스워드 최대 사용 기간 | 90일 이하 |
| PASS_MIN_DAYS | 패스워드 최소 사용 기간 | 1일 이상 |
| PASS_MIN_LEN | 패스워드 최소 길이 | 8자 이상 |
| PASS_WARN_AGE | 만료 전 경고 일수 | 7일 권장 |
| 운영체제 | 패스워드 정책 파일 경로 |
|---|---|
| Linux | /etc/login.defs |
| Solaris | /etc/default/passwd |
| AIX | /etc/security/user |
| HP-UX | /etc/default/security |
| 윈도우 패스워드 정책 | 권장 설정 |
|---|---|
| 최근 암호 기억 | 4개 이상 — 이전 패스워드 재사용 방지 |
| 해독 가능한 암호화 사용 | 사용 안 함 — 복호화 가능 저장은 보안 위협 |
| 암호 복잡도 요구사항 | 사용 — 영문+숫자+특수문자 조합 |
🎯 시험 출제 포인트
- PASS_MAX_DAYS = 90일 이하 / PASS_MIN_DAYS = 1일 이상 / PASS_MIN_LEN = 8자 이상
- 리눅스 정책 파일: /etc/login.defs
- shadow 날짜: 1970년 1월 1일 기준 경과 일수(Unix Epoch)
- passwd -l = 잠금 / passwd -u = 해제
- 윈도우 최근 암호 기억: 4개 이상
- 해독 가능한 암호화: 사용 안 함
5. 리눅스 보안 설정 심화
⚠️ 주요 보안 위협 경로
crontab 악용 — /etc/crontab 또는 /etc/cron.d에 악성 명령 등록 시 지속성(Persistence) 유지. 주기적 확인 필요.
윈도우 Run 레지스트리 키 — HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run 에 악성코드 등록 시 부팅마다 자동 실행.
/etc/services — 서비스명↔포트번호 매핑 파일. 비표준 서비스 등록 여부 확인.
🎯 시험 출제 포인트
- .rhosts = 패스워드 없는 원격 접속 허용 → 보안 위협
- PATH 앞에 점(.) = 현재 디렉터리 악성파일 우선 실행 → 맨 뒤로 이동 또는 제거
- crontab 위치: /etc/crontab, /etc/cron.d
- 윈도우 자동실행 레지스트리: HKLM\…\CurrentVersion\Run
- SUID+SGID 동시 제거: chmod -s 파일명
- 레이스 컨디션 대응: 임시파일 자제 / 동일파일 쓰기 금지 / 심볼릭 링크 차단
6. 침해사고 대응 명령어
🔧 현직자 실무 포인트
침해사고 발생 시 초동 대응 순서: ps aux(프로세스) → netstat -an(연결 상태) → lsof -i(열린 소켓) → last/lastb(로그인 기록) → find(변조 파일) 순으로 확인합니다.
| 명령어 | 용도 및 주요 옵션 |
|---|---|
| ps aux | 현재 실행 중인 모든 프로세스 목록 확인. 악성 프로세스 탐지 |
| top | CPU·메모리 실시간 모니터링. 비정상 자원 사용 프로세스 탐지 |
| netstat -an | 모든 포트와 연결 상태 확인. LISTEN=열린 포트, ESTABLISHED=연결 중 |
| lsof -i | 네트워크 연결 상태 확인. List Open Files (네트워크 소켓 포함) |
| strace -p PID | 특정 프로세스의 시스템 콜 추적. 트로이목마 탐지에 활용 |
| /var/log/secure | SSH 로그인 시도·성공·실패, su 명령 사용 내역 (인증 로그) |
| /etc/syslog.conf /etc/rsyslog.conf |
syslog 설정 파일. 어떤 로그를 어디에 저장할지 정의 |
| eventvwr.msc | 윈도우 이벤트 뷰어 실행. 이벤트 로그 최대 크기 설정 |
📋 inetd vs xinetd
inetd — 슈퍼 데몬. /etc/inetd.conf에서 네트워크 서비스와 포트 연결 관리
xinetd — inetd의 확장 버전. 접근 제어·로깅·서비스별 설정 파일(/etc/xinetd.d/) 지원
TCP Wrapper(tcpd) 적용 시 inetd.conf에서 서비스 실행 경로 앞에 tcpd 삽입
🎯 시험 출제 포인트
- 악성 프로세스 확인: ps, top
- 열린 포트 확인: netstat -an
- 인증 로그: /var/log/secure
- syslog 설정: /etc/syslog.conf 또는 /etc/rsyslog.conf
- 이벤트 뷰어: eventvwr.msc
- 이벤트 ID 4285 = 로그온 성공 / 4250 = 로그온 실패
7. 디지털 포렌식
🔧 현직자 실무 포인트
정보보안기사 시험뿐 아니라 침해사고분석대응 파트의 핵심입니다. 현업에서 디지털 포렌식은 법적 증거 효력을 위해 무결성 유지와 Chain of Custody 문서화가 필수입니다. 휘발성 데이터(RAM)는 전원이 꺼지면 사라지므로 반드시 먼저 수집합니다.
| 포렌식 원칙 | 설명 |
|---|---|
| 무결성 원칙 | 증거 수집 과정에서 원본이 변조되지 않았음을 보장. 해시값(MD5/SHA-256)으로 수집 전후 검증 |
| 연계 보관성 (Chain of Custody) |
증거 수집 후 누가·언제·어디서·어떻게 취급했는지 전 과정 기록. 법적 증거 효력의 핵심 |
| 휘발성 데이터 우선 | 전원 차단 시 사라지는 RAM 데이터(프로세스·네트워크 연결·암호화 키 등) 먼저 수집 |
| 구분 | 휘발성 데이터 | 비휘발성 데이터 |
|---|---|---|
| 저장 위치 | RAM (메모리) | HDD·SSD (디스크) |
| 전원 차단 시 | 사라짐 | 유지됨 |
| 수집 순서 | 먼저 수집 | 이후 수집 |
| 예시 | 실행 중 프로세스, 네트워크 연결, 암호화 키 | 파일 시스템, 로그, 레지스트리 |
🎯 시험 출제 포인트
- 포렌식 최우선 원칙: 무결성 (해시값으로 검증)
- 증거 취급 기록: Chain of Custody (연계 보관성)
- 휘발성 vs 비휘발성: 휘발성(RAM) 먼저 수집
- 휘발성 데이터 = 전원 차단 시 소멸 / 비휘발성 = 디스크에 유지
8. 악성코드 분석 기법
🎯 시험 출제 포인트
- 정적 분석 = 실행 없이 코드 분석 (디스어셈블러)
- 동적 분석 = 실제 실행하며 행위 관찰 (샌드박스)
- 폴리모픽 = 실행 시마다 코드 변형 → 시그니처 우회
- 패커 = 압축·암호화로 탐지 회피 → 실행 시 언패킹
- 시그니처 기반 한계 = 신종·변종 탐지 불가
9. 보안 관리 원칙
| 개념 | 설명 |
|---|---|
| 최소 권한 원칙 | 사용자·프로세스에게 업무 수행에 필요한 최소한의 권한만 부여. 침해 시 피해 범위 최소화 |
| RPO (복구 목표 시점) |
Recovery Point Objective. 데이터를 얼마나 최신 상태로 복구할 수 있는지. “어느 시점까지의 데이터를 복구하는가” |
| RTO (복구 목표 시간) |
Recovery Time Objective. 장애 발생 후 얼마나 빨리 시스템을 복구할 수 있는지. “얼마만에 복구하는가” |
| 보안 분류 | 예시 | 특징 |
|---|---|---|
| 기술적 보안 | 방화벽, IDS/IPS, 암호화 | 기술 수단으로 위협 차단 |
| 관리적 보안 | 보안 정책 수립, 교육·훈련 | 절차·규정으로 보안 강화 |
| 물리적 보안 | 출입 통제, CCTV, 잠금장치 | 물리적 접근 제어 |
🎯 시험 출제 포인트
- 최소 권한 원칙 = 업무에 필요한 최소한의 권한만 부여
- RPO = 복구 목표 시점 (데이터 기준) / RTO = 복구 목표 시간 (속도 기준)
- 정보보안 3대 분류: 기술적(방화벽) / 관리적(정책) / 물리적(출입통제)
- 패치 관리 = 알려진 취약점을 악용한 공격 방어
10. 📌 시스템보안 1-1 ~ 1-3 전체 최종 요약
🎯 시스템보안 전 범위 — 절대 암기 포인트
- 보안 로그=로그온·계정관리 / 시스템 로그=시작·종료·원격데스크탑 / Vista 이상: .evtx
- 감사 정책 경로: secpol.msc / 이벤트 뷰어: eventvwr.msc
- passwd 권한 644 / shadow 권한 400 이하 / shadow형식: $ID$Salt$Hash
- umask 022 → 파일 644 / 디렉터리 755
- SUID=4000(s) / SGID=2000(s) / Sticky=1000(t) / 1777=/tmp
- find / -perm -4000 = SUID / -nouser = 소유자 없는 파일 / -perm -2 = 월드 라이터블
- PAM 모듈: auth/account/password/session
- requisite=즉시 거부 / required=마지막 거부 / sufficient=즉시 허용
- deny=5 / unlock_time=120 / no_magic_root / reset
- TCP Wrapper: hosts.allow → hosts.deny / 적용 데몬: tcpd
- wtmp→last / utmp→who,w / btmp→lastb / acct→lastcomm
- MAC Time: mtime=내용수정 / atime=접근 / ctime=속성변경
- Stackguard=카나리워드 / StackShield=Global RET 별도저장 / ASLR=randomize_va_space=2
- 정적 분석=실행 없이 코드 분석 / 동적 분석=샌드박스에서 실행 관찰
- 포렌식: 무결성 → Chain of Custody → 휘발성 먼저 수집
- Bell-LaPadula=기밀성(NoReadUp/NoWriteDown) / Biba=무결성(NoWriteUp/NoReadDown)
- RPO=복구 목표 시점(데이터) / RTO=복구 목표 시간(속도)
- 3대 보안: 기술적(방화벽)/관리적(정책)/물리적(출입통제)

