본문 바로가기
42Seoul

Born2beroot - Virtual Machine, VirtualBox, Debian, Rocky

by millar 2023. 5. 17.

보너스 했습니다.

Born2beroot

This project aims to introduce you to the wonderful world of virtualization.
이 과제에서는 여러분에게 가상화의 멋진 세상을 소개해드리고자 합니다.

You will create your first machine in VirtualBox (or UTM if you can’t use VirtualBox) under specific instructions. Then, at the end of this project, you will be able to set up your own operating system while implementing strict rules
여러분은 VirtualBox를 통해서 (불가능하다면 UTM을 통해서) 주어진 요구사항들에 따라 첫 가상 머신을 만들 것입니다. 그리고 나면, 과제를 마칠 때 즈음 여러분은 엄격한 규칙들로 이루어진 자신만의 운영체제를 구현할 수 있을 것입니다.

개요

 이번 과제는 운영체제 관리 관련 실습입니다. Born2beroot는 기계 체점이 없고 오직 동료 평가에서 점수가 결정되기 때문에, 과제의 요구사항을 수행하는 데에는 어려움이 없으나 점수를 받기 매우 까다롭습니다.

 

 Rocky는 처음 시작하기에는 난이도가 높다고 제시해주기 때문에, 저 역시도 처음인 만큼 debian을 선택했고 Rocky에 대해서는 얕게 알고 있었습니다. 그렇다 하더라도 차이점을 묻기 때문에 다루지 않을 운영체제에 대해서도 알고 있어야 합니다.

 

 목표는 단지 가상 머신을 요구 조건에 맞게 작동시키는 것이지만 평가에서는 개념만을 확인하기 때문에 평가자와 피평가자의 평가 기준점이 일치하기 어렵습니다. 평가자가 요구하는 수준이 어느정도인지 미리 알 수 없기 때문에 개념을 어디까지 학습해야할지 피평가자는 스스로가 정하고 납득시켜야 합니다. 모든 평가의 부담은 피평가자에게 있고 결정권은 평가자에게 있는 평가입니다. 

 

 과제를 보시면 해야할 것들이 정말 많아 어려움을 느끼실 테지만 결국 전부 해내실것이고 절대적으로 중요한것은 나의 머릿속입니다. 따라서 설치, 구현 가이드가 아니라 학습의 거름을 위해 과제의 구현 테마별로 개념을 깊이 리뷰하겠습니다.

 

첫 번째는 가상머신과 운영체제 입니다.


운영 체제(Operating System)

 요즘 OS가 발전함에 따라 정의를 엄밀하게 할 수 없습니다. 종류도 다양하고 역할도 복합적이기 때문입니다. 그래도 정의를 내리자면 가장 잘 표현한 말은 컴퓨터 자원을 효율적으로 관리하기 위한 시스템이라고 생각합니다. 사용자의 하드웨어, 시스템 리소스를 제어하고 프로그램에 대한 일반적 서비스를 지원하는 시스템 소프트웨어입니다.

 

  • 일반적 서비스: 파일 시스템, 멀티태스킹 등

가상 머신(Virtual Machine)

 가상 머신은 물리적 하드웨어 시스템에 구축되어 자체 CPU, 메모리, 네트워크 인터페이스 및 스토리지를 갖추고 가상 컴퓨터 시스템으로 작동하는 가상 환경입니다. 하이퍼바이저라는 소프트웨어는 하드웨어에서 가상 머신의 리소스를 분리하고 적절히 프로비저닝하여 VM에서 사용할 수 있게 합니다.

 

  • 프로비저닝: 사용자의 요구에 맞게 시스템 자원을 할당, 배치, 배포해 두었다가 필요 시 시스템을 즉시 사용할 수 있는 상태로 미리 준비해 두는 것을 말한다.
  • 하이퍼바이저: 가상 머신을 생성하고 실행하는 프로세스. 하이퍼바이저 1과 하이퍼바이저 2 존재.
  • 하이퍼바이저1: 호스트의 하드웨어위에서 직접 구동되어 게스트 운영 체제를 관리. 기업 데이터 센터와 서버 기반 환경에서 유용.
  • 하이퍼바이저2: 기존의 운영체제에서 소프트웨어 레이어 또는 애플리케이션으로서 구동. 개인 컴퓨터에서 여러 개의 운영 체제 구동시 유용.

 

Type1과 Type2의 차이는 호스트 운영체제를 통하는지 여부입니다. Virtual box는 응용 소프트웨어의 하나이므로 Type2가 되겠습니다.

 

목적

  1. 하나의 컴퓨터로 동시에 서로 다른 2개 이상의 운영체제를 실행하고 싶을 때 (특히 서로 호환되지 않는 프로그램을 원하는 경우)
  2. 하나의 컴퓨터의 자원을 여러 명에게 나누어 주고 싶은데, 각 사용자 간의 상호 간섭을 없애고 싶을 때 - 클라우드 서버
  3. 컴퓨터의 다른 부분에는 영향을 주지 않는 독립 환경을 만들고 싶을 때 - 악성코드 분석, 운영체제 학습

 

결국 가상을 이용하는 이유는 물리적인 부분의 단점을 해결해주기 때문입니다. 돈과 시간면에서 강한 이점을 보입니다.


Debian vs Rocky

 Debian은 개발자와 커뮤니티 기여자들이 협력하여 개발하는 오픈 소스 프로젝트입니다. 패키지 관리자로 apt를 사용하고 보안 모듈로  AppArmor를 사용합니다.

 

 Rocky는 CentOS Linux 8을 기반으로 개발된 엔터프라이즈급 리눅스 배포판입니다. 패키지 관리자로 dnf를 사용하고 보안 아키텍쳐로 SElinux를 사용합니다.

 

AppArmor vs SElinux

https://phoenixnap.com/kb/apparmor-vs-selinux

AppArmor

 

 시스템 관리자가 프로그램 프로필 별로 프로그램의 역량을 제한할 수 있게 해주는 리눅스 커널 보안 모듈입니다. raw 소켓 액세스 그리고 파일의 읽기, 쓰기, 실행 같은 능력을 허용할 수 있습니다. AppArmor는 강제적 접근 통제(MAC)를 제공함으로써 전통적인 유닉스 임의적 접근 통제(DAC) 모델을 지원합니다.

  • DAC : 개인 기반 정책과 그룹기반 정책을 포함한다. 객체에 접근하고자 하는 주체(또는 속한 그룹)의 접근 권한에 따라 접근 통제를 적용합니다.
  • MAC : 보안 등급, 규칙 기반, 관리 기반의 접근 통제 방식이다. 높은 보안을 요하는 정보가 낮은 보안수준의 주체에게 노출되지 않도록 접근을 제한하는 접근 통제 방법입니다.
  • AppArmor은 프로파일 기반 액세스 제어를 제공합니다. 각 애플리케이션은 프로파일로 구성되며, 각 프로파일은 허용되는 시스템 자원 및 파일 및 디렉토리 액세스 규칙을 정의합니다.
  • AppArmor는 프로세스 수준에서 액세스 제어를 수행합니다. 각 프로세스에는 해당 프로세스에 적용되는 프로필이 할당되며, 프로필에 정의된 액세스 규칙을 준수하여 동작합니다.
  • AppArmor는 상대적으로 단순한 구성과 관리 방식을 가지고 있습니다. 프로파일은 사전 정의된 액세스 규칙으로 제공되며, 추가적인 사용자 정의 프로파일을 생성하여 애플리케이션의 특정 요구에 맞게 조정할 수 있습니다.

SElinux

 

 시스템 관리자가 시스템 액세스 권한을 효과적으로 제어할 수 있게 하는 리눅스 보안 아키텍처입니다. SELinux의 주요 기능 중 하나는 시스템 관리자가 시스템 리소스에 대한 무단 액세스를 차단할 수 있다는 것입니다. 이 보안 아키텍처는 시스템 사용자와 프로세스 간에 권한을 분리하여 관리자가 리소스에 대한 액세스를 보다 효율적으로 관리할 수 있도록 합니다.

 

 주체로 알려진 애플리케이션이나 프로세스가 파일과 같은 객체에 대한 액세스를 요청하는 경우 SElinux는 주체와 객체에 대해 권한이 캐시되는 AVC를 확인합니다.

  • AVC : SElinux 정책의 적용에 따라 접근 제어 결정을 수행합니다. 각 접근 요청은 소스, 대상, 작업 등의 세부 정보를 가지며, AVC는 이러한 정보를 기반으로 결정을 내립니다. 즉 접근 결정 로그
  • SELinux는 레이블 기반 액세스 제어를 제공합니다. 각 파일, 프로세스 및 시스템 리소스에는 레이블이 할당되며, 레이블은 허용되는 액세스 규칙을 정의하는 보안 정책과 연결됩니다.
  • SELinux는 Mandatory Access Control (MAC) 방식을 사용하여 강력한 보안 감사 및 액세스 제어를 제공합니다. 각 프로세스는 정책에 따라 할당된 레이블에 따라 액세스를 요청하며, 정책은 요청된 액세스가 허용되는지 여부를 결정합니다.
  • SELinux는 상대적으로 복잡한 구성과 관리 방식을 가지고 있습니다. 보안 정책은 세밀한 액세스 규칙을 포함하며, 정책 변경 및 커스터마이징은 신중한 접근과 충분한 이해가 필요합니다.
  • 레이블 : 레이블은 일종의 태그로, 각각의 리소스에 고유한 식별자 역할을 합니다. 리소스의 레이블은 해당 리소스에 대한 액세스 규칙을 정의하는 보안 정책과 연결됩니다. 이렇게 정의된 액세스 규칙에 따라 SELinux는 어떤 프로세스나 사용자가 특정 리소스에 접근할 수 있는지를 결정합니다.

레이블은 일반적으로 세 가지 요소로 구성됩니다: 

1. 유형 (Type): 리소스의 종류를 지정합니다. 예를 들어, 파일인지, 디렉토리인지, 네트워크 포트인지 등을 나타냅니다.

2. 소유자 (Owner): 리소스를 생성한 주체를 나타냅니다. 예를 들어, 특정 사용자, 그룹, 시스템 프로세스 등을 나타낼 수 있습니다.

3. 권한 (Permission): 리소스에 대한 허용되는 작업과 액세스 권한을 나타냅니다. 읽기, 쓰기, 실행 등의 권한을 포함할 수 있습니다.

 

Apt vs DNF

Apt (+ Aptitude)

 

 Apt와 Aptitude는 패키지 관리 도구입니다. 패키지 설치 및 제거, 업데이트 관리를 수행할 수 있습니다. Aptitude는 Apt에 몇 가지 기능이 추가되어 있습니다. Aptitude는 텍스트 기반이 아닌 그래픽 모드에서도 동작이 가능합니다. 또한 더욱 향상된 의존성 알고리즘을 갖고 있기 때문에 패키지 설치시 의존성을 충족시키는 것은 물론 불필요한 패키지를 자동적으로 제거하는 기능을 갖습니다.

 

DNF

 

 DNF 역시 패키지 관리 도구입니다. Fedora와 RHEL에서 사용되며 apt와의 가장 큰 차이점은 그룹 관리라고 볼 수 있습니다. DNF는 패키지를 그룹 단위로 관리할 수 있습니다. 그룹은 비슷한 기능이나 역할을 가진 패키지의 모음입니다. 사용자는 그룹을 선택하여 패키지를 일괄적으로 설치 또는 제거할 수 있습니다.

 

'42Seoul' 카테고리의 다른 글

Born2beroot - LVM, Cron  (2) 2023.05.19
Born2beroot - UFW, SSH, Sudo  (0) 2023.05.17
FT_PRINTF - Bonus  (0) 2023.05.15
FT_PRINTF - Mandatory  (0) 2023.05.15
GET_NEXT_LINE - Bonus (연결리스트)  (0) 2023.04.27

댓글