본문 바로가기
42 Seoul

[42 Seoul] Born2beroot 과제 명세서 번역 및 정리

by Kloong 2022. 2. 1.

개요

 VirtualBox로 리눅스 서버(Debian 또는 CentOS)를 설치한 뒤, 서버 관리자의 입장에서 간단한 세팅을 해보자!

 

요구사항

1. OS 설치 및 기본 설정

The latest stable 버전의 Debian 또는 CentOS를 설치한다 (서버 설치 및 설정이 처음이라면 Debian 추천)

동료 평가 과정에서 선택한 배포판에 대한 질문을 받게 될 것이다. 예시는 다음과 같다.

  • aptitude와 apt의 차이점 (Debian 설치 시)
  • SELinux가 무엇인가? (CentOS 설치 시)
  • AppArmor가 무엇인가? (Debian 설치 시)
  • Debian과 CentOS의 특징
  • 왜 Debian/CentOS가 아닌 CentOS/Debian을 설치하였는가?

GUI를 제공하는 서비스(X.org 등)는 설치해서는 안된다.

LVM을 사용해서 적어도 2개의 암호화된 파티션을  생성해야 한다.

 

2. SSH

SSH 서비스가 동작중이고, 4242 port로만 열려있어야 한다.

SSH 서비스로 root에 접속할 수 있으면 안된다.

동료 평가 중에 새로운 유저를 만들어서 SSH로 접속하는 과정에 대해 평가 받을 것이다. 따라서 새로운 유저를 만들고, SSH로 그 유저에 로그인 하는 방법에 대해서 알아둬야 한다.

3. 방화벽 - UFW

UFW를 사용해서 4242 port만 열어두도록 설정한다.

가상 머신을 실행했을 때, 방화벽이 항상 켜져 있어야 한다.

CentOS의 경우 UFW를 설치해서 기본 방화벽으로 설정해줘야 한다.

4. 비밀번호 정책

매 30일마다 파기되어야 한다.

비밀번호 변경은 바로 직전 비밀번호 변경 날짜를 기준으로 2일 이후부터 가능해야 한다. (원문 : The minimum number of days allowed before the modification of a password will be set to 2.)

유저는 비밀번호 파기일 7일 전에 경고 메세지를 받아야 한다.

10 글자 이상, 대문자 및 숫자 포함, 연속된 동일한 글자는 3글자 까지만 허용.

비밀번호에 유저 이름이 포함되어서는 안된다.

바로 이전의 비밀번호에 포함되어 있지 않은 문자가 최소 7글자 이상 존재해야 한다 - 단 이 규칙은 root 유저에는 해당하지 않는다.

Root 유저도 위의 비밀번호 정책을 따라야 한다.

*비밀번호 정책을 수정한 이후에는 반드시 기존에 존재하는 모든 유저의 비밀번호를 정책에 맞게 수정해야 한다 (root를 포함해서!)

5. sudo

sudo가 설치되어 있어야 한다.

sudo 사용 시 비밀번호 인증은 최대 3회까지 가능하다 (3번 틀리면 다시 시도 해야 함)

비밀번호가 틀렸을 시 (바로 위 설정에 의해 3번 틀렸을 시 인 것으로 추정) custom message가 나타나게 해야 한다.

sudo를 통한 모든 행동 (입출력 모두 포함)은 기록되어야 한다. /var/log/sudo/ 디렉토리에 로그 파일로 저장되어야 한다.

보안을 이유로 TTY 모드가 허용되어 있어야 한다.

보안을 이유로, sudo로 사용할 수 있는 paths가 제한되도록 설정해야 한다. (예시: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin)

6. Monitoring script

서버에 대한 현재 상태 및 정보를 출력하는 쉘 스크립트를 작성해야 한다. bash 쉘을 기준으로 작성해야 한다

서버가 작동중일 때, 매 10분마다 이 스크립트가 실행되어서 서버 상태를  출력해야 한다. (wall 을 사용할 것. 배너는 옵션)

평가 과정 중에 이 스크립트가 어떻게 동작하는지 설명해야 한다. 또 cron을 사용해서 이 스크립트 동작에 interrupt를 할 수 있어야 한다.

스크립트는 다음과 같은 정보를 출력해야 한다.

  • The architecture of your operating system and its kernel version.
  • The number of physical processors.
  • The number of virtual processors.
  • The current available RAM on your server and its utilization rate as a percentage.
  • The current available memory on your server and its utilization rate as a percentage.
  • The current utilization rate of your processors as a percentage.
  • The date and time of the last reboot.
  • Whether LVM is active or not.
  • The number of active connections.
  • The number of users using the server.
  • The IPv4 address of your server and its MAC (Media Access Control) address.
  • The number of commands executed with the sudo program.
Broadcast message from root@wil (tty1) (Sun Apr 25 15:45:00 2021):

	#Architecture: Linux wil 4.19.0-16-amd64 #1 SMP Debian 4.19.181-1 (2021-03-19) x86_64 GNU/Linux
	#CPU physical : 1
	#vCPU : 1
	#Memory Usage: 74/987MB (7.50%)
	#Disk Usage: 1009/2Gb (39%)
	#CPU load: 6.7%
	#Last boot: 2021-04-25 14:45
	#LVM use: yes
	#Connexions TCP : 1 ESTABLISHED
	#User log: 1
	#Network: IP 10.0.2.15 (08:00:27:51:9b:a5)
	#Sudo : 42 cmd

위의 정보 중 일부는 다음과 같은 방법으로 찾을 수 있다.

 

Debian의 경우:

CentOS의 경우:

 

6. 기타

가상 머신의 hostname은 <42 로그인 아이디> + 42 (ex wil42) 여야 한다. 평가 중에 hostname을 변경하는 방법에 대한 평가가 있을 것이다.

42 로그인 아이디의 유저가 존재해야 한다. 이 유저는 user42와 sudo 그룹에 속해있어야 한다.

 

제출 및 평가 방법

Git repository에 signature.txt 파일 하나만 업로드한다.

Virtual disk의 disk signature를 복붙해서 업로드한다.

Virtual disk의 disk signature를 추출하기 위해서는 가상 머신이 설치된 폴더로 가서 .vdi 파일을 찾은 뒤 다음과 같은 명령어를 입력하면 된다.

shasum <파일명>.vdi

*평가 후에 disk signature가 변경될 가능성이 있으므로, 스냅샷으로 백업을 해두거나 사본을  만들어두자.

댓글