2021. 7. 5. 22:15ㆍ42 SEOUL/42 cursus
Mandantory
Virtual box나 UTM이라는 가상 머신에 운영체재를 설치해야 하며, 최신 안정화 버전의 Centos OS 또는 Debian OS를 사용한다.
(처음이면 데비안 추천한다함)
Centos는 복잡하기 때문에 KDump를 설정하지 않아도 된다. 하지만 SELinux와 AppArmor for Debian는 필수이다.
LVM을 이용해 두 개 이상의 파티션을 만들어야 하며, 파티션은 다음과 같이 기대된다.
평가 도중 선택한 운영체제에 대해 질문을 받을 수 있다. 예를 들어 패키지 관리툴인 apt와 aptitude의 차이점이라던가 SELinux나 AppArmor이란 무엇인가 등에 대한.(쓰는 운영 체제에 대해 이해해라)
SSH 서비스의 포트는 4242이며, 보안상의 이유로 root폴더에 ssh로 연결할 수 없어야 함.
ssh의 사용은 평가 중 새로운 계정을 세팅하는 것으로 테스트되며 어떻게 동작하는지 이해하고 있어야 함.
UFW 방화벽으로 운영체제를 설정해야 하기 때문에 4242포트만 열어두어야 함.
가상 머신이 시작될 때 방화벽이 켜져있어야 하며, 센토스의 경우 기본 방화벽 대신 UFW를 사용해야 하며, 아마 DNF가 필요할 것임.
가상 머신의 Host 명은 42로 끝나야 하며, 평가 중 이 이름을 수정해야 함.
빡센 암호 룰을 구현해야 하며, 엄격한 룰로 sudo 를 설치하고 설정해야 함
루트 사용자 외에 추가로 유저 이름으로 현재 로그인되어있는 사용자가 있어야 하며, 이 사용자는 user42와 sudo 그룹에 속해 있어야 함.
평가 중 새로운 유저를 생성하고 그룹에 배정해야 함.
빡센 암호 룰에는 다음과 같은 필요사항이 따름
- 암호는 30일마다 만료가 됨.
- 비밀번호의 최소 수정 허용일수는 2일
- 유저는 패스워드 만료 7일 전 경고를 받음
- 패스워드는 적어도 10글자이며, 한 글자 이상의 대문자와, 숫자로 이루어지며, 3글자 이상 연속되면 안 됨.
- 패스워드는 유저의 이름을 포함하고 있으면 안 됨.
- 루트 사용자의 비밀번호는 규칙에 포함되지 않음.
설정 파일을 세팅한 후 루트 계정을 포함한 머신의 모든 비밀번호를 바꿔야 함.
Sudo 그룹의 강력한 설정을 위해 다음과 같은 필요사항이 따름
- Sudo를 통한 인증은 최대 3회의 기회가 주어짐
- Sudo를 통한 인증이 실패했을 때, 선택한 사용자 지정 메세지가 출력되어야 함
- Sudo를 통한 각 Action은 입, 출력 모두 문서화되어 /var/log/sudo/ 폴더에 저장되어야 함.
- 보안 상의 이유로 TTY 모드가 활성화되어야 함.
- 역시 보안상의 이유로, Sudo에서 사용할 수 있는 루트가 제한되어야 함.
- 예를 들어 /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin
마지막으로
간단한 monitoring.sh라는 간단한 스크립트를 불러와야 하며, bash 환경에서 개발되어짐.
서버 시작 시 스크립트는 10분마다 모든 터미널에 아래와 같은 정보를 표시해야 하며 (wall을 참고), 에러를 표시하지 않고, 선택사항으로 배너 옵션을 가질 수 있음.
스크립트는 다음과 같은 정보를 항상 출력 가능해야 함.
- OS와 커널의 아키텍처
- 물리 프로세서(Core)의 개수
- 가상 프로세서(Thread)의 개수
- 서버의 사용 가능한 램의 전체 크기와 현재 사용량을 백분율로 표시해야 함
- 사용 가능한 전체 저장 공간의 크기와 현재 사용량을 백분율로 표시해야 함
- 프로세서(Thread)의 현재 사용량을 백분율로 표시해야 함
- 마지막 재부팅 시간을 YYYY-MM-DD hh:mm로 표시
- LVM이 동작중인지 아닌지 표시해야 함
- 연결된 네트워크의 수를 표시해야 함
- 서버를 현재 사용 중인 유저의 수
- 서버의 IPv4 주소와 MAC주소
- sudo를 통해 실행된 명령어의 수
평가 중 해당 스크립트의 구동에 대해 설명해야 하며, 수정 없이 중단해야 함.(cron 참조)
과제의 필요 요구사항을 확인할 수 있는 명령
보너스)
파티션을 정확히 설정했다면 다음과 같은 구조를 얻었을 것.
lighttpd와 MariaDb, PHP를 통해 기능적인 워드 프레스 웹 사이트를 설정해보세용
Apache, NGINX를 제외한 유용하다고 생각되는 서비스를 세팅하시오. 평가 중 선택한 이유에 대해 가드해야함
보너스파트는 Mandantory가 완벽할 경우에만 통과임
Git 저장소의 루트 디렉토리에 있는 signature.txt 파일만 제출하면 되며, 가상 머신의 서명을 붙여 넣어야 함.
받는 방법은 기본 설치 폴더를 연 후,
- Windows: %HOMEDRIVE%%HOMEPATH%\VirtualBox VMs\
- Linux: ~/VirtualBox VMs/ • MacM1: ~/Library/Containers/com.utmapp.UTM/Data/Documents/
- MacOS: ~/VirtualBox VMs/
그런 후 가상 머신의. vdi 파일에서(UTM 사용자의 경우 .qcow2) sha1 포맷의 서명을 검색한다.
센토스 서버의 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
얻을 수 있는 출력은 다음과 같음
- 6e657c4619944be17df3c31faa030c25e43e40af
가상 머신의 서명이 첫 평가 이후로 변경될 수 있으므로, 해당 문제를 위해 가상 머신을 복사하거나 혹은 저장 상태를 사용할 수 있음.
깃 저장소에 가상머신을 넣는 것은 금지되며, 평가 중 Signature.txt 파일의 서명이 가상머신의 서명과 비교될 것입니다.
'42 SEOUL > 42 cursus' 카테고리의 다른 글
42CURSUS) push_swap (과제 정리)-1 (0) | 2021.07.15 |
---|---|
42 CURSUS / Born 2 be root (가상 머신 설치) -2 (0) | 2021.07.06 |
42 CURSUS / ft_printf_04 (Flow chart) (0) | 2021.07.05 |
42 CURSUS / ft_printf_03 (Flow chart) (0) | 2021.06.21 |
42 CURSUS / ft_printf_02 (0) | 2021.06.19 |