ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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
Designed by Tistory.