General guidelines (일반 지침)
• The use of VirtualBox (or UTM if you can’t use VirtualBox) is mandatory.
• VirtualBox (또는 VirtualBox를 사용할 수없는 경우 UTM)의 사용은 필수입니다.
• You only have to turn in a signature.txt file at the root of your repository. You must paste in it the signature of your machine’s virtual disk. Go to Submission and peer-evaluation for more information.
• 저장소의 루트에있는 signature.txt 파일 만 제출하면됩니다. 시스템 가상 디스크의 서명을 붙여 넣어야합니다. 자세한 내용은 제출 및 동료 평가로 이동하십시오.
Mandatory part (필수 파트)
This project consists of having you set up your first server by following specific rules.
이 프로젝트는 특정 규칙에 따라 첫 번째 서버를 설정하는 것으로 구성됩니다.
Since it is a matter of setting up a server, you will install the minimum of services. For this reason, a graphical interface is of no use here. It is therefore forbidden to install X.org or any other equivalent graphics server. Otherwise, your grade will be 0.
서버 설정의 문제이므로 최소한의 서비스 만 설치합니다. 이러한 이유로 여기에서는 그래픽 인터페이스가 사용되지 않습니다. 따라서 X.org 또는 기타 동등한 그래픽 서버를 설치하는 것은 금지되어 있습니다. 그렇지 않으면 점수가 0이 됩니다.
You must choose as an operating system either the latest stable version of Debian (no testing/unstable), or the latest stable version of CentOS. Debian is highly recommended if you are new to system administration.
운영 체제로 Debian의 최신 안정 버전 (테스트 없음 / 불안정) 또는 CentOS의 최신 안정 버전을 선택해야합니다. 시스템 관리가 처음이라면 Debian을 적극 권장합니다.
Setting up CentOS is quite complex. Therefore, you don’t have to set up KDump. However, SELinux must be running at startup and its configuration has to be adapted for the project’s needs. AppArmor for Debian must be running at startup too.
CentOS 설정은 매우 복잡합니다. 따라서 KDump를 설정할 필요가 없습니다. 그러나 SELinux는 시작시 실행되어야하며 구성은 프로젝트의 요구에 맞게 조정되어야합니다. Debian 용 AppArmor도 시작시 실행되어야합니다.
You must create at least 2 encrypted partitions using LVM. Below is an example of the expected partitioning:
LVM을 사용하여 암호화 된 파티션을 2 개 이상 만들어야합니다. 다음은 예상되는 분할의 예입니다.
During the defense, you will be asked a few questions about the operating system you chose. For instance, you should know the differences between aptitude and apt, or what SELinux or AppArmor is. In short, understand what you use!
방어하는 동안 선택한 운영 체제에 대해 몇 가지 질문을 받게됩니다. 예를 들어, aptitude와 apt의 차이점 또는 SELinux 또는 AppArmor가 무엇인지 알아야합니다. 요컨대, 당신이 사용하는 것을 이해하십시오!
A SSH service will be running on port 4242 only. For security reasons, it must not be possible to connect using SSH as root.
SSH 서비스는 포트 4242에서만 실행됩니다. 보안상의 이유로 SSH를 루트로 사용하여 연결할 수 없어야합니다.
The use of SSH will be tested during the defense by setting up a new account. You must therefore understand how it works.
새 계정을 설정하여 방어 중에 SSH 사용을 테스트합니다. 따라서 작동 방식을 이해해야합니다.
You have to configure your operating system with the UFW firewall and thus leave only port 4242 open.
UFW 방화벽으로 운영 체제를 구성해야하므로 포트 4242 만 열어 두어야합니다.
Your firewall must be active when you launch your virtual machine.
For CentOS, you have to use UFW instead of the default firewall. To install it, you will probably need DNF.
가상 머신을 시작할 때 방화벽이 활성화되어 있어야합니다.
CentOS의 경우 기본 방화벽 대신 UFW를 사용해야합니다. 설치하려면 DNF가 필요할 것입니다.
• The hostname of your virtual machine must be your login ending with 42 (e.g., wil42). You will have to modify this hostname during your evaluation.
• 가상 머신의 호스트 이름은 42로 끝나는 로그인이어야합니다 (예 : wil42). 평가 중에이 호스트 이름을 수정해야합니다.
• You have to implement a strong password policy.
• 강력한 암호 정책을 구현해야합니다.
• You have to install and configure sudo following strict rules.
• 엄격한 규칙에 따라 sudo를 설치하고 구성해야합니다.
• In addition to the root user, a user with your login as username has to be present.
• 루트 사용자 외에 사용자 이름으로 로그인 한 사용자가 있어야합니다.
• This user has to belong to the user42 and sudo groups.
•이 사용자는 user42 및 sudo 그룹에 속해야합니다.
During the defense, you will have to create a new user and assign it to a group.
방어하는 동안 새 사용자를 생성하여 그룹에 할당해야합니다.
To set up a strong password policy, you have to comply with the following requirements:
강력한 암호 정책을 설정하려면 다음 요구 사항을 준수해야합니다.
• Your password has to expire every 30 days.
• 암호는 30 일마다 만료되어야합니다.
• The minimum number of days allowed before the modification of a password will be set to 2.
• 비밀번호 수정 전까지 허용되는 최소 일수는 2로 설정됩니다.
• The user has to receive a warning message 7 days before their password expires.
• 사용자는 암호가 만료되기 7 일 전에 경고 메시지를 받아야합니다.
• Your password must be at least 10 characters long. It must contain an uppercase letter and a number. Also, it must not contain more than 3 consecutive identical characters.
• 암호는 10 자 이상이어야합니다. 대문자와 숫자를 포함해야합니다. 또한 3 개 이상의 연속 된 동일한 문자를 포함 할 수 없습니다.
• The password must not include the name of the user.
• 암호에는 사용자 이름이 포함되지 않아야합니다.
• The following rule does not apply to the root password: The password must have at least 7 characters that are not part of the former password.
• 다음 규칙은 루트 암호에 적용되지 않습니다. 암호는 이전 암호의 일부가 아닌 7 자 이상이어야합니다.
• Of course, your root password has to comply with this policy.
• 물론 루트 암호는이 정책을 준수해야합니다.
After setting up your configuration files, you will have to change all the passwords of the accounts present on the virtual machine, including the root account.
구성 파일을 설정 한 후에는 루트 계정을 포함하여 가상 머신에있는 계정의 모든 비밀번호를 변경해야합니다.
To set up a strong configuration for your sudo group, you have to comply with the following requirements:
sudo 그룹에 대한 강력한 구성을 설정하려면 다음 요구 사항을 준수해야합니다.
• Authentication using sudo has to be limited to 3 attempts in the event of an incorrect password.
• sudo를 사용한 인증은 비밀번호가 잘못된 경우 3 번으로 제한되어야합니다.
• A custom message of your choice has to be displayed if an error due to a wrong password occurs when using sudo.
• sudo를 사용할 때 잘못된 암호로 인한 오류가 발생하면 선택한 사용자 지정 메시지가 표시되어야합니다.
• Each action using sudo has to be archived, both inputs and outputs. The log file has to be saved in the /var/log/sudo/ folder.
• sudo를 사용하는 각 작업은 입력 및 출력 모두를 보관해야합니다. 로그 파일은 / var / log / sudo / 폴더에 저장해야합니다.
• The TTY mode has to be enabled for security reasons.
• 보안상의 이유로 TTY 모드를 활성화해야합니다.
• For security reasons too, the paths that can be used by sudo must be restricted.
• 보안상의 이유로 sudo에서 사용할 수있는 경로를 제한해야합니다.
Example:
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin
Finally, you have to create a simple script called monitoring.sh. It must be developed in bash.
마지막으로 monitoring.sh라는 간단한 스크립트를 만들어야합니다. bash에서 개발해야합니다.
At server startup, the script will display some information (listed below) on all terminals every 10 minutes (take a look at wall). The banner is optional. No error must be visible.
서버 시작시 스크립트는 10 분마다 모든 터미널에 일부 정보 (아래 나열 됨)를 표시합니다 (벽을보십시오). 배너는 선택 사항입니다. 오류가 표시되지 않아야합니다.
Your script must always be able to display the following information:
스크립트는 항상 다음 정보를 표시 할 수 있어야합니다.
• 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.
• 서버에서 현재 사용 가능한 RAM 및 사용률 (백분율).
• 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.
• LVM이 활성 상태인지 여부.
• 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.
• 서버의 IPv4 주소와 MAC (Media Access Control) 주소.
• The number of commands executed with the sudo program.
• sudo 프로그램으로 실행 된 명령 수.
During the defense, you will be asked to explain how this script works. You will also have to interrupt it without modifying it. Take a look at cron.
방어하는 동안이 스크립트의 작동 방식을 설명해야합니다. 또한 수정하지 않고 중단해야합니다. cron을 살펴보십시오.
This is an example of how the script is expected to work:
다음은 스크립트 작동 방식의 예입니다.
Below are two commands you can use to check some of the subject’s requirements:
다음은 주제의 일부 요구 사항을 확인하는 데 사용할 수있는 두 가지 명령입니다.
Submission and peer-evaluation (제출 및 동료 평가)
You only have to turn in a signature.txt file at the root of your Git repository. You must paste in it the signature of your machine’s virtual disk. To get this signature, you first have to open the default installation folder (it is the folder where your VMs are saved):
Git 저장소의 루트에있는 signature.txt 파일 만 제출하면됩니다. 시스템 가상 디스크의 서명을 붙여 넣어야합니다. 이 서명을 받으려면 먼저 기본 설치 폴더 (VM이 저장된 폴더)를 열어야합니다.
• Windows: %HOMEDRIVE%%HOMEPATH%\VirtualBox VMs\
• Linux: ~/VirtualBox VMs/
• MacM1: ~/Library/Containers/com.utmapp.UTM/Data/Documents/
• MacOS: ~/VirtualBox VMs/
Then, retrieve the signature from the ".vdi" file (or ".qcow2 for UTM’users) of your virtual machine in sha1 format. Below are 4 command examples for a centos_serv.vdi
file:
그런 다음 ".vdi"파일 (또는 UTM 사용자의 경우 ".qcow2)에서 서명을 검색합니다.
sha1 형식의 가상 머신. 다음은 centos_serv.vdi에 대한 4 개의 명령 예입니다.
• Windows: certUtil -hashfile centos_serv.vdi sha1
• Linux: sha1sum centos_serv.vdi
• For Mac M1: shasum Centos.utm/Images/disk-0.qcow2
• MacOS: shasum centos_serv.vdi
This is an example of what kind of output you will get:
다음은 얻을 수있는 출력의 예입니다.
• 6e657c4619944be17df3c31faa030c25e43e40af
Please note that your virtual machine’s signature may be altered after your first evaluation. To solve this problem, you can duplicate your virtual machine or use save state.
It is of course FORBIDDEN to turn in your virtual machine in your Git repository. During the defense, the signature of the signature.txt file will be compared with the one of your virtual machine. If the two of them are not identical, your grade will be 0.
가상 머신의 서명은 첫 번째 평가 후에 변경 될 수 있습니다. 이 문제를 해결하려면 가상 머신을 복제하거나 저장 상태를 사용할 수 있습니다. 물론 Git 저장소에서 가상 머신을 설정하는 것은 금지되어 있습니다. 방어 중에 signature.txt 파일의 서명이 가상 머신의 서명과 비교됩니다. 두 사람이 동일하지 않으면 점수가 0이됩니다.
Bonus list:
• Set up partitions correctly so you get a structure similar to the one below:
• 파티션을 올바르게 설정하여 아래와 유사한 구조를 얻습니다.
• Set up a functional WordPress website with the following services: lighttpd, MariaDB, and PHP.
• lighttpd, MariaDB 및 PHP 서비스를 사용하여 기능적인 WordPress 웹 사이트를 설정합니다.
• Set up a service of your choice that you think is useful (NGINX / Apache2 excluded!). During the defense, you will have to justify your choice.
• 유용하다고 생각되는 서비스를 설정합니다 (NGINX / Apache2 제외!). 방어하는 동안 선택을 정당화해야합니다.
To complete the bonus part, you have the possibility to set up extra services. In this case, you may open more ports to suit your needs.
보너스 부분을 완료하려면 추가 서비스를 설정할 수있는 가능성을 가지고있다. 이 경우 필요에 맞게 더 많은 포트를 열 수 있습니다.
Of course, the UFW rules has to be adapted accordingly.
물론 UFW 규칙은 그에 따라 조정되어야합니다.
The bonus part will only be assessed if the mandatory part is PERFECT. Perfect means the mandatory part has been integrally done and works without malfunctioning. If you have not passed ALL the mandatory requirements, your bonus part will not be evaluated at all.
보너스 부분은 필수 부분이 PERFECT 인 경우에만 평가됩니다. 완벽 함은 필수 부품이 통합되어 오작동없이 작동 함을 의미합니다. 모든 필수 요건을 통과하지 못한 경우 보너스 부분은 전혀 평가되지 않습니다.
'42 Seoul' 카테고리의 다른 글
[Fractal] 프랙탈 구현... 하다 머리 깨질 예정 (0) | 2021.07.02 |
---|---|
[42Seoul] Network netwhat (0) | 2021.06.28 |
[42Seoul/GNL] get next line (0) | 2021.06.12 |
[ft_printf] printf 함수 구현 (0) | 2021.05.13 |
[42Seoul] libft (part . bonus) (0) | 2021.05.11 |
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!