이 글의 목차
시스템 보안이 무엇인가?
몇달 전 정보보안기사 시험을 치렀다. 시험 당일 이틀 전부터 부랴부랴 기출문제만 보기 시작했고 당연히 시험에 불합격했다. 지금은 다음 시험 일정까지 시간이 한달 정도 남았으니, 단순히 외우는 방식보다 천천히 먼저 개념의 구조를 잡고 싶었다. 문제부터 풀면 나중에 개념이 뒤섞인다는 걸 이전 공부에서 경험했기 때문이다.
그래서 궁금해졌다. 시스템 보안의 정의가 어떻게 되는가? 의미하는 바가 무엇인가? 알아보고자 한다.
1. 시스템이란 무엇인가
기출 문제만 보니, 단순히 OS에 대한 출제 비중이 높아서 처음엔 시스템 보안은 OS 보안인가? 처럼 느껴졌다. 이어서 내 사고 흐름은 그러면 시스템은 OS 인가? 라는 생각이 들었다. 시스템 보안 = OS 보안 의 시선으로 볼 수 도 있겠지만 시스템은 OS가 아니다.
시스템은 하드웨어 + OS + 애플리케이션이다. 여러 요소가 모여 하나의 목적을 수행하는 구조 전체를 시스템이라고 부른다.
2. OS는 중재자다
OS는 시스템의 전부가 아니다. 하드웨어와 애플리케이션 사이에서 중재하는 소프트웨어다.
애플리케이션
↕
OS ← 중재자, 자원 관리자
↕
하드웨어
계산기 앱이 “2 + 3"을 계산할 때 CPU가 연산한다. 그런데 계산기 앱이 CPU에 직접 요청하지 못한다. OS에게 요청하면 OS가 CPU에 전달한다.
계산기 앱이 "2+3 계산해줘" 요청
↓
OS가 받아서
↓
CPU에 전달
↓
결과를 다시 OS가 받아서
↓
계산기 앱에 돌려줌
모든 앱이 하드웨어에 직접 접근할 수 있으면 통제가 불가능하다. OS가 중간에서 “이 앱은 이 자원까지만 접근 가능"이라고 통제하기 때문에 보안이 성립한다.
3. OS가 관리하는 자원
중재자 역할은 OS가 하는 일 중 하나다. OS가 관리하는 자원은 더 넓다.
계정 — 누가 시스템에 접근할 수 있는가
파일 — 데이터가 어디에 어떻게 저장되는가
프로세스 — 어떤 프로그램이 실행되고 있는가
메모리 — 각 프로그램에 얼마나 할당할 것인가
CPU — 어떤 프로그램이 언제 연산할 것인가
시스템 보안이 지키려는 것은 이 자원 전체다.
4. 시스템 보안이란 무엇인가
처음에 “시스템 보안 = OS 보안” 로 볼 수 있다고 했는데,
정확하게는 OS가 관리하는 자원을 지키는 것이다. OS가 중재자이기 때문에 OS를 장악하면 하드웨어 자원도 애플리케이션도 전부 통제할 수 있다. 공격자가 노리는 게 바로 이 지점이다.
5. OS가 없다면
OS가 없으면 애플리케이션이 하드웨어에 직접 접근할 수 있다. 통제하는 중재자가 없으니 뭐든 가능하다. 초창기 컴퓨터가 그랬다. 프로그램이 하드웨어에 직접 접근했고, 통제도 보안도 없었다.
OS 없음 → 애플리케이션이 하드웨어에 직접 접근
→ 통제 불가, 보안 없음
OS 있음 → 애플리케이션은 OS를 통해서만 접근 가능
→ OS가 통제, 보안 성립
공격자가 OS 권한을 얻으려는 이유도 여기 있다. OS 권한을 얻으면 사실상 OS가 없는 것과 같은 상태가 된다.
6. 공격 경로는 하나가 아니다
공격은 애플리케이션 취약점을 통해서만 들어온다고 생각했다. 틀렸다.
애플리케이션 취약점
네트워크 서비스
물리적 접근
계정/권한 탈취
↓
OS 권한 획득
↓
정보 탈취 / 시스템 파괴 / 지속적 장악
경로는 다양하다. 공통점은 하나다. 최종적으로 OS 권한을 얻으려 한다는 것이다. 그리고 OS 권한 획득 자체가 목적이 아니다. 그것도 수단이다. 공격자의 실제 목적은 정보를 훔치거나, 시스템을 파괴하거나, 다음 공격의 발판을 만드는 것이다.
7. OS 권한 없이도 공격은 가능하다
여기서 권한을 두 가지로 나눠야 한다.
OS 권한 (root, Administrator) ← 시스템 전체를 통제
사용자 권한 ← 그 사용자가 접근 가능한 범위만 통제
OS 권한이 없어도 시스템 공격은 가능하다. 단지 범위가 다르다. 랜섬웨어를 예로 들면, 사용자 권한만 있어도 그 사용자의 문서, 사진, 파일은 전부 암호화할 수 있다.
사용자 권한으로 할 수 있는 것
— 그 사용자의 파일 읽기, 암호화, 삭제
— 그 사용자의 프로세스 실행
OS 권한이 있어야 할 수 있는 것
— 시스템 파일 수정
— 다른 사용자의 자원 접근
— 백도어 설치, 로그 삭제
OS 권한 획득은 시스템 공격의 필수 조건이 아니다. 공격의 범위를 넓히는 조건이다. 공격자가 원하는 것이 무엇이냐에 따라 사용자 권한만으로 충분한 경우도 있다.
8. 시스템 보안을 이해하는 두 축
구조를 잡고 나니 시스템 보안 공부가 두 가지로 나뉜다는 게 보였다.
첫 번째 축. 구조 이해
OS가 무엇을 관리하는지 아는 것이다.
- 계정과 권한 — 누가 시스템에 들어올 수 있고 무엇을 할 수 있는가
- 파일과 프로세스 — 시스템 자원이 어떻게 구성되어 있는가
- 로그 — 시스템에서 무슨 일이 일어났는가
두 번째 축. 공격과 방어
구조의 빈틈이 어디인지, 어떻게 막는지 아는 것이다.
- 공격 — 버퍼 오버플로우, 포맷스트링, 레이스컨디션, 악성코드
- 방어 — PAM, TCP Wrapper, iptables, 취약점 점검 도구
9. 결론
구조를 알아야 공격을 이해한다. 공격을 알아야 방어가 납득된다.
이 순서가 무너지면 문제를 풀어도 개념이 쌓이지 않는다. 앞으로 시스템 보안 문제를 풀 때 이 두 축 중 어디에 해당하는 문제인지 먼저 분류하면서 풀 것이다.