개요
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가 변경될 가능성이 있으므로, 스냅샷으로 백업을 해두거나 사본을 만들어두자.
'42 Seoul' 카테고리의 다른 글
[42 Seoul] Minitalk (0) | 2022.02.10 |
---|---|
[42 Seoul] Born2beroot 배경 지식 정리 3 (0) | 2022.02.03 |
[42 Seoul] Born2beroot 배경 지식 정리 2 (0) | 2022.02.02 |
[42 Seoul] Born2beroot 배경 지식 정리 1 (0) | 2022.02.01 |
댓글