시험공부하며 러프하게 정리한 내용이니, 가볍게 참고만 하시길
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
'CS 개념 (~24년 7월) > 컴퓨터 보안' 카테고리의 다른 글
컴퓨터보안 - 실습내용 간단 정리 (1) (0) | 2024.04.25 |
---|---|
컴퓨터 보안 (5) - Malware (1) | 2024.04.25 |
컴퓨터 보안 (4) - OS Security 2 (0) | 2024.04.25 |
컴퓨터 보안 (2) - Physical Security (0) | 2024.04.25 |
컴퓨터 보안 (1) - Introduction (0) | 2024.04.25 |