가상 머신 (Virtual Machine)
물리적 컴퓨터와 동일한 기능을 제공하는 소프트웨어 컴퓨터
가상머신은 물리적 컴퓨터처럼 실행되고 작동하는 컴퓨터 파일
하나의 물리 서버에서 여러개의 운영체제를 구동할 수 있도록 하는 기술
즉, 컴퓨터 안의 컴퓨터
가상머신 사용 이유
- 다른 운영체제를 사용해야 하는경우
- 비용 절감
- 간편함과 속도 -> 새로운 환경을 준비하는것보다 간편하고 빠름
하이퍼 바이저
호스트 컴퓨터에서 다수의 운영체제를 동시에 운영하기 위한 논리적 플랫폼
하드웨어에서 리소스를 사용해 가상머신을 생성하고, 구동하는 소프트웨어
ex) vmware, virtual box
Host / Guest로 구성됨
- Host : 하이퍼바이저가 탑재된 물리적 머신
- Guest : 하이퍼바이저로 인해 리소스 사용하는 머신
Hypervisor 종류
- Type 1 : 물리적 하드웨어 바로 위에 하이퍼바이저가 있는 경우
- Type 2 : Host OS 위에 하이퍼 바이저가 있는 경우 -> 지금 과제에 해당
Server
클라이언트에게 네트워크를 통해 정보나 서비스를 제공하는 컴퓨터 시스템으로 컴퓨터 프로그램 또는 장치
운영체제
컴퓨터 시스템의 자원들을 효율적으로 관리하며, 사용자가 컴퓨터를 편리하고, 효과적으로 사용할 수 있도록 환경을 제공하는 여러 프로그램의 모임
컴퓨터 사용자와 컴퓨터 하드웨어 간의 인터페이스로서 동작하는 시스템 소프트웨어의 일종
Kernel
컴퓨터 하드웨어와 프로세스를 잇는 핵심 인터페이스
- H/W의 모든 주요 기능을 제어한다.
- 메모리, 프로세스 관리
- 장치 드라이버
- 시스템 호출 및 보안
- 프로세스 : 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램
Linux
유닉스 운영체제를 기반으로 만들어진 운영체제
다중 사용자, 다중 작업, 다중 스레드를 지원하는 네트워크 운영체제
서버로 작동하는데 최적화 되어있어, 서버에서 사용되는 운용체제로 많이 사용된다.
리눅스 종류
- 레드햇
- 데비안
Debian
커뮤니티인 데비안 프로젝트에서 개발하고 있는 Linux 배포판
패키지 관리 툴 : dpkg, APT
- 장점
- 패키지 설치 및 업그레이드의 단순함
- 쉽게 설치와 이용법을 찾을 수 있어 진입장벽이 낮다.
- 단점
- 자발적 커뮤니티에서 만든 배포판이고 안정성을 우선시하므로 업데이트가 늦다
CentOs
레드햇 엔터프라이즈 리눅스에서 파생된 Linux 배포판 중 하나로 래드햇의 브랜드와 로고만 제거하고 배포한 배포판
패키지 관리 툴 : yum
- 장점
- 레드햇이 공개한 RHEL(리눅스 서버 시장 1인자)를 무료로 사용할 수 있다.
- 단점
- 커뮤니티 차원에서 제공되기 때문에 사후 지원이 없어 안정성 문제가 생길 수 있다.
- 오픈소스로 업데이트가 느리다.
Debian vs CentOs
둘 모두 리눅스 커널 + 자유 소프트웨어로 구성된 리눅스 배포판으로 자유 소프트웨어(패키지 포맷, 패키지 관리 툴 등)에 차이가 있다.
LVM (Logical Volume Manage)
이름대로 논리적인 공간을 만들게 해주는 프로그램으로, 리눅스 저장 공간을 효율적이고 유연하게 관리하기 위한 커널의 한 부분이다.
- 파티션 : 하나의 하드디스크에 대해 영역을 나누는 것
기존방식
하드디스크를 파티셔닝 한 후 OS 영역에 마운트해 read / write를 수행했다.
이 경우 저장 공간의 크기가 고정되어 증설 / 축소를 재설치 하는 방법으로 해결했다.
LVM
LVM은 재설치 없이 크기를 조정할 수 있다.
파티션 대신 Volume이라는 단위로 저장 장치를 다뤄 스토리지의 확장, 변경에 유연하고,
크기를 변경 시 기존 데이터의 이전이 필요하지 않다.
- 물리적인 디스크를 논리적인 디스크로 할당해 유연하게 관리할 수 있게 해준다.
- 물리적 볼륨 (PV, Physical Volume)
: 실제 디스크 장치를 분할한 파티션된 상태를 의미
- 볼륨 그룹 (VG, Volume Group)
: PV들이 모여서 생성되는 단위로 사용자가 VG를 원하는 대로 쪼개 LV로 만든다.
- 논리적 볼륨(LV, Logical Volume)
: 사용자가 최종적으로 사용하는 단위로, VG에서 필요한 크기로 할당받아 LV생성
Package Managing Tool
시스템 사용목적이나 필요에 따라 파일을 추가 설치하거나 삭제, 업데이트를 관리해주는 툴
데비안에서는 Apt, Aptitude, dpkg가 있다.
Package : 코드의 배포를 위해 사용되는 코드의 묶음
Apt (Advanced Packaging Tool)
데비안 GNU/리눅스 배포판에서 소프트웨어를 설치하고 제거하는 패키지 관리 명령어 도구
- low-level 패키지 매니저
- CLI만으로 사용
- 다른 high level 패키지 매니저에 의해 사용될 수 있다. -> 호환성
$ sudo apt install <package name>
$ sudo apt remove <package name>
Aptitude
기능에 사용자 인터페이스를 추가하여 사용자가 대화형으로 패키지를 검색하고 설치 또는 제거할 수 있는 고급 패키징 도구의 front-end
- higher-level 패키지 매니저
- apt를 사용할 경우 사용자가 직접 해주어야 하는 번거로운 작업을 자동화 해준다.
ex) 사용하지 않는 패키지 처리, 패키지 설치 혹은 삭제 중 충돌 - 텍스트 기반 interactive 인터페이스와 non-interactive 커맨드 라인 모드에서 작동한다.
$ sudo apt install aptitude
$ sudo aptitude
Apt vs Aptitude
Apt | Aptitude |
- higher-level 패키지 매니저가 사용 가능한 low-level 패키지 관리자 - 패키지 설치 혹은 삭제 중 충돌시 종료됨 - 사용하지 않는 패키지에 대해 사용자가 명시해주어야 함 - 커맨드라인, UI 없음 |
- higher-level 패키지 관리자 - 패키지 설치 혹은 삭제 중 충돌시 해결방법 제안 - 사용하지 않는 패키지 자동으로 제거 - 커맨드 라인과 텍스트 기반 UI |
접근 통제
OS에서 접근통제는 디렉토리, 파일, 네트워크 소켓 같은 시스템 자원을 적절한 권한을 가진 사용자나 그룹이 접근하고 사용할 수 있게 통제하는 것
- 객체(Object) : 시스템 자원
- 주체(Subject) : 자원에 접근하는 사용자, 프로세스
주체와 객체가 통신하기 전에 보안 커널(보안 절차를 구현한 하드웨어)을 통해 요청이 허가되어 있는지 판단하기 위해선 접근 통제 정책을 검토해야 한다.
접근 통제 단계
1. 식별 (Identification)
- 객체에 주체의 식별자를 요청하는 과정
2. 인증 (Authentication)
- 허가된 사용자인지 사용자 정보를 확인하는 보안 절차
3. 인가 (Authorization)
- 객체에 접근하는 것을 허가하는 권한 주는 것
접근 통제 정책
DAC (Discretionary Access Control)
임의 접근 통제
- 사용자나 그룹의 신분을 기준으로 시스템 객체에 대한 접근을 제한
즉, 사용자나 그룹의 신분으로 통제 - 객체의 소유자인 사용자나 그룹의 판단에 의해 다른 주체에게 이 객체의 접근 권한 줄 수 있다.
-> root 계정은 모든 권한을 갖기 때문에, 계정을 탈취당하면 시스템이 장악당할 수 있다. - 대부분의 운영체제는 DAC에 기반한다.
- 장점
- 필요에 따라 접근제어 가능
- 구현이 용이하고 간편
- 단점
- 신분 도용 시 통제 방법이 없다.
- 바이러스등에 치명적
MAC(Mandatory access control)
강제 접근 통제
- 미리 정해진 정책과 보안 등급에 의거해, 주체에게 허용된 접근 권한과 객체에게 부여된 허용 등급을 비교해 접근 통제
즉, 보안 등급으로 통제 - 낮은 보안 등급의 주체는 더 높은 등급의 객체에 접근 불가능
- 소유자라도 정책에 어긋나면 객체에 접근 불가능
- 장점
- DAC보다 보안성 우수
- 단점
- 모든 주체, 객체에 대해 보안 등급과 허용 등급 부여해야 하므로 설정 복잡
- 모든 접근에 대해 등급을 확인하기 때문에, 시스템 성능에 영향을 끼친다.
- 관리적 부담, 많은 비용 소모
AppArmor
시스템 관리자가 프로그램 프로필 별로 프로그램의 역량을 제한할 수 있게 해주는 리눅스 커널 보안 모듈
- profile은 네트워크 액세스
- raw 소켓 액세스
- 파일의 읽기, 쓰기, 실행 권한
을 통제하여 개별 프로그램을 보호한다.
강제적 접근 통제(MAC)을 제공하여 어떤 응용프로그램이 어디에 접근 가능한지를 허용해준다.
데비안 설치 시 자동 설치됨
https://wiki.debian.org/AppArmor
SSH (Secure SHell)
원격 호스트에 접속하기 위해 사용되는 보안 프로토콜
컴퓨터와 컴퓨터가 인터넷 같은 Public Network를 통해 서로 통신할 때 보안적으로 안전하게 통신하기 위해 사용하는 프로토콜
대표적인 사용 예
- 데이터 전송 (git push)
- 원격 제어 (클라우드 서비스)
작동원리
client와 server(host)가 각각 private / public key를 보유하고 이를 이용해 데이터를 암호화 / 복호화한다.
중간에 누군가 가로채도 암호화 되어있어 무슨 정보인지 알 수 없다.
Port
운영체제 통신의 종단점
IP(Internet Protocol, 인터넷 상에서 사용하는 주소체계)내에서 애플리케이션 상호 구분(프로세스 구분)을 위해 사용하는 번호다.
포트 숫자는 IP주소가 가리키는 PC에 접속할 수 있는 통로를 의미한다.
ex) Local PC의 IP주소(인터넷 상의 주소체계) 127.0.0.1 뒤에 :3000과 같은 숫자가 표현된다. 3000은 해당 주소로 가기위한 통로인 것이다.
포트포워딩
공유기의 포트를 통해 이 공유기와 연결된 기기들의 특정 포트에 진입할 수 있게하는 기능
UFW (Uncomplcated FireWall)
리눅스 환경에서 작동되는 사용하기 쉬운 방화벽 관리 프로그램
보안 확보를 위해 내부 네트워크와 외부통신을 제어하고, 내부 네트워크의 안전을 유지하기 위해 사용하는 기술
-> 해당 과제에서 port 22를 닫고 port 4242를 여는데 사용
- 방화벽 : 보안 확보를 위해 내부 네트워크와 외부 통신을 제어하고, 내부 네트워크의 안전을 유지하기 위해 사용하는 기술
TTY(Teletypewriter)
콘솔은 유닉스가 설치된 호스트에 네트워크를 통해 다른 컴퓨터가 접근하여 작업을 수행할 때 명령을 받아 전달하는 역할을 하는데 tty도 콘솔에 속한다.
Mount
마운트하다.
어떠한 것을 Available한 상태로 준비하는 것
참고
- https://ko.wikipedia.org/wiki/%EC%BB%A4%EB%84%90_(%EC%BB%B4%ED%93%A8%ED%8C%85)
- https://greencloud33.tistory.com/41
- https://padawanr0k.github.io/posts/ft_seoul/born2beroot/01/index/
- https://www.tecmint.com/difference-between-apt-and-aptitude/https://storytown.tistory.com/14
- https://www.notion.so/born2beroot-2ce1177e08904c329fb437c7fdcd7113
'42SEOUL' 카테고리의 다른 글
[born2beroot] 서브젝트 설정 (0) | 2022.06.17 |
---|---|
[born2beroot] Virtual Box 세팅하기 (0) | 2022.06.04 |
[ft_printf] printf() (0) | 2022.04.22 |
[Linux] SIGSEGV (0) | 2022.03.26 |
[C / get_next_line] 파일 디스크립터 (File Descriptor) (0) | 2022.03.16 |