다양한 기록

Protection in OS 본문

운영체제보안

Protection in OS

라구넹 2024. 10. 12. 14:13

Protection(보호)

프로세스 또는 사용자가 시스템 및 사용자 자원에 접근하는 것을 제어하는 메커니즘

== 주체의 객체 접근을 제어하는 메커니즘

- 인가된 사용과 비인가된 사용을 구분해야 함

 

*하지만 인가된 사용에서도 실수는 발생할 수 있고

처음부터 의도를 가지고 공격을 할 수도 있음. 전부 보호가 필요

 

보호의 목적

컴퓨터는 오브젝트(파일), 하드웨어, 소프트웨어의 집합

각각의 오브젝트는 유니크한 식별자 가지고 잘 정의된 명령셋을 가지고 접근됨

모든 객체는 인가된 프로세스에의해 정확하게 접근되어야 함

 

* 유니크한 식별자

pid, inode number 등

파일 이름은 이름이 같아보일 순 있는데 절대 경로가 다름

=> 같은 디렉토리에 같은 이름을 가질 수는 없음


OS 보호(프로텍션)의 기본 원리: Separation (분리)

Separation(분리), Isolation(격리)

- 커널 스페이스 vs. 유저 스페이스

- 루트 유저 vs. 노말 유저

    * UID의 분리.. 루트, 노말 유저, 게스트..

    * 관리자만 할 수 있는 거: 애드 유저, 체인지 오너, 시스템 컨트롤, 패키지 설치

- 디스크 파티셔닝

- 홈 디렉토리 분리

    * 사용자들 간 파일 격리/보호

- 프로세스 주소 공간 분리

- 가상 머신

- 웹 포탈에서 이메일 계정 분리

- Fault isolation

 

다양한 종류의 분리

- 물리적인 분리

    * 디바이스 분리 .. CPUs(멀티 코어 프로세서), 프린터, 네트워킹 디바이스

    * 망 분리

    * 자동차의 ECU .. 각 유닛을 역할에 따라 분리

    * 스마트폰은 AP (애플리케이션 프로세서)

 

- 시간 분리

    * 하나의 자원을 시간을 나눠서 사용

 

- 논리적인 분리

    * 도메인, 각 유저는 대상이 자신이 혼자 있다고 생각하게 됨 (자신만의 도메인)

    * 주소 공간 분리, 샌드박싱

    * 커널과 애플리케이션의 가상 주소 공간 분리

    * 각 프로세스 간 주소 공간 분리

 

- 암호학적 분리

    * 데이터를 숨겨서 다른 유저가 이해하지 못하게 함

    * 중요한 데이터는 Hiding

 

샌드박스

프로그램이 실행될 수 있으나 다른 나머지 머신에 영향을 주지 않는 환경

제일 많이 사용되는게 안드로이드 폰.. 애플리케이션이 하나의 샌드박스 안에서 돌아가게 되어 있음

 

PC앱과 모바일 앱 차이

안드로이드 앱이 훨씬 배포하기가 편함

=> 수가 훨씬 많음 => 문제가 생길 여지가 큼

다른 앱을 건들지 못하게 샌드박스화

 

Access Control

프로텍션 중 제일 많이 쓰는 방법 => 액세스 컨트롤 리스트(ACL)

ls -l (inode 정보들을 보여줌)

맨 앞이 파일의 종류를 알려줌

b : 블록 디바이스 (하드 디스크, SSD)

c: 문자 디바이스 (키보드)

l: 심볼릭 링크

p: 파이프

s: 소켓

 

모든 장치는 파일로 추상화


가상 주소 공간

한 프로세스가 참조할 수 있는 주소들의 집합 == 주소 공간

텍스트, 데이터, 스택, 힙

 

텍스트 세그먼트 == 코드 세그먼트 == 리드 온리 코드, 데이터

컴파일된 명령어와 상수가 들어감

 

데이터 세그먼트

- 초기화된 전역변수

- 초기화되지 않은 전역 변수 => BSS

 

동적할당된 데이터

 

스택

지역변수, 리턴 어드레스, 함수에 대한 인자 등

 

커널

32비트 CPU, 리눅스 기준 4기가 중 1기가 차지

 

* 부팅의 역할

디스크에 있는 OS를 메모리에 올리는 것

롬에 있는 부트스트랩 코드가 실행.. 이후 메모리에 상주하는게 커널

왜 상주? 빨리 처리해줘야 하는데 디스크로 내려가면 시간 낭비가 심함


가상화

버추얼 머신 => 호스트 OS 위에 하이퍼바이저가 올라가고 그 위에 게스트 OS

컨테이너 => 호스트 OS 위에서 도커 엔진같은게 돌아감


OS must ..

주체로부터 악용되거나 잘못 사용되는 걸 스스로 지켜야 함

유저들을 다른 유저들로부터 보호해야 함

프로세스들을 다른 프로세스들로부터 지켜야 함

 

OS 특징

특권 레벨 & 메모리 프로텍션이 OS와 프로세스를 유저들로부터 지킴

파일 퍼미션이 자원과 유저들을 다른 유저들로부터 지킴

 

OS 정의

자원 관리자

하드웨어와 유저, 앱 간 인터페이스

 

OS 컴포넌트

프로세스, 메모리, 파일 매니저, I/O 서브 시스템들

 

쉐어링 vs 프로텍션

멀티 유저, 멀티 태스킹

 

Protection in OS

Separation, Isolation (Sanboxing)

 

 

'운영체제보안' 카테고리의 다른 글

Trusted OS  (0) 2024.10.12
Threats and Security Issues related to OS  (0) 2024.10.12
Security Goals  (0) 2024.10.12
Protection & Security  (0) 2024.10.12
운영체제 개요  (0) 2024.10.11