Home Born2beroot ③ 배경 지식
Post
Cancel

Born2beroot ③ 배경 지식

가상 머신 (Virtual Machine)

물리적 컴퓨터와 동일한 기능을 제공하는 소프트웨어 컴퓨터

가상머신의 유형

  • 프로세스 가상머신(응용 프로그램 가상머신)
    • 호스트 머신에서 단일 프로세스를 실행할 수 있게 한다.
    • 플랫폼에 독립적인 프로그램 실행 환경을 제공한다.
    • 예시 : JVM (Java Virtual Machine)
  • 시스템 가상머신 (하드웨어 가상머신)
    • 하드웨어 가상머신으로도 불림.
    • 물리적 기계를 완전히 대체할 수 있다.
    • 가상화를 제공하는 소프트웨어 : Hypervisor
    • 예시 : VMware, VirtualBox

가상머신의 장단점

  • 장점
    • 사용자가 단일 하드웨어에서 다양한 OS를 실행가능.
    • 기업은 시간, 비용, 물리적 공간 절약.
    • 악성 소프트웨어의 전체 확산 방지.
  • 단점
    • 성능이 불안정해질 수 있다. (하나의 물리적 호스트에서 여러 VM을 실행할 경우)

가상화의 유형

  • 하드웨어 가상화
  • 소프트웨어 가상화
  • 스토리지 가상화
  • 네트워크 가상화
  • 데스크톱 가상화

가상머신 vs 컨테이너

virtual_machine.png

가상머신

container.png

컨테이너

공통점

  • 둘 다 하나의 플랫폼에 독립된 어플리케이션을 동작하도록 한다.

차이점

  • 가상머신이 하드웨어를 가상화해서 (가상)컴퓨터를 생성하는데에 반해 컨테이너는 하나의 앱과 그에 해당하는 의존성만을 패키지로 만듦.
  • 가상머신은 하이퍼바이저에 의해 관리되는 반면 컨테이너는 호스트 컴퓨터의 OS를 공유하고 가상 메모리 하드웨어를 사용해 앱을 격리한다.

CentOS vs Debian

리눅스 배포판의 종류 중 하나인 레드햇 계열과 데비안 계열의 대표적인 OS

Linux

UNIX를 기반으로 만들어진 OS. 다중 사용자, 다중 작업(멀티 태스킹, 멀티 스레딩)을 지원하는 네트워크 운영체제(NOS).

주요 장점

  • 오픈 소스 소프트웨어.
    • 오픈소스 : 최종 사용자가 소스코드를 합법적으로 사용할 수 있도록 특별한 라이선스를 통해 릴리즈한 것.
      • 추가 비용 없이 소스코드 형식으로 제공된다.
      • 해당 소스코드를 새 소프트웨어에 다른 용도로 사용 가능.
  • 다중 사용자, 다중 작업을 지원한다.
  • 강력한 보안기능을 갖춤.

위와 같은 각 장점으로 인해 광범위하게 사용되어지며, 서버 운영에 적합하고, 많은 기업에서 사용된다.
이러한 리눅스에는 다양한 배포판이 존재한다. 대표적인 두가지 계열로는 레드햇 계열과 데비안 계열이 있다.

레드햇 계열

레드햇에서 개발한 RHEL에서 파생된 리눅스 계열

  • 주요 특징
    오픈소스 소프트웨어 기업에서 직접 개발한 소프트웨어로 다양한 유틸리티, 높은 안정성 등의 장점이 있으나 새로운 기술의 적용이 보수적이다.

  • 주요 OS

    • RHEL
    • CentOS
    • Fedora
    • Oracle Linux

데비안 계열

  • 주요 특징
    온라인 커뮤니티에서 제작해서 배포한다. 많은 사용자를 기반으로 형성된 커뮤니티를 통해 다양한 정보를 쉽게 얻을 수 있어 진입장벽이 낮다.

  • 주요 OS

    • Debian
    • Ubuntu

CentOS

RHEL과 동일한 소스코드를 기반으로 커뮤니티에서 새로 빌드해 제공한다.
RHEL에 비해 일부 하드웨어 플랫폼, 드라이버, 기능이 제외된다.
Red Hat으로부터의 2, 3차 기술지원 불가.

패키지 포맷 : rpm 형식
패키지 관리 : yum/dnf 사용

Debian

커뮤니티에서 만들고 배포해서 사후지원과 배포가 늦다.
유저 커뮤니티를 통해 매뉴얼 등의 습득이 용이하다.

패키지 포맷 : deb 형식
패키지 관리 : dpkg/apt 사용

SELinux vs AppArmor

리눅스 커널 보안 모듈

AppArmor

  • 시스템 관리자가 프로그램 프로필 별로 프로그램의 역량을 제한할 수 있게 해주는 리눅스 커널 보안 모듈
  • 프로그램의 프로필을 통해 해당 프로그램이 취할 수 있는 아래와 같은 작업들을 제한하고 관리한다.
    • 네트워크 액세스
    • raw 소켓 액세스
    • 파일 읽기, 쓰기, 실행 권한
  • 강제적 접근 통제(MAC)를 제공한다.으로써 전통적인 유닉스 임의적 접근 통제 모델(DAC)을 지원한다.
  • SUSE 계열, 데비안 계열(Debian, Ubuntu)에서 사용.

임의적 접근통제 (DAC, Discretionary Access Control)

  • 정보 소유자가 사용자나 사용자가 속한 그룹에 임의적 접근제어를 설정한다.
  • 대부분의 OS에서 채택.

    장단점

    • 유연성이 있다.
    • 트로이 목마에 취약하다.
    • id가 도용되면 DAC는 파괴된다.

강제적 접근통제 (MAC, Mandatory Access Control)

  • 관리자만 사용자에게 접근권한을 부여할 수 있다.
  • 시스템 사용자는 자신의 정보에 대해 어떤 접근 권한도 설정할 수 없다.
  • 정부, 군 같은 복잡한 시스템에서 주로 사용.

    장단점

    • 강력한 통제를 부여하기 때문에 DAC에 비해 안전하다.
    • 객체단위 권한설정 불가.
    • 일반적 환경에서는 사용이 어려움.

SELinux

  • 미국 국방부 스타일의 강제 접근 제어(MAC)를 포함한 접근 제어 보안 정책을 지원하는 매커니즘을 제공하는 리눅스 커널 보안 모듈
  • 시스템 전체에 보안 설정.
  • 레드햇 계열(RHEL, Fedora, CentOS)에서 사용.

주요 차이점

  • CentOS와 같은 제품 및 파생제품은 SELinux, 다른 대부분은 APPArmor를 사용
  • AppArmor이 갖는 설치, 관리의 용이함때문에 SELinux를 대체하는 한 부분으로 제공된다.
  • 파일관리 방식- SELinux: 파일에 라벨을 적용한다. AppArmor: 파일 경로를 통해 작동한다.

apt vs aptitude

데비안 패키지 관리 툴

apt (Advanced Packaging Tool)

  • cli용 패키지 관리 도구
  • low level이면서 높은 자유도
  • 패키지 명을 입력하면 의존성 목록도 함께 설치된다.(의존성 문제 없다.)

aptitude

  • 사용자 인터페이스를 추가해 대화형으로 패키지 관리
  • 대화형(텍스트 기반 인터페이스), 비대화형(cli) 모두 동작한다.
  • high level

주요 차이점

  • 기능
    aptitude가 apt의 기능(apt-get, apt-mark, apt-cache 등)들을 포함하여 더 폭넓은 기능을 제공한다.
  • UI
    apt-get은 UI가 부족한 편인 반면 aptitude는 UI도 제공하면서 cli에서도 동작한다.
  • 패키지 관리
    • apt-get이 하는 일 외에도 aptitude는 설치된 패키지 목록, 패키지를 자동 또는 수동으로 설치하도록 표시, 업그레이드에 사용할 수 없는 패키지 보관 등을 한다.
    • 패키지 삭제 시 충돌 패키지까지 자동으로 제거해주는 aptitude와는 달리 apt는 auto-remove 등의 추가옵션이 필요하다.

LVM (Logical Volume Manager)

리눅스의 저장공간을 효율적이고 유연하게 관리하는 기술

기존 방식

리눅스에서 하나의 디스크를 여러개의 파티션으로 분할해서 파일 시스템을 특정 디렉토리와 연결해서 사용. 저장공간의 크기가 고정되어 있어 이후의 증설/축소가 어려운 단점 존재.

LVM 특징

파티션 대신 볼륨 단위로 저장장치를 다루기 때문에 유연한 용량조절(각 볼륨에 대한)이 가능하다.
Storage Pool(하나의 큰 스토리지 공간)의 크기 조절이 가능하다.
장치 이름 지정이 자유롭다.

관련 용어

lvm_concept.png

  • 물리적 볼륨(PV, Physical Volume)
    • 실제 디스크 장치를 분할한 파티션된 상태를 의미
    • PV는 일정한 크기의 PE로 구성된다.
  • 볼륨 그룹(VG, Volume Group)
    • PV가 모여서 생성되는 단위
    • 사용자는 VG를 원하는만큼 쪼개어 LV로 만듦
  • 논리적 볼륨(LV, Logical Volume)
    • 사용자가 최종적으로 사용하는 단위
    • VG에서 필요한 크기로 할당받아 생성
  • 물리적 확장(PE, Physical Extent)
    • PV를 구성하는 최소단위로 일정한 크기의 블럭
    • 1PE는 4MB의 크기를 가진다.
    • PE와 LE는 1대1 매핑된다.
  • 논리적 확장(LE, Logical Extent)
    • LV를 구성하는 일정한 크기의 블럭
    • 1LE는 4MB의 크기를 가진다.
    • VG를 분할해 LV를 만들 때 PE와 1대1 매핑된다.

    디스크, 파티션, 볼륨

    • 디스크 : 시스템에 장착되어 있는 물리적인 저장장치
    • 파티션 : 물리 디스크를 여러 독립적인 공간으로 구분해 놓은것
    • 볼륨 : 단일 파일 시스템을 사용해 액세스할 수 있는 저장공간

      일반적으로 디스크를 파티션으로 구분하고, 각 파티션을 파일 시스템으로 포맷해서 볼륨을 만들어 사용한다.

sudo vs root

sudo

  • sudo(Super User Do 또는 substitute user do)
  • root유저 외의 유저에게 제한적인 관리자 권한을 부여해주는 명령어
  • /var/log/sudo 에 사용 기록을 남김

root

  • UNIX 계열 OS에서의 슈퍼유저 계정.
  • 시스템에 관한 모든 권한을 가진다.
  • Ubuntu 등 특정 OS에서는 루트 계정이 기본적으로 잠겨있다.

sudo vs root

  • 유저에 의한 의도치 않은 시스템 손상(핵심 루트 디렉터리나 파일의 삭제)을 방지한다.
    • 예를들어 root 계정으로 rm -rf /etc 와 같은 명령을 사용하면 메시지도 띄우지 않고 핵심 디렉터리를 삭제하게 된다. 만약 유저로 로그인한 상태였다면 거절된다.
  • command 단위로 log를 남기기 때문에 정확한 기록을 확인할 수 있다.

사용법

sudo 명령어 형태로 사용
/etc/sudoers 파일에 있는 유저만 사용가능. 해당 파일은 root계정에서 visudo 명령어를 통해 편집 가능

sudo log

/var/log/sudo 의 디렉토리 별 의미

1
2
3
4
5
6
7
log # sudo 실행한 위치와 실행한 명령어의 위치
stderr # sudo로 실행한 명령어가 오류로 인해 실행되지 않았을 경우 출력되는 내용
stdin # sudo로 실행한 명령어가 표준 입력을 받은 내용
stdout # sudo로 실행한 명령어가 표준 출력으로 결과를 출력한 내용
timing # 세션이 실행된 시간
ttyin # sudo로 실행한 명령어가 TTY로 입력받은 내용
ttyout # sudo로 실행한 명령어가 TTY로 출력한 결과

UFW (Uncomplicated Firewall)

리눅스 환경에서 동작하는 사용하기 쉬운 방화벽 관리 프로그램

장점

리눅스의 기본 방화벽인 iptables는 명령어가 직관적이지 않다는 단점 존재.
반면 ufw는 쉽고 직관적인 명령어를 갖는 동시에 성능도 비슷한다.

방화벽

  • 해킹에 사용되는 소프트웨어 취약점을 막는게 아니라 접근할 수 있는 경우의 수를 줄이는 역할
  • 특정 포트, ip, 및 ssh 접근을 허용하고 거부한다.
  • 리눅스 환경에서 동작하는 방화벽 : ufw, iptables, firewalld

SSH (Secure Shell)

개념

컴퓨터간에 인터넷과 같은 Public Network를 통해서 통신을 할 때 보안적으로 안전하게 통신을 하기 위해 사용하는 네트워크 프로토콜의 일종

  • 프로토콜 : 서로 다른 시스템에 있는 개체 간에 데이터를 전송하는데 사용하는 통신 규약. 네트워크에 연결된 컴퓨터들끼리 미리 약속한 전송 규칙

사용 이유

  • 기존의 FTP, Telnet이 갖는 보안적인 문제(IP Spoofing, DNS Spoofing)
    • Spoofing : 자신의 IP 및 DNS를 속여서 접속하는 공격을 총칭한다.

사용 방식

  • SSH는 일반적인 통신과정인 비밀번호 입력을 통한 접속을 하지 않다.
  • 대신 Public key, Private key라는 한쌍의 key를 활용한 인증과정을 거침
    • Public key
      • 공개되어도 비교적 안전한 key
      • 메시지를 전송하기 전에 암호화 한다.(복호화는 불가능)
    • Private key
      • 절대 외부에 노출되어선 안되는 key
      • 본인 컴퓨터 내부에 저장하게 되어있다.
      • 암호화된 메시지를 복호화 가능
  1. 클라이언트가 통신하고자 하는 서버에 요청을 보냄
  2. 응답을 하는 서버가 저장하고 있던 Pubilc key를 보냄
  3. 클라이언트는 해당 Public key와 자신의 Private key가 한 쌍인지 인증과정을 거침
  4. 인증에 성공하면 두 컴퓨터 사이에 암호화된 채널이 생성된다.

Port Forwarding

  • 공인 IP : 유일한 IP이기 때문에 외부에서 직접 접근이 가능
  • 사설 IP : 해당 공유기 내에서 부여한 주소이기 때문에 고유하지 않아 외부에서는 직접 접근이 불가
  • 포트 포워딩 : 공유기에서 각 기기에 포트를 부여해서 외부로 개방시킨 것
  • DMZ : 하나의 기기에 모든 포트를 부여해 개방하는 것. 보안이 취약하다는 단점 존재

스냅샷

특정 시점에서의 가상머신의 시스템 상태를 캡쳐하는 기능

용도

용량이 큰 데이터는 완전히 백업하려면 오랜시간이 걸리고 백업도중 프로그램으로의 접근이 어려운 단점이 존재.
이러한 시스템 다운을 피하기 위해 고성능 시스템과 같은 용량이 큰 데이터는 스냅샷을 기반으로 백업을 수행한다.

shasum

SHA Checksum 값을 출력하거나 검사하는 프로그램

사용하는 이유

인터넷 상에서 다운로드한 파일은 변조의 가능성이 있다.
따라서 동일한 파일인지 체크하는 과정을 통해 이러한 위험을 예방한다.

원리

원본 파일과 검사 파일(체크섬 파일)을 분리 제공한 후, 원본 파일을 사용하기 전에 검사파일을 통해 검사한 후 사용한다.

과제에서의 사용법

  1. 평가 제출 직전에 vm에서 스냅샷 찍기
  2. shasum [vm이름].vdi > signature.txt 로 txt파일 만든 후 제출
  3. 평가때 shasum [vm이름].vdi 입력해서 나온 해시값과 txt파일의 값이 같은지 체크

FTP (File Transfer Protocol)

파일 전송 프로토콜.
네트워크에 연결된 컴퓨터 사이의 데이터 교환을 원활히 하기 위해 개발된다.

FTP 서버

파일을 하나의 장치에서 다른 장치로 전송하는 소프트웨어 애플리케이션.
FTP 주소를 가지고 있고 FTP 연결을 수신하는 데 사용되는 컴퓨터.

역할

파일 송수신 (FTP 서버 ↔ 클라이언트)

원리

ftp_concept.png

사용

대량의 파일을 처리하는 경우 (주로 웹 개발)
워드프레스의 경우 FTP를 사용하여 파일을 송수신할 수 있다. 워드프레스의 테마편집기를 이용하면 아래와 같은 단점이 존재한다.

  • 로딩 속도가 느림
  • 되돌리기 기능 부재
  • 사이트 접속이 안되는 경우 존재
  • 보안 문제

vsftpd (very secure FTP daemon)

유닉스 계열 OS의 FTP 서버.
우분투, CentOS, Fedora 등에서 기본 FTP 서버로 사용.
강력한 보안, 빠른 퍼포먼스, 높은 안정성을 지님. config 설정 방법이 간단해 FTP 서버 관리가 용이하다.
vsftpd는 UNIX 계정 관리를 통해 작동. 즉, FTP 서버에 필요한 사용자 이름과 암호를 가진 사용자 계정이 운영 체제에 있어야 하며 /etc/vsftpd.user_list 내에 나열되어 있어야 한다.

Ref.

https://www.vmware.com/topics/glossary/content/virtual-machine.html
https://www.itworld.co.kr/news/166350
https://www.redhat.com/ko/topics/open-source/what-is-open-source-software https://www.tecmint.com/difference-between-apt-and-aptitude/
https://velog.io/@joonpark/aptitude-vs-apt
https://www.vultr.com/docs/why-use-sudo-instead-of-logging-in-as-root/
https://ko.wikipedia.org/wiki/AppArmor
https://tino1999.tistory.com/40]
https://nostressdev.tistory.com/5
https://eunguru.tistory.com/88
https://greencloud33.tistory.com/41
https://soft.plusblog.co.kr/46
https://ko.wikipedia.org/wiki/스냅샷_(기억_장치)
https://hanamon.kr/네트워크-ssh란/
https://velog.io/@pearpearb/42서울-Born2berootSSH와-포트포워딩
https://ko.wikipedia.org/wiki/UFW
https://blog.naver.com/wideeyed/221300065871
https://experience.dropbox.com/ko-kr/resources/what-is-ftp
https://sepiros.tistory.com/22
https://www.thewordcracker.com/basic/using-ftp-to-work-with-wordpress/

This post is licensed under CC BY 4.0 by the author.

Born2beroot ② 환경 세팅

Born2beroot ④ 구현 과정 (Mandatory part)