← 홈🖥️ 1. 시스템 보안

🖥️ 1과목 · 시스템 보안#

W1 (8/14~8/21) 진도 · 필기 20문항 · 실기 비중 높음 🔑 = 실기 직결 (답안카드 후보)


📑 목차#

  1. 운영체제 기본
  2. 리눅스 계정 관리 🔑
  3. 파일 권한 🔑
  4. 파일시스템·디렉토리
  5. 리눅스 로그 🔑
  6. 부팅·프로세스·스케줄러
  7. PAM·접근통제 🔑
  8. 윈도우 보안 🔑
  9. 악성코드 🔑
  10. 시스템 공격 기법 🔑
  11. 보안 도구·솔루션
  12. 클라우드·가상화 보안
  13. 빈출 암기표

1. 운영체제 기본#

OS의 4대 관리 기능 — 프로세스 / 메모리 / 파일 / 장치

개념 내용
커널 구조 모놀리식(성능↑, 안정성↓) vs 마이크로커널(모듈화, 안정성↑)
보호 링 Ring 0 = 커널 모드, Ring 3 = 사용자 모드. 링 간 이동은 시스템 콜
프로세스 메모리 위→아래: 스택 ↓ / (빈 공간) / ↑ / 데이터(BSS) / 코드(텍스트)

스택은 높은 주소 → 낮은 주소로 자란다. 이게 버퍼 오버플로우로 리턴주소를 덮을 수 있는 이유다.


2. 리눅스 계정 관리 🔑#

/etc/passwd — 7필드#

root : x : 0 : 0 : root : /root : /bin/bash
 ①    ②   ③   ④    ⑤      ⑥        ⑦
# 필드 비고
사용자명
패스워드 x = shadow 사용 중 (여기 해시가 있으면 취약)
UID 0 = root. UID 0이 여러 개면 백도어 계정 의심
GID
설명(comment)
홈 디렉토리
로그인 셸 /sbin/nologin, /bin/false = 로그인 차단

💡 TIP

점검 포인트: UID가 0인 계정이 root 외에 있는가? 불필요한 계정(lp, sync, shutdown 등)의 셸이 nologin인가?

/etc/shadow — 9필드 🔑#

root : $6$xyz... : 19000 : 0 : 99999 : 7 : : :
 ①        ②         ③     ④    ⑤     ⑥ ⑦ ⑧ ⑨
# 필드 비고
사용자명
암호화된 패스워드 $1=MD5, $5=SHA-256, $6=SHA-512 · * 또는 ! = 잠김 · 빈칸 = 패스워드 없음(위험)
마지막 변경일 1970-01-01부터의 일수
최소 사용일 변경 후 이 기간엔 재변경 불가
최대 사용일 만료 주기
경고일 만료 며칠 전부터 경고
비활성일 만료 후 유예
계정 만료일
예약

/etc/group#

wheel : x : 10 : user1,user2
 그룹명  비번  GID   멤버

계정 명령#

명령 용도
useradd / usermod / userdel 생성·수정·삭제
passwd 패스워드 변경
chage 패스워드 만료 정책 (chage -l user)
su / sudo 사용자 전환 / 권한 위임

3. 파일 권한 🔑#

기본 권한#

기호 숫자 파일 디렉토리
r 4 읽기 목록 조회(ls)
w 2 쓰기 생성·삭제
x 1 실행 진입(cd)

rwxr-xr-- = 754

특수 권한 🔑 (실기 최빈출)#

권한 숫자 표시 의미
SUID 4000 rws------ 실행 시 소유자 권한으로 동작 → 권한상승 위험
SGID 2000 ---rws--- 실행 시 그룹 권한으로 동작
Sticky 1000 drwxrwxrwt 디렉토리에서 소유자만 삭제 가능 (/tmp)

대문자 S/T = 실행 권한(x)이 없는 상태에서 특수권한만 설정됨

SUID 파일 탐색 명령 🔑

find / -perm -4000 -type f 2>/dev/null      # SUID
find / -perm -2000 -type f 2>/dev/null      # SGID
find / -perm -6000 -type f 2>/dev/null      # SUID+SGID
find / -nouser -o -nogroup 2>/dev/null      # 소유자 없는 파일

umask 🔑#

파일 = 666 − umask, 디렉토리 = 777 − umask

umask 파일 디렉토리
022 (기본) 644 755
027 (권장) 640 750
077 600 700

파일 기본값이 777이 아니라 666인 이유: 새로 만든 파일에 실행 권한을 주지 않기 위해.

기타 권한 명령#

명령 용도
chmod / chown / chgrp 권한·소유자·그룹 변경
chattr +i 불변(immutable) 속성 → root도 수정 불가. 로그 보호에 사용
lsattr 확장 속성 확인
setfacl / getfacl ACL 세부 권한

4. 파일시스템·디렉토리#

디렉토리 용도
/bin /sbin 필수 명령 / 관리자 명령
/etc 설정 파일
/var 로그·스풀 등 가변 데이터
/usr 사용자 프로그램
/tmp 임시 (Sticky bit)
/proc 커널·프로세스 정보 (가상 파일시스템)
/dev 장치 파일

inode 🔑#

파일의 메타데이터를 담는 구조체.

링크 특징
하드 링크 같은 inode를 가리킴. 파일시스템 넘을 수 없음, 디렉토리 불가
심볼릭 링크 경로를 가리키는 별도 파일(inode 다름). 파일시스템 넘기 가능

마운트 설정: /etc/fstabnosuid, noexec, nodev 옵션으로 하드닝


5. 리눅스 로그 🔑#

실기 단답형 최빈출 구간. 파일-명령-내용 3개를 세트로 외운다.

로그 경로 조회 명령 내용
utmp /var/run/utmp who, w 현재 로그인 중인 사용자
wtmp /var/log/wtmp last 로그인/로그아웃 성공 이력, 재부팅
btmp /var/log/btmp lastb 로그인 실패 이력
lastlog /var/log/lastlog lastlog 사용자별 마지막 로그인
secure /var/log/secure (텍스트) 인증·su·sudo·SSH (RedHat 계열)
auth.log /var/log/auth.log (텍스트) 위와 동일 (Debian 계열)
messages /var/log/messages (텍스트) 일반 시스템 메시지
sulog /var/log/sulog (텍스트) su 명령 사용
pacct/acct /var/log/pacct lastcomm 사용자별 명령 실행 이력
xferlog /var/log/xferlog (텍스트) FTP 파일 전송
history ~/.bash_history history 셸 명령 이력

📌 중요

utmp/wtmp/btmp/lastlog는 바이너리 파일이라 cat으로 못 본다 → 전용 명령 필요. 이게 그대로 문제로 나온다.

syslog#

우선순위 8단계 (높음 → 낮음)

0 1 2 3 4 5 6 7
emerg alert crit err warning notice info debug

6. 부팅·프로세스·스케줄러#

부팅 순서#

BIOS/UEFI → MBR(부트로더 GRUB) → 커널 로드 → init/systemd → 런레벨 서비스

런레벨#

0 1 2 3 4 5 6
종료 단일 사용자 다중(NFS X) 텍스트 다중 미사용 GUI 재부팅

런레벨 1(single user)은 패스워드 없이 root 진입이 가능 → GRUB 패스워드 설정이 대응책

프로세스 명령#

ps · top · kill · nice/renice · pstree · lsof · netstat -antp

스케줄러 🔑#

항목 cron at
용도 주기적 반복 1회성
설정 /etc/crontab, crontab -e at 시각
접근제어 /etc/cron.allow, /etc/cron.deny /etc/at.allow, /etc/at.deny

crontab 5필드: 분(0-59) 시(0-23) 일(1-31) 월(1-12) 요일(0-7)

allow 파일이 있으면 거기 있는 사용자만 허용. allow가 없고 deny만 있으면 deny 외 전부 허용.


7. PAM·접근통제 🔑#

PAM (Pluggable Authentication Module)#

유형 역할
auth 인증 (패스워드 확인)
account 계정 유효성 (만료·시간 제한)
password 패스워드 변경 정책
session 세션 시작·종료 처리

TCP Wrapper 🔑#

호스트 기반 접근 통제. /etc/hosts.allow/etc/hosts.deny 순서로 검사, 둘 다 없으면 허용.

# /etc/hosts.deny
ALL : ALL

# /etc/hosts.allow
sshd : 192.168.0.

순서가 그대로 문제로 나온다. allow 먼저, deny 나중, 없으면 허용.


8. 윈도우 보안 🔑#

인증 구조#

구성요소 역할
SAM 계정·패스워드 해시 저장 (C:\Windows\System32\config\SAM)
LSA 로컬 보안 정책·인증 처리, SRM에 SID 전달
SRM 접근 허용/거부 결정, SID 부여, 감사 로그 생성

인증 프로토콜 발전: LM → NTLM → NTLMv2 → Kerberos(Active Directory 기본)

SID 구조#

S-1-5-21-<도메인>-<RID>
RID 계정
500 Administrator
501 Guest
1000~ 일반 사용자

레지스트리 5개 루트키#

내용
HKCR (Classes Root) 파일 확장자 연결
HKCU (Current User) 현재 로그인 사용자 설정
HKLM (Local Machine) 시스템 전역 설정 ← 악성코드 주 타겟
HKU (Users) 모든 사용자 프로필
HKCC (Current Config) 현재 하드웨어 프로파일

자동실행 등록 위치 🔑 HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

파일시스템#

FAT32 NTFS
권한(ACL)
암호화 ✅ EFS
저널링
대용량 4GB 제한

ADS (Alternate Data Stream) 🔑 — NTFS의 대체 데이터 스트림. file.txt:hidden.exe 형태로 데이터 은닉에 악용.

이벤트 로그 🔑 (실기 단답 단골)#

로그 종류: 응용 프로그램 / 보안 / 시스템

이벤트 ID 의미
4624 로그온 성공
4625 로그온 실패
4634 로그오프
4672 특수 권한 할당 (관리자 로그온)
4720 사용자 계정 생성
4726 사용자 계정 삭제
4688 새 프로세스 생성
1102 감사 로그 삭제 ← 침해 흔적

로그온 유형

2 3 4 5 10
대화식 네트워크 배치 서비스 원격 대화식(RDP)

공유 폴더#


9. 악성코드 🔑#

유형 숙주 자기복제 특징
바이러스 필요 숙주 파일에 기생
불필요 네트워크로 스스로 전파
트로이목마 정상 프로그램으로 위장
스파이웨어 정보 수집·유출
랜섬웨어 파일 암호화 후 금전 요구
루트킷 관리자 권한 + 자신을 은닉
백도어 인증을 우회하는 통로
논리폭탄 특정 조건 충족 시 동작
애드웨어 광고 노출

바이러스 vs 웜의 핵심 차이 = 숙주 필요 여부 + 자가 전파 여부. 매년 나온다.

바이러스 세대#

원시형 → 암호화형은폐형(스텔스)갑옷형 → 매크로

APT (지능형 지속 위협)#

특정 표적을 정해 장기간 잠복하며 단계적으로 침투. 스피어피싱·워터링홀이 초기 침투 수단.

탐지 기법#

기법 원리 한계
시그니처 기반 알려진 패턴 매칭 신종·변종 탐지 불가
휴리스틱 코드 구조 분석 오탐
행위 기반 실행 중 행동 감시 성능 부하
샌드박스 격리 환경에서 실행 우회 기법 존재

10. 시스템 공격 기법 🔑#

버퍼 오버플로우 (최빈출)#

원리: 버퍼 크기 검증 없이 데이터를 복사 → 인접 메모리 침범 → 스택의 리턴 주소(RET)를 셸코드 주소로 덮어씀 → 프로그램 흐름 탈취

종류 위치
스택 오버플로우 지역변수 영역 → RET 덮어쓰기
힙 오버플로우 동적 할당 영역 → 함수 포인터 변조

취약 함수 🔑 — strcpy strcat sprintf gets scanf 안전 함수strncpy strncat snprintf fgets

대응방안 🔑

대응 원리
스택가드(Canary) RET 앞에 난수를 두고 변조 여부 검사
스택쉴드 RET 복사본을 별도 저장 후 비교
ASLR 주소 공간 무작위 배치 → 주소 예측 불가
DEP / NX bit 데이터 영역 실행 권한 제거
안전한 함수 사용 길이 제한 함수로 대체

포맷 스트링#

printf(input) 처럼 포맷 지정자 없이 사용자 입력을 넘김 → %x로 메모리 읽기, %n으로 메모리 쓰기 대응: printf("%s", input) 형태로 포맷 문자열 명시

레이스 컨디션 (TOCTOU)#

원리: SUID 프로그램이 임시파일을 만드는 찰나에 심볼릭 링크로 교체 → 권한으로 원하는 파일 조작 대응: O_EXCL 플래그로 원자적 생성, 임시파일 권한 최소화, 파일 검사와 사용 사이 간격 제거

패스워드 크래킹#

기법 내용
사전 공격 단어 목록 대입
무차별 대입 전수 조사
레인보우 테이블 미리 계산된 해시 표

대응: 솔트(salt) 추가 → 같은 패스워드도 다른 해시가 되어 레인보우 테이블 무력화. 반복 해싱(key stretching).


11. 보안 도구·솔루션#

도구 용도
Tripwire / AIDE 파일 무결성 검사 (해시 DB와 비교)
TCP Wrapper 호스트 기반 접근 통제
chroot 루트 디렉토리 격리 (탈출 기법 존재)
sudo 권한 위임 — /etc/sudoers, **visudo**로 편집
SELinux / AppArmor MAC(강제적 접근통제) 구현
John the Ripper 패스워드 취약성 점검
rkhunter / chkrootkit 루트킷 탐지
Nessus / OpenVAS 취약점 스캐너
Bastille 리눅스 하드닝 자동화

접근통제 모델 (정보보안일반과 겹침)#

모델 결정 주체
DAC 임의적 소유자가 권한 부여 (일반 리눅스 권한)
MAC 강제적 시스템(보안등급) 이 강제 (SELinux)
RBAC 역할기반 역할에 권한 부여

12. 클라우드·가상화 보안#

책임 공유 모델

모델 사용자 책임 범위
IaaS OS, 미들웨어, 앱, 데이터 (가장 넓음)
PaaS 앱, 데이터
SaaS 데이터, 접근 관리 (가장 좁음)

하이퍼바이저

Type 1 (베어메탈) Type 2 (호스트형)
하드웨어 위에 직접 호스트 OS 위에서 동작
ESXi, Hyper-V, Xen VirtualBox, VMware Workstation

주요 위협: VM Escape(게스트→호스트 탈출), VM 간 정보 유출, 스노트/컨테이너 이스케이프 솔루션 약어: CASB(클라우드 접근 보안 중개), CSPM(설정 오류 관리), CWPP(워크로드 보호)


13. 빈출 암기표#

출퇴근길 마지막 5분에 이것만 훑어도 된다.

숫자#

항목
SUID / SGID / Sticky 4000 / 2000 / 1000
umask 기본 022 → 파일 644, 디렉토리 755
파일 기본 권한 계산 666 − umask
디렉토리 기본 권한 계산 777 − umask
root UID 0
Administrator / Guest RID 500 / 501
syslog 우선순위 emerg(0) ~ debug(7)

로그 매핑#

무엇을 볼 때 파일 명령
현재 접속자 utmp who, w
로그인 성공 이력 wtmp last
로그인 실패 이력 btmp lastb
마지막 로그인 lastlog lastlog
명령 실행 이력 pacct lastcomm
FTP 전송 xferlog

윈도우 이벤트 ID#

4624 4625 4672 4720 1102
로그온 성공 로그온 실패 특수권한 계정생성 로그삭제

명령 한 줄#

find / -perm -4000 -type f 2>/dev/null   # SUID 파일 탐색
chage -l username                         # 패스워드 만료 정책 확인
lastb | head -20                          # 로그인 실패 이력
chattr +i /var/log/secure                 # 로그 파일 불변 설정
netstat -antp                             # 열린 포트 + 프로세스

✅ 이 과목 카드 후보 (목표 50장)#

서술형 카드 (15장) 단답 카드 (35장)
버퍼 오버플로우 passwd/shadow 각 필드
레이스 컨디션 SUID/SGID/Sticky 숫자·의미
루트킷 umask 계산
랜섬웨어 로그 파일 6종 + 명령
APT 윈도우 이벤트 ID 5종
SUID 권한상승 런레벨 0~6
포맷 스트링 레지스트리 루트키 5종
패스워드 크래킹·솔트 SID / RID
무결성 검사(Tripwire) inode 포함/미포함 항목
TCP Wrapper PAM 모듈 유형 4종
접근통제 모델 DAC/MAC/RBAC 취약 함수 5종
악성코드 유형 구분 ADS
VM Escape 하이퍼바이저 Type1/2
클라우드 책임 공유 모델 cron/at 접근제어 파일
계정 잠금 정책(PAM) syslog 우선순위
정보보안기사 2026년 제4회 대비 · 필기 9/19(토) · 실기 11/14(토)
문서 원본은 docs/ 폴더의 마크다운입니다.