설명에 들어가기 전 후기

과제를 시작하기 몇 달 전 UMC 동아리에서 VirtualBox를 사용하여 APM(Apache + PHP + MySQL)을 설치 해 본적이있어서 Virtual Box를 다루는 데는 어렵지 않았다.

다만 처음 들어보는 LVM과 ufw, 그리고 오류가 많이 났던 포트포워딩 하는 과정은 좀 헤맸다.

게다가 비밀번호 정책 설정 중 오타를 발견하여 제대로 비밀번호 정책이 설정되지 않은 점(ucredit인데 uncredit으로 오타낸다던지...), 기존의 사용자에는 비밀번호 정책(만료 기간...등)이 적용이 되지 않은 점 등 오류가 있던 부분이 있었지만 수많은 구글링으로 겨우 설정을 마무리 할 수 있었다.

설치는 간단하였지만, 설정 부분에서 애를 먹었고, 더 힘들게 만든 점은 개념 숙지였다.

알아야 할 개념들이 정말 많아 정리하는 것만 해도 오래걸렸다.

노션 등에 개념을 정리하고 설명하시는 분들이 많지만 나의 지식으로 확실히 만들기 위해 블로그에 정리하는 것 뿐만 아니라 각종 명령어, 개념들을 모두 외워서 평가를 받았다.

암기하는데 힘들었지만, 평가를 거듭할 수록 설명이 매끄러워졌고, 덕분에 개념에 대해서는 다잡게 될 수 있었다.

 

 

가상 머신

가상 머신이란?

Virtual Machine을 줄여서 VM이라고도 함

실재하는 컴퓨터 상에 소프트웨어로 논리적으로 만들어 낸 컴퓨터

하나의 물리자원 위에 하나의 환경만 있는 것을 효율화하고자 가상화 층을 만들고, 그 위에 OS를 새로 설치하는 기법

 

가상화란? 

가상화를 관리하는 소프트웨어(주로 Hypervisor)를 사용하여 하나의 물리적 머신에서 가상 머신을 만드는 프로세서

 

Hypervisor

Hypervisor는 가상화 머신 모니터(Virtual Machine Monitor) 혹은 가상화 머신 매니저(Virtual Machine Manager)를 줄여서 VMM이라고도 불림

호스트 컴퓨터에서 다수의 운영체제를 동시에 실행하기 위한 논리적 플랫폼, 가상화층을 구현하여 물리적 머신의 컴퓨팅 리소스로부터 가상환경을 분리하고 가상 머신을 생성 & 가상 머신의 리소스를 분배

즉, 호스트 컴퓨터에서 다수의 게스트를 구동할 수 있게 해주는 소프트웨어

 

(*호스트 : Hypervisor로 사용 되는 물리 하드웨어)

(*게스트 : 리소스를 사용하는 여러 VM)

 

 

Type 1

native 혹은 bare metal hypervisor로 불리며, 하드웨어와 직접 상호작용

엔터프라이즈 데이터 센터와 서버 기반 환경에서 주로 사용

ex) KVM/QEMU, XEN...

 

Type 2

host hypervisor로 불리며, 호스트 운영체제 위에서 hypervisor가 동작

개인이 주로 사용

ex) VMware Fusion, VMware Workstation, Parllels Workstation, VirtualBox

 

 

가상 머신의 목적

앱을 빌드하고, 클라우드에 배포

배타 릴리스를 비롯한 새로운 OS 시험

새로운 환경을 실행하여 개발자가 개발-테스트 시나리오를 더 쉽고 빠르게 실행 가능

기존 OS를 백업

이전 OS를 설치하여 바이러스에 감염된 데이터에 액세스 하거나 이전 애플리케이션을 실행

의도하지 않은 운영체제에서 소프트웨어나 앱을 실행

 

가상 머신의 장점

재해 복구 및 애플리케이션 프로비저닝 옵션 제공

(*프로비저닝(Provisioning) : IT 인프라 자원을 사용자 또는 비즈니스 요구사항에 맞게 할당, 배치, 배포해서 시스템을 사용할 수 있도록 만들어 놓은 것)

유지 및 관리가 간편

뛰어난 범용성

하나의 물리적 컴퓨터에서 여러 운영 체제 환경 실행 가능

 

가상 머신 단점

하나의 물리적 시스템에서 여러 가상 머신을 실행하면 성능이 불안정해지는 가능성있음

물리적 컴퓨터보다 효율성이 떨어지며 속도도 느림

 

 

CentOS vs Debian

CentOS

Red Hat 회사에서 상용으로 배포한 RHEL(Read Hat Enterprise Linux)을 가져와 RHEL와 비슷하게 기능을 하는 Linux의 배포판 중 하나

Red Hat의 상표 대신 CentOS의 상표가 붙은 정도만의 차이가 있음

오픈소스이기에 기술 지원 및 업데이트가 느림

인력이 충분하면 CentOS, 안정성이 중요한 곳이면 RHEL을 선호

기업용으로 주로 사용

 

ex) Redhat 계열 : CentOS, Fedora, Oracle....

 

Debian

온라인 커뮤니티에서 제작하여 배포됨

초반에는 Redhat 계열에 비해 사후지원과 유틸 성능이 뒤쳐졌으나, 지금은 그렇지 않으며 넓은 유저층을 보유

패키지 설치 및 업그레이드가 단순하고 다양한 패키지 보유

install 후 패키지매니저인 APT 업데이트 방식을 사용하면, 소프트웨어의 설치나 업데이트에서 다른 패키지와의 의존성 확인 및 보안 관련 업데이트 등을 자동으로 설정, 설치해준다는 장점

개인용으로 CentOS보다 사용하기 쉬움

 

ex) Debian 계열 : Ubuntu, Kail...

 

 

apt와 aptitude 그리고 dpkg

apt, dpkg는 Debian에서 사용되는 파일 패키지 매니저

aptitude는 apt, dpkg와 함께 Ubuntu에서 사용되는 패키지 매니저

 

dpkg

cd룸이나 다른 디스크 장치에 있는 데비안 패키지 파일(.deb)들을 제어하는 경우에 일반적으로 사용됨

외부 네트워크로 접속이 안되는 환경에서 사용가능

apt에 비해 낮은 레벨의 도구이며, 복잡한 패키지 관계와 패키지를 원격에서 받아옴

Ubuntu에서는 apt에서도 소프트웨어를 관리하기 위해 내부적으로 dpkg 사용

 

apt

설치할 패키지 명을 입력하면 /etc/apt/sources.list에 지정된 소스목록에서 해당 패키지와 종속성 목록을 찾아 자동으로 설치

실질적으로 dpkg와 함께 작동하지만, 필요한 소프트웨어의 검색, 다운로드, 서치, 업그레이드, 검사 등 대부분의 패키지 관리 작업은 apt 단독으로 가능

CLI로 사용 가능

 

 

aptitude

CLI 뿐만 아니라 GUI를 추가해 사용자가 대화형으로 패키지를 설치, 제거할 수 있음

high-level의 패키지 관리 도구

 

apt vs aptitude

aptitude가 더 방대하고, apt-get, apt-cache를 포함하여 더 많은 기능들도 포함

apt-get이 패키지 설치, 업그레이드, 종속성 검사 등을 하는 반면에 aptitude는 설치된 패키지 목록, 패키지를 자동 또는 수동으로 설치하도록 표시, 업그레이드에 사용할 수 없는 패키지 보관 가능

aptitude는 why, why-not 명령어을 통해 왜 동작이 안되는지 볼 수 있음

apt는 설치 또는 제거 중 충돌이 일어날 경우 종료되지만, aptitude는 해결 방안을 제시

 

 

APPArmor

시스템 관리자가 프로그램 프로필 별로 프로그램의 역량을 제한할 수 있게 해주는 리눅스 커널 보안 모듈

리눅스 커널 보안 모듈로 오픈 소스, 생성한 개별 프로그램에 대한 프로필 파일을 통해 네트워크 액세스, raw 소캣 액세스, 파일 읽기, 쓰기, 실행권한, 기타 해당 프로그램이 취할 수 있는 작업의 권한을 통제함으로써 개별 프로그램을 보호

 

보통 기본으로 설치되어 있으나 설치되어 있지 않다면?

#설치 확인
sudo dpkg -l apparmor

#또는 apparmor의 상태 확인
sudo apparmor_status

#apparmor 설치
sudo apt install apparmor

#apparmor utils 설치
sudo apt install apparmor-utils

 

2가지 모드로 프로필 실행 가능

enforce 모드 : 허가되지 않는 파일에 접근하는 것을 거부하는 모드

complain 모드 : 실질적으로 보안을 제공하는 것은 아니지만 어플리케이션이 해야할 행동이 아닌 다른 행동을 하는 경우에는 APPAromor는 중지하지 않고 로그를 남김

 

강제적 접근 통제(MAC)을 제공함으로써, 전통적인 유닉스 임의적 접근 통제 모델(DAC)을 지원

정책 파일을 통해 어떤 어플리케이션이 어떤 파일, 경로에 접근 가능한지 허용

 

접근 통제

디렉터리나 파일, 네트워크 소켓 같은 시스템 자원을 적절한 권한을 가진 사용자나 그룹이 접근하고 사용할 수 있게 통제하는 것

 

DAC (임의적 접근 제어)

Discretionary Access Control의 약자

소유자가 사용자 또는 그룹이 자원에 접근하는 것을 조절

시스템 객체에 대한 접근을 사용자나 그룹의 신분을 기준으로 제한

사용자나 그룹이 객체의 소유자라면 다른 주체에 대해 해당 객체에 대한 접근 권한 설정 가능

자신의 판단에 의해 권한을 줄 수 있기에 임의적

 

 MAC (강제적 접근 제어)

Mandatory Access Control의 약자

정의된 정책을 활용해 사용자와 프로세스의 행동을 제어

자원에 대한 접근은 주체의 보안 등급과 객체의 보안 레벨에 기반

관리자만이 객체의 보안 레벨, 주체의 보안 등급을 수정 가능

높은 보안을 요구하는 정보는 낮은 보안 수준의 주체가 접근 X

객체의 소유자라고 해도 정책에 어긋나면 객체에 접근 X

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

[42 Seoul] Born2beroot - sudo, ufw, ssh, cron  (0) 2022.09.05
[42 Seoul] Born2beroot - User, Hostname, Partitions  (0) 2022.09.05
[42 Seoul] ft_printf  (0) 2022.08.19
[42 Seoul] Libft - Bonus  (0) 2022.08.02
[42 Seoul] Libft - Part 2  (0) 2022.08.02
복사했습니다!