본문 바로가기
  • 시 쓰는 개발자
CS 개념/컴퓨터 보안

컴퓨터 보안 (3) - OS Security 1

by poetDeveloper 2024. 4. 25.

시험공부하며 러프하게 정리한 내용이니, 가볍게 참고만 하시길

 

OS Concepts

 

* Computer Model : I/O - CPU - RAM - HDD

 

* OS Conceps : 멀티 유저, 멀티 프로그램

 

* MultiTasking : CPU 시간 조금씩 쪼개서 여러 유저에게 보여주는 형식

 

* Kernel

- OS의 핵심, HW(CPU, Memory, I/O)를 관리함.

- Hardward - Kernel & 커널 외 OS기능 - Application 이렇게 사이에서 인터페이스 역할 함

 

* I/O

- 키보드, 마우스, 스캐너, 와이파이 인터페이스, 비디오 카메라, USB 포트 등

- OS가 device driver 사용해서 저러한 API(application program interface) 제공함.

 

* System Call

- Hardware와 직접 통신하지 않고, 시스템 콜을 이용해서 커널에게 task 위임하여 HW와 통신함.

 

* Process

- HDD에 있던 프로그램이 메인 메모리로 올라와 프로세스가 됨.

- 하나의 프로그램이 카피되어 여러 프로세스로 실행될 수 있음.

- 프로세스들은 PID값으로 구분함.

 

* File System

- 파일을 계층적으로 구성함. 이를 폴더구조 또는 디렉토리 구조라고 함.

 

* File Permission

- OS가 이 사람이 파일 r, w, x 할 수 있는지 체크함.

- Owner Permission : 오너가 할 수 있는 것

- Group  Permission : 그룹이 할 수 있는 것

- World  Permission : 기본 액세스 부여

 

* Memory Management

- 프로세스는 Segment 단위로 영역을 나눔.

- 세그먼트끼리 섞이면 안됨. 다른 영역 침범도 금지.

 

* Memory Layout

Stack
-
Heap
BSS
Data
Text

각 세그먼트가 포함하는 내용

- Text : 바이너리 머신코드

- Data : 초기화 된 static 변수

- BSS : 초기화 안된 static 변수
- Heap : 동적 세그먼트 공간

- Stack : 서브루틴 처리용

 

* Virtual Memory

- 메모리 부족하지만 충분한 것처럼 착각하게 만듦

- 메모리를 Page 단위로 나눠서 어떤 Page가 메인 메모리에 있고, 어떤 Page는 HDD에 있는지 구분함

 

* Page fault

- 메모리에 없는 가상 주소를 요청했을 때 발생하는 오류

- 오래된 block을 MM에서 빼고, 새로운 block을 HDD에서 가져와 MM에 올려줌.

 

* Virtual Machine

- OS가 달라도 VM 위에 올려두면 프로그램 실행 가능

- 이점 4가지 : HW 효율, 이식성, 보안, 관리


OS Security

 

* 부팅 : OS을 MM에 로드

- BIOS : Basic IO System, 적절한 인증 없이는 부트로더 실행할 수 없게 BIOS 암호가 설정되어 있음.

- Firmware = ROM : ROM에 저장되어 쓰기가 가능한  영구적인 소프트웨어

 

* Hibernation : 최대 절전모드

- 절전시 OS는 메모리 내용을 hibernation 파일에 저장해서 빠르게 복구할 수 있도록 함.

 

* Event Logging : 프로세스 추적하는 로그. 문제 발생시 해결하거나 보안 침해 원인을 파악할 때 사용

 

* Password Security - Salt 방법

- 가장 간단하게 공격하는 방법은 사전에 있는 값을 다 넣는 것임. 50만개정도라서 하나는 얻어걸림

- password Salt : pw에 임의의 문자열을 더해서 보안을 강화하는 방법. 해시값 낼 때 salt친 값으로 냄.

- Salt화된 Pw에 대해 공격하는 경우의 수는 다음과 같다.

   B : Salt 비트 수

   D : 단어 수 (공격할 pw 후보)

   salt화 된 pw 공격 횟수 = (2^B) * D

ex) 만약 Salt가 32bit, pw 공격 후보는 사전(50만개)이라면 공격 횟수 = (2^32) * 50만 = 2147조


File System Security

 

* File Operation 5가지 : open, rwx, close

 

* File 계층구조

- window : Tree

- Linux : 방향 비순환 그래프 (Directed Acyclic Graph)

 

* DAC (Discretionary Access Control) : 임의 접근 제어

- OS 표준 모델이다.

- 오너가 다른 사람에게 접근 권한을 부여할 수 있고, 그 권한을 정의할 수도 있다.

- 당연히 closed가 디폴트 설정

 

* Linux  VS  Window

  Linux Window
거부 가능? 허용만 가능 허용, 거부 다 가능. 둘 다 되면 거부가 우선권
파일 액세스 여부 파일 및 모든 상위폴더의 ACL 따름 파일 ACL만 의존
     
     

 

* Linux File System - 하드링크, 심볼릭링크에 대하여 ( 링크는 윈도우의 바로가기같은 기능이라고 생각 )

- Hard Link : 디렉토리 → 파일로 바로가기

     동일한 파일에 여러 디렉토리가 하드링크 가능

     연결된 하드링크 없을 때만 파일 삭제 가능

- Symbolic Link : 디렉토리 → 파일or디렉토리로 바로가기

     각 액세스로 traverse하는 path를 저장

     동일한 파일/디렉토리에 여러 심볼링크 가능

     파일 삭제시 해당 파일에 대한 심볼링크 무효화

 

* Unix Permission

- 퍼미션 내역 보려면 : ls -l

- drwxrwxrwx : 순서대로 3개씩 owner, group, others (맨 앞에 d는 디렉토리, 하이푼은 파일)

 

* "디렉토리"에서 권한 보기

- Read : 파일 이름 보는데, 크기나 각 파일의 권한은 못봄

- Write : 디렉토리 내에서만 파일의 수정/삭제 가능

- Execute : 디렉토리 들어가서 파일 속성을 가져올 수 있음.

 

* File 공유에서 문제점

- 허용된 사용자들 가지고 하드링크 복사 가능

- 임의의 심볼링크 만들 수 있음

 

* 특별한 권한 비트 : 해당 대상에 대해 잠시동안만(혹은 계속) 권한을 허용해줌

- 이들은 ACL 시스템 외부에 있음.

- SETUID(4) : rwx 아니고 rws라고 설정됨 (rws_ _ _ _ _ _)

- SETGID(2) : rwx 아니고 rws라고 설정됨 ( _ _ _ rws _ _ _ )

- sticky bit(1) : rwx 아니고 rwt라고 설정됨 ( _ _ _ _ _ _ rwt )

(참고로 r:4, w:2, x:1)

 

* SETUID, SETGID : 일시적으로 파일에 접근하게 해주는 특수 권한

ex) 원래는 root만 pw 바꿀 수 있는 걸, 사용자가 본인인증 하면 pw 바꿀 수 있는 root 권한을 부여함

 

* sticky bit : 특정 디렉토리를 누구나 쓸 수 있게(others에게) 허용하라.

 

* root : 관리자 계정

- 여러개의 root도 가능하다.

- root는 모든 파일에 접근 가능

- 명령어들

     su : root로 로그인하기

     sudo command : root 권한으로 실행

     su ABC : ABC 유저로 로그인

 

* Change Permission : 파일의 오너 혹은 root만 권한 바꾸기 가능

- chmod : 권한 설정하기

- chown : 파일의 소유자 변경

- R 옵션 : 하위 디렉토리도 recursive

 

* Octal Notation : 권한 변경을 더 쉽게 하기 위한 표기법

- SETUID : 4

- SETGID : 2

- Stick Bit :  1

- Read : 4

- Write : 2

- Execute : 1