정보보안기사 | 시스템보안 핵심 정리 (1-3편)

정보보안기사 | 시스템보안 핵심 정리 (1-3편)

🛡️ 정보보안기사 | 시스템보안 핵심 정리 (1-3편)

PAM 세부 옵션 · 버퍼 오버플로우 방어 심화 · find 명령어 총정리 · 패스워드 정책 · 디지털 포렌식 · 악성코드 분석까지
시스템보안 전 범위 마지막 편을 완벽 정리합니다.

#정보보안기사 #시스템보안 #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 실행 시마다 스택·힙·라이브러리 주소 랜덤 배치 주소 예측 불가
Q 리눅스에서 ASLR을 활성화하는 커널 파라미터 명령어는?
→ echo 2 > /proc/sys/kernel/randomize_va_space 0 = 비활성화 / 1 = 힙 제외 랜덤 / 2 = 전체 랜덤(권장)

🎯 시험 출제 포인트

  • 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
Q /etc/passwd 패스워드 필드의 x가 의미하는 것은?
→ Shadow 패스워드 정책 사용 중 — 실제 해시값은 /etc/shadow에 저장빈 값이면 패스워드 없는 계정. x가 아닌 다른 값이 있으면 보안 이상 의심.
Q shadow 파일 $ID 필드의 의미는?
→ 해시 알고리즘 식별자. $1=MD5 / $6=SHA-512형식: $알고리즘ID$Salt$해시값. 현재 권장은 $6(SHA-512)입니다.
Q pwconv / pwunconv 차이는?
→ pwconv = shadow 패스워드 정책으로 전환 / pwunconv = 일반 passwd 방식으로 복원pwconv 실행 후 패스워드가 /etc/shadow에 분리 저장됩니다.
Q 계정 잠금·해제 명령어는?
→ 잠금: passwd -l 계정명 / 해제: passwd -u 계정명-l = lock(소문자 L) / -u = unlock. shadow 파일의 패스워드 필드 앞에 ! 추가로 잠금 표시.
윈도우 패스워드 정책 권장 설정
최근 암호 기억 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. 리눅스 보안 설정 심화

Q .rhosts 파일의 보안 위협은?
→ 등록된 호스트에서 패스워드 없이 원격 접속 가능rlogin, rsh 등 r계열 서비스에서 사용. 패스워드 인증 우회 위험. 파일 삭제 또는 r계열 서비스 차단 권장.
Q PATH 환경변수에 점(.)이 맨 앞에 있으면 왜 위험한가?
→ 현재 디렉터리에 같은 이름의 악성 파일이 시스템 명령보다 먼저 실행될 수 있음예: ls라는 이름의 악성 파일을 현재 디렉터리에 놓으면 관리자가 ls 입력 시 악성 파일 실행. 점은 PATH 맨 뒤 또는 제거 권장.
Q ls -l 명령어 출력 필드 순서는?
→ 파일종류+권한 / 하드링크수 / 소유주 / 소유그룹 / 크기 / 수정일 / 수정시간 / 파일명예: -rwxr-xr-x 2 root root 4096 Jan 1 12:00 filename
Q NetBIOS TCP/IP 바인딩이 취약한 이유는?
→ 인터넷 직접 연결 시 외부 공격자가 네트워크 공유자원에 접근 가능비활성화 방법: ncpa.cpl → TCP/IPv4 속성 → WINS 탭 → NetBIOS 비활성화

⚠️ 주요 보안 위협 경로

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. 악성코드 분석 기법

실행 없이 코드 분석
🔍 정적 분석 (Static)
디스어셈블러로 코드 역분석. 안전하지만 난독화·패킹 시 어려움. 빠른 초기 판단에 활용.
실행하며 행위 관찰
⚡ 동적 분석 (Dynamic)
샌드박스에서 직접 실행. 네트워크·파일·레지스트리 행위 관찰. 정확하지만 시간 소요.
격리된 가상 환경
📦 샌드박스 (Sandbox)
실제 시스템과 격리된 가상환경에서 악성코드 안전 실행·분석. 실제 시스템 영향 없음.
코드 변형으로 탐지 회피
🦎 폴리모픽 (Polymorphic)
실행 시마다 코드를 변형하여 시그니처 기반 탐지 우회. 행위 기반 탐지로 대응.
압축·암호화로 탐지 회피
📦 패커 (Packer)
악성코드를 압축·암호화하여 분석·탐지 어렵게 함. 실행 시 스스로 언패킹 후 동작.
알려진 악성코드만 탐지
⚠️ 시그니처 기반 한계
신종·변종 악성코드 탐지 불가. 보완: 행위 기반 탐지 + 머신러닝 기반 탐지 병행.

🎯 시험 출제 포인트

  • 정적 분석 = 실행 없이 코드 분석 (디스어셈블러)
  • 동적 분석 = 실제 실행하며 행위 관찰 (샌드박스)
  • 폴리모픽 = 실행 시마다 코드 변형 → 시그니처 우회
  • 패커 = 압축·암호화로 탐지 회피 → 실행 시 언패킹
  • 시그니처 기반 한계 = 신종·변종 탐지 불가

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대 보안: 기술적(방화벽)/관리적(정책)/물리적(출입통제)