1. 한눈에 흐름
2. OS가 하는 일 (기반)
프로세스와 권한
프로그램(파일)이 실행되면 프로세스가 됩니다. 각 프로세스는 보통 자신만의 가상 주소 공간을 갖고, 다른 프로세스 메모리를 마음대로 못 봅니다.
- PID = 그 프로세스의 번호표
- 좀비(Z) = 이미 끝났는데 부모가 종료 상태를 안 거둬서 번호표만 남은 상태.
kill -9로 안 사라짐 → 부모가wait하거나 부모가 죽으면 init이 회수 - SUID = 실행할 때 “나”가 아니라 파일 주인 권한으로 동작. root 소유 + 취약하면 권한 상승 경로
커널 · 프로세스 · 메모리 · 파일시스템
| 축 | 핵심 구조 | 보안 관점 |
|---|---|---|
| 커널/사용자 모드 | 특권 명령과 하드웨어 접근은 커널이 중재 | 시스템 호출 경계와 최소 특권 |
| 프로세스 | 생성→준비→실행→대기→종료, 스케줄러가 CPU 배분 | 권한·PID·부모자식·열린 자원 추적 |
| 가상메모리 | 페이지 단위 주소 변환, 스왑·페이지 교체 | 프로세스 격리, W^X/NX, 민감정보 잔존 |
| 파일시스템 | 디렉터리·inode/MFT·권한·저널 | 소유권, ACL, 무결성, 삭제 후 열린 파일 |
| I/O | 장치 드라이버·버퍼·인터럽트 | 드라이버 취약점은 높은 권한으로 이어질 수 있음 |
교착상태 조건은 상호배제·점유대기·비선점·환형대기입니다. 하나를 깨면 예방할 수 있습니다. 메모리의 내부 단편화는 할당 블록 안의 낭비, 외부 단편화는 빈 공간이 흩어진 상태입니다.
파일 권한 · ACL · sudo
rwx 세 자리(소유자·그룹·기타)는 기본 문. ACL은 “특정 사람만 더 열어 주기” 같은 세분 권한입니다. mask는 그 세분 권한의 상한이지, 보통 파일 소유자(user::)까지 깎지 않습니다.
sudo는 root 전체를 주기보다 필요한 명령만 위임하고 기록을 남기는 도구입니다. NOPASSWD는 편하지만 계정 탈취 시 바로 악용되므로 범위를 좁혀야 합니다.
3. 리눅스 실무 명령 — “무엇을 보려는가”
명령 문항의 함정은 이름 비슷한 도구를 섞는 것입니다. 보고 싶은 대상으로 고르면 됩니다.
| 보고 싶은 것 | 도구 | 한 줄 원리 |
|---|---|---|
| 프로세스·부하 | top / ps | 누가 CPU·메모리를 쓰는지 |
| 디스크 용량 | df | 파일시스템(파티션) 여유 |
| 디렉터리 용량 | du | 폴더별 합산 |
| 디스크 I/O | iostat | 장치 읽기/쓰기 통계 |
| 열린 파일·포트 | lsof | 프로세스 ↔ 파일/소켓 연결 |
| 포트·연결 | ss / netstat | 누가 어떤 포트를 듣는지 |
| 자원 통계 | vmstat | CPU·메모리·스왑 — 포트 매핑 아님 |
lsof -i :80은 “80번을 연 프로세스”를 찾는 것. df/vmstat/chmod는 각각 용량·통계·권한이라 포트 점유자와 무관하다.4. 윈도우 — SAM · LSA · SRM
세 이름은 “같은 파일”이 아니라 역할이 다른 구성 요소입니다.
| 구성 | 풀네임 | 하는 일 |
|---|---|---|
| SAM | Security Accounts Manager | 로컬 계정·암호 해시 등 저장 |
| LSA | Local Security Authority | 로그온·보안 정책 등 인증·정책 처리 |
| SRM | Security Reference Monitor | 토큰 vs 보안설명자로 접근 허용/거부 |
EFS는 파일 단위 암호화(사용자 키). 디스크를 떼어 가도 키가 없으면 자동 복호화되지 않습니다. BitLocker는 볼륨(디스크) 전체 쪽에 가깝습니다.
도메인 환경의 계정·인증 중심은 AD(Active Directory) 쪽입니다. 로컬 SAM과 역할을 섞지 마세요.
5. 메모리 공격과 방어 (심층 방어)
버퍼 오버플로의 고전 흐름: 입력이 스택을 덮어 → 반환 주소를 바꿔 → 공격자 코드로 점프.
| 방어 | 막는 단계 | 한계 |
|---|---|---|
| NX/DEP | 데이터 영역에서 코드 실행 금지 | 기존 코드 재사용(ROP)은 남음 |
| ASLR | 주소 배치를 매번 바꿈 | 주소가 새면 우회 쉬워짐 |
| PIE | 실행 파일도 재배치 → ASLR이 코드까지 | 스택 변조 “탐지”는 안 함 |
| 카나리 | 반환주소 앞 값 변조 탐지 | 다른 경로 공격은 별개 |
| RELRO | GOT 등 덮어쓰기 어렵게 | 힙 버그 전부 차단은 아님 |
6. 가상화 · 컨테이너
VM은 게스트 OS(커널)까지 갖는 두꺼운 격리. 컨테이너는 보통 호스트 커널을 공유하는 가벼운 격리입니다.
privileged + 호스트 루트 마운트는 컨테이너 탈출 시 호스트 장악으로 이어지기 쉽다. “컨테이너라서 안전”이 아니다.| 구성 | 핵심 위험 | 기본 통제 |
|---|---|---|
| 하이퍼바이저/VM | VM escape, 관리면 탈취, 이미지 오염 | 관리망 분리, 패치, 템플릿 무결성, 스냅샷 접근통제 |
| 컨테이너 | 공유 커널, 과도한 capability, 취약 이미지 | rootless, 최소 capability, 서명 이미지, 런타임 정책 |
| 클라우드 | 공개 저장소, 과도한 IAM, 메타데이터·키 노출 | 공유책임 확인, 최소권한, 구성 점검, 키·로그 중앙관리 |
7. 계정 · 인증 · 감사 운영
- 계정 생명주기: 신청·승인 → 발급 → 권한 검토 → 직무변경 조정 → 퇴직 즉시 회수. 공유 계정은 책임추적성을 약화합니다.
- 인증: 비밀번호 정책만으로 끝내지 않고 MFA·잠금·재시도 제한·비상계정 통제를 조합합니다. 해시는
/etc/shadow처럼 일반 계정이 읽기 어려운 곳에 둡니다. - 최소권한: root 직접 로그인보다 개인 계정+
sudo, 서비스 계정은nologin·필요 디렉터리만 접근. - 감사: 로그인 성공/실패, 권한 변경, 특권 명령, 중요 파일·정책 변경을 시간 동기화하여 원격 보존합니다.
Linux 점검 연결: last/lastb(로그인), journalctl(systemd 로그), find(권한·파일), getfacl/setfacl(ACL), systemctl(서비스), rpm -V·패키지 서명(무결성).
Windows는 보안 로그·감사정책, UAC, 로컬/도메인 정책, 레지스트리, 서비스 계정, NTFS 권한을 함께 봅니다. 공유 권한과 NTFS 권한이 함께 적용될 때 실효 권한은 더 제한적인 결과가 됩니다.
8. 위협 · 취약점 · 패치 · 백업
| 위협 | 특징 | 대응 초점 |
|---|---|---|
| 바이러스/웜/트로이목마 | 숙주 필요 / 자기 전파 / 정상 위장 | 실행통제·패치·메일/웹 방어·격리 |
| 루트킷 | 커널·도구를 변조해 흔적 은닉 | 신뢰 가능한 외부 기준선·메모리/디스크 교차분석 |
| 랜섬웨어 | 데이터 암호화·유출 협박 | 최소권한, 망분리, 불변/오프라인 백업, 복구시험 |
| 취약점 악용 | 미패치·오구성·약한 자격증명 | 자산목록→우선순위→시험→패치→재점검 |
9. 서버 보안 · 사고대응
| 서버 | 주요 점검 |
|---|---|
| 웹 | 불필요 메서드/디렉터리 목록 제거, 실행 권한·업로드 경로 분리, TLS, WAF/로그 |
| DB | 업무별 계정·최소권한, 원격관리 제한, 중요정보 암호화, 쿼리·권한 변경 감사 |
| 메일 | 오픈 릴레이 차단, 계정·첨부·스팸 통제, SPF/DKIM/DMARC, 전송 로그 |
| DNS | 재귀 질의와 권한 서버 분리, zone transfer 제한, 캐시·응답률 보호, DNSSEC 검토 |
사고 대응은 준비 → 탐지/분석 → 격리 → 제거 → 복구 → 사후 개선입니다. 휘발성 증거(프로세스·연결·메모리)를 먼저 고려하고, 원본 보존·해시·인수인계 기록으로 증거 연속성을 지킵니다.
10. 헷갈림 짝
| A | B | 차이 |
|---|---|---|
| 좀비 | 고아 | 좀비=종료 미회수 / 고아=부모 없는 살아 있는 자식 |
| SUID | SGID | 소유자 권한 vs 그룹 권한·상속 |
| SAM | AD | 로컬 계정 DB vs 도메인 디렉터리 |
| NX | ROP | 주입 차단 vs 기존 코드 재사용 |
| EFS | BitLocker | 파일(사용자 키) vs 볼륨 암호에 가깝 |
| lsof | vmstat | 열린 객체 매핑 vs 자원 통계 |
| 패치 | 하드닝 | 알려진 결함 수정 vs 불필요 기능·권한 축소 |
| 스냅샷 | 분리 백업 | 빠른 복구 지점 vs 원 시스템 장애·랜섬에서 독립된 사본 |
11. 자가 체크
펼쳐서 답 확인
- 좀비에
kill -9가 안 통하는 이유는? → 이미 종료라 죽일 실행 주체가 없음. 부모 wait 필요. - SUID의 핵심 한 줄? → 실행 시 파일 소유자 권한으로 동작.
- NX만으로 ROP가 불가능한가? → 아니오. 기존 코드 재사용.
- SAM과 LSA 차이는? → 저장소 vs 인증·정책 처리.
- 포트 80 점유 프로세스? → lsof -i :80 또는 ss.
- 컨테이너가 VM보다 위험한 공유 자원은? → 호스트 커널.
- 취약점 조치 우선순위의 네 축은? → 악용 가능성·노출·자산 영향·현재 통제.
- 백업 존재만으로 충분한가? → 아니오. 분리·불변성·복구시험 필요.