[BORN2BEROOT] 과제 정리

유성·2023년 8월 9일

42seoul

목록 보기
2/2

Subject

Mandatory part

이 프로젝트는 엄격한 규칙들을 통해 가상머신(virtual machine)을 생성하고 구성하는 것을 다루고 있습니다. 피평가자는 동료평가 내내 당신을 도와줘야 합니다. 앞으로 나올 모든 평가 항목들이 직접 확인되어야한다는 점을 명심하세요.

1. 프로젝트 개요

피평가자는 먼저 이것들을 간단히 설명해야합니다 :

가상 머신은 어떻게 동작하는가.
가상머신(VM: Virtual Machine)이란?

  • 실재하는 컴퓨터 상에 소프트웨어로 논리적으로 만들어낸 컴퓨터
  • 하나의 물리 자원(컴퓨터) 위에 하나의 환경(OS)만 있는 것을 효율화하고자 가상화층을 만들고 그 위에 OS를 새로 설치하는 기법
    하이퍼바이저가 물리자원들인 하드웨어의 리소스를 논리자원으로 가지고오는 추상화과정을 거치고난 후 하나의 디바이스로 묶어 PC처럼 사용이 가능한 가상화 과정을 거치어 가상머신을 사용할 수 있게 된다.

어떤 운영시스템을 선택했는가
centOS와 Debian의 간단한 차이점들 (이 둘의 비교)

CentOSDebian
RedHat에서 공개한 리눅스 유료 배포판인 RHEL의 로고를 바꿔 2004년 출시되었음
RHEL처럼 기술지원등의 서비스는 받을 수 없음
다양한 아키텍처를 지원하진않음
RPM패키지 형식 (YUM과 DNF를 프로그램의 설치,제거,업그레이드 구성을 관리하는 패키지 관리자로 사용)
1993년 최초 출시
커뮤니티에서 만들고 배포했기에 사후지원과 배포가 늦은편 오픈소스 구성요소같은 운영체제
Linux를 커널(운영체제에서 자원을 관리해주는 핵심부분)로 사용함
패키지 설치 및 업그레이드가 단순하고 다양한 패키지를 가지고 있음
DEB패키지 형식 (dpkg와 APT를 프로그램의 설치,제거,업그레이드 구성을 관리하는 패키지 관리자로 사용)

가상머신의 목적 (가상머신을 쓰는 이유)

  • 실제로 있는 컴퓨터 시스템을 여러 명의 사용자가 동시에 사용할 수 있게 하기 위해서. (효율성 ↑)

  • 따라서 하나의 컴퓨터를 여러 명의 사용자가 동시에 사용할 수 있도록 여러 대의 작은 컴퓨터로 분할 사용하거나, 운영 체계나 하드웨어 등의 구성을 달리하여 운영하고자 할 때 주로 사용된다.

  • 동시에 여러대의 OS를 돌리기 위해서 개발됨

만약 피평가자가 CentOS를 선택했을 경우 : SeLinux와 DNF가 무엇인가
만약 피평가자가 Debian을 선택했을 경우 : aptitude와 apt 사이의 차이점 / APPArmer이란 무엇인가 / 디팬스 동안에 스크립트가 10분마다 정보를 출력해야한다 (이 동작은 나중에 평가 중에 더 자세히 체크하게 될 것입니다)

apt는 소프트웨어의 검색, 다운로드, 설치 및 정보를 얻는데 사용되는 옵션을 가짐. 시스템에 있는 특정 파일이 어떤 패키지에 포함되는지 등의 확인 작업을 수행하기 위해 필요

aptitude는 주요 패키지 작업과정ㅇ르 자동화. 사용하지 않는 패키지를 자동적으로 제거하기도 함(apt-get, apt-cache, apt-mark, high-level 패키지 매니저)

노벨에서 만든 보안솔루션==리눅스 보안 모듈로 오픈소스임
aa-enabled 명령어 통해 활성화 여부 확인 가능
임의의 애플리케이션에 대한 잠재적인 공격범위를 줄임. 어떻게?
특정 프로그램이나 컨테이너에서 필요한 리눅스 기능, 네트워크 사용, 파일 권한 등에 대한 접근을 허용하는 프로필로 구성

2. 기본 설정

명심하세요 : 만일 당신이 무언가를 체크하는데 도움이 필요하다면, 피평가자는 당신을 도울 수 있어야합니다.

처음 실행할 때, 그래픽 환경이 아닌 지 확인 이 가상머신에 연결하고자 할 때, 비밀번호가 요구될 것입니다. 그리고 가상머신 연결 이후에는, 피평가자의 도움으로 사용자(user)에 연결해야 합니다. - 포트포워딩이 아니라 자기꺼로 들어가는것. 이때 이 사용자는 root가 아니여아합니다. 또, 이용하고 있는 비밀번호를 유심히 살펴보세요. 그 비밀번호는 이 과제에 주어진 규칙들을 따라야만합니다.
UFW 서비스가 시작되었는지(실행되었는지) 평가자의 도움으로 확인하기
SSH 서비스가 시작되었는지 (평가자의 도움으로) 확인하기
사용되는 OS가 Debian인지 CentOS인지 (평가자의 도움으로) 확인하기
만일 무언가가 예상한대로 작동하지 않거나 혹은 명확하게 설명되지 못한다면, 여기서 평가를 중단하십시오.

  1. 사용자
    명심하세요 : 만일 당신이 무언가를 체크하는데 도움이 필요하다면, 피평가자는 당신을 도울 수 있어야합니다.

이 과제에서는, 피평가자가 로그인한 유저가 가상머신 속에 존재할 것을 요구합니다. 유저가 추가되었는지, 그리고 그것이 "sudo"와 "user42" 그룹에 속하는 지 살펴보세요. 이 과제에는 비밀번호 정책에 관해 제시된 규칙들이 있습니다. 이 규칙들이 제대로 설정되었는지 다음 절차를 따라 확인해보세요. 먼저, 새로운 유저를 생성합니다. 과제에 제시된 규칙에 맞춰 임의로 그 비밀번호를 만듭니다. 이제 피평가자는 어떻게 자신들이 과제에 제시된 규칙들을 설정했는지 설명해야합니다. 보통 1개 혹은 2개의 수정된 파일들이 있어야 합니다. 만일 어떤 문제라도 생긴다면, 여기서 평가를 중단하십시오.

이제 당신의 새로운 유저가 추가된 상태에서, 피평가자가 "evaluating"이라는 그룹을 생성하도록 합니다. 그리고 그 그룹을 이 유저에게 할당하도록 합니다. 최종적으로, 이 유저가 정말 "evaluating" 그룹에 속하게 되었는 지 확인해보세요.
피평가자가 이러한 비밀번호 정책의 장점을 설명하도록 하세요. 그리고 그것의 구현에서의 장점과 단점도 설명할 수 있어야합니다. 물론 그걸 대답해야하는 건 이 과제가 그걸 요구하기 떄문입니다. 그건 중요하지 않습니다.
만일 무언가가 예상한대로 작동하지 않거나 혹은 명확하게 설명되지 못한다면, 여기서 평가를 중단하십시오.

  1. 호스트명과 파티션들
    명심하세요 : 만일 당신이 무언가를 체크하는데 도움이 필요하다면, 피평가자는 당신을 도울 수 있어야합니다.

이 가상머신의 호스트명이 다음의 주어진 형식을 만족하는 지 체크하세요 : login42 (피평가자의 로그인)
당신의 로그인으로 대체해서 원래의 호스트명을 수정하세요. 그리고 가상머신을 다시 시작하세요. 만일 다시 시작했을 때, 호스트명이 업데이트 되어있지 않다면, 여기서 평가를 중단하십시오.
이제 가상머신을 다시 원래의 호스트명으로 복원할 수 있습니다.
피평가자에게 어떻게 이 가상머신의 파티션들을 확인할 수 있는 지 물어보세요.

lsblk // 파티션 출력하기

과제에 주어진 예시와 출력 결과물을 비교하십시오
유의하세요 : 피평가자가 보너스 파트를 했다면, 꼭 보너스 예시에 대한 것도 확인해야합니다. 이 파트는 점수를 의논하기 위한 기회입니다. 피평가자는 당신에게 어떻게 LVM이 동작하는지와 그게 대체 무엇인지에 대해 간단히 설명해야합니다

만일 무언가가 예상한대로 작동하지 않거나 혹은 명확하게 설명되지 못한다면, 여기서 평가를 중단하십시오.

  1. SUDO
    명심하세요 : 만일 당신이 무언가를 체크하는데 도움이 필요하다면, 피평가자는 당신을 도울 수 있어야합니다.

"sudo" 프로그램이 가상머신에 제대로 설치되어있는지 체크하세요.
이제 피평가자는 당신의 새로운 유저를 "sudo" 그룹에 할당하는 것을 보여줘야합니다.
이 과제는 sudo에 대한 엄격한 규칙들을 강요합니다. 피평가자는 여러 예시를 통해 sudo의 가치(사용하는 이유)와 동작을 보여줘야합니다. 그 다음 단계에서는, 과제에서 강조하는 규칙들에 대한 구현을 보여주어야합니다.

"/var/log/sudo/" 폴더가 존재하는 지, 그리고 그것이 최소한 한 개의 파일을 갖는 지 확인하세요. 이 폴더 속 파일들의 내용을 확인할 때, sudo와 함께 사용된 명령어들의 기록을 볼 수 있어야합니다. 최종적으로, sudo를 통해 명령어를 실행해보세요. 그리고 "/var/log/sudo/" 폴더 속 파일(들)이 업데이트되었는 지 확인합니다.
만일 무언가가 예상한대로 작동하지 않거나 혹은 명확하게 설명되지 못한다면, 여기서 평가를 중단하십시오.

  1. UFW
    명심하세요 : 만일 당신이 무언가를 체크하는데 도움이 필요하다면, 피평가자는 당신을 도울 수 있어야합니다.

"UFW" 프로그램이 가상머신에 제대로 설치되어있는 지 체크하세요.
그것이 제대로 동작하는 지 체크하세요
피평가자는 기본적으로 UFW가 무엇인지, 그리고 그걸 사용했을 때의 가치(좋은 점)을 설명할 수 있어야만 합니다.
UFW의 활성된 규칙들을 나열하세요. 4242 포트에 대한 규칙도 있어야만합니다.
8080 포트를 열기 위한 새로운 규칙을 추가하세요. 그리고 이것이 활성된 규칙의 목록에 추가되었는 지 체크하세요.
최종적으로, 피평가자가 그 새로운 규칙을 삭제하도록 하세요.
만일 무언가가 예상한대로 작동하지 않거나 혹은 명확하게 설명되지 못한다면, 여기서 평가를 중단하십시오.

  1. SSH
    명심하세요 : 만일 당신이 무언가를 체크하는데 도움이 필요하다면, 피평가자는 당신을 도울 수 있어야합니다.

SSH 서비스가 가상머신에 제대로 설치되어있는 지 체크하세요.
그것이 제대로 동작하는 지 체크하세요
피평가자는 SSH가 무엇인지, 그리고 그걸 사용했을 때의 가치(좋은 점)을 설명할 수 있어야만 합니다.
SSH 서비스가 4242 포트만을 사용하는 지 확인하세요.
피평가자는 당신이 새롭게 생성된 유저에 로그인하기 위해 SSH를 사용하는 것을 도와야합니다. 그렇게 하기 위해서는, 당신은 key나 간단한 비밀번호를 사용할 수 있습니다. 그건 피평가자에 따라 달라질 수 있습니다. 물론, 과제에 제시되었듯이, "root" 유저로 SSH를 사용할 수 없음을 확실히 확인해야합니다.
만일 무언가가 예상한대로 작동하지 않거나 혹은 명확하게 설명되지 못한다면, 여기서 평가를 중단하십시오.

  1. Script monitoring
    명심하세요 : 만일 당신이 무언가를 체크하는데 도움이 필요하다면, 피평가자는 당신을 도울 수 있어야합니다.

피평가자는 당신에게 다음의 내용들을 간단히 설명해야합니다 :

스크립트가 어떻게 동작하는 지 당신에게 코드를 보여주기

"cron"이란 무엇인지텍스트

cron은 유닉스 계열의 job scheduler성격의 데몬 프로세스이다.

job
특정 작업이나 프로세스
scheduler
특정한 시간마다 혹은 특정한 이벤트 발생시 job을 자동으로 실행하는 것
데몬 프로세스
사용자가 직접 제어하지 않고, 백그라운드에서 돌면서 여러 작업을 하는 프로그램
백그라운드 프로세스와 다른점은 사용자와 상호작용하지 않는 독자적인 프로세스란 것이다.
반복적인 일들을 자동화해주며 많은곳에서 두루 활용된다.

특정시간 마다 DB를 백업할 수 도 있고, 특정시간마다 웹페이지를 스크래핑하는 cron을 만들수도 있다.

피평가자가 어떻게 스크립트를 설정했길래 그게 (서버가 시작된 이후로) 10분마다 한번씩 실행되는지

1개의 댓글

comment-user-thumbnail
2023년 8월 9일

좋은 글 감사합니다. 자주 방문할게요 :)

답글 달기