열렬히.뛰기

born2beroot - 채점표 (대응)

école 42 > born2beroot > born2beroot - 채점표 (대응)

사전준비사항 (Preliminaries)

부정행위가 의심되면, 평가는 여기서 중지됩니다. "Cheat" 플래그를 사용하여 신고하십시오. 이 결정을 신중하게 내리고 신중하게 사용해주시기 바랍니다.

사전 테스트
  • 방어는 평가 대상인 학생 또는 그룹이 존재하는 경우에만 가능합니다. 이렇게 함으로써 모두가 서로 지식을 공유하며 배울 수 있습니다.
  • 제출한 작업이 없거나(또는 잘못된 파일, 잘못된 디렉토리 또는 잘못된 파일 이름인 경우), 성적은 0이며 평가 프로세스가 종료됩니다.
  • 이 프로젝트에서는 학생들이 자신의 컴퓨터에 있는 Git 저장소를 복제해야합니다.

일반 사항

사항
  • 방어 중에 어떤 지점을 확인해야 하는 경우 즉시 평가 대상 학생이 도움을 줄 수 있도록 해야 합니다.
  • "signature.txt" 파일이 복제된 저장소의 루트에 있는지 확인하십시오.
  • "signature.txt"에 포함된 서명이 평가할 가상 머신의 ".vdi" 파일과 동일한지 확인하십시오. 간단한 "diff"를 사용하여 두 서명을 비교할 수 있습니다. 필요한 경우, 평가 대상 학생에게 ".vdi" 파일이 어디에 위치하는지 물어보세요.
  • 예방을 위해 초기 가상 머신을 복제하여 사본을 보관할 수 있습니다.
  • 평가 대상 가상 머신을 시작하세요.
  • 예상대로 작동하지 않거나 두 서명이 다른 경우 평가 프로세스가 여기에서 중지됩니다.

여기서는 .vdi 파일 확인에 중점을 둔다.

프로젝트 개요

설명해야 할 것.

  • 가상 머신이 작동하는 방식.
  • 그들이 선택한 운영 체제.
  • Rocky와 Debian의 기본적인 차이점.
  • 가상 머신의 목적.
  • aptitude와 apt의 차이점
  • APPArmor가 무엇인지 설명
  • 방어 중에는 10분마다 모든 정보를 표시하는 스크립트가 있어야 함.

간단한 설정 확인

  • 가상머신이 시작될 때 GUI가 없는지 확인합니다.

  • 기계가 시작할 때 비밀번호가 필요하고, 로그인 후 사용자는 root가 아니어야 함. 비밀번호는 과제에서 규정한 규칙을 따라야 하므로 주의해야 합니다.

  • UFW 서비스가 평가자의 도움으로 시작되었는지 확인합니다.

    확인법 : sudo ufw status

  • SSH 서비스가 평가자의 도움으로 시작되었는지 확인합니다.

    확인법 : sudo service sshd status

  • 선택한 운영 체제가 Debian 또는 Rocky인지 평가자의 도움으로 확인합니다.

    확인법 : cat /etc/issue

유저

  • 평가 받는 학생의 로그인을 가진 사용자가 가상 머신에 추가되었는지, "sudo" 그룹과 "user42" 그룹에 속해 있는지 확인하라고 요청합니다.
  1. 현재 계정이 무슨 그룹에 있는지 확인
bash
groups (계정이름)
  1. 새 사용자 만들기 & 암호 할당하기
bash
# 사용자 aaa 추가 (-m : 홈 디렉토리 생성, -s : 쉘 환경 생성)
useradd -m -s /bin/bash aaa
# 비밀번호 추가
passwd aaa
# 접근하기
su aaa
# 계정 aaa의 홈으로 이동
cd /home/aaa
  1. 그룹 “evaluating” 만들기 & 새 사용자 포함시키기
bash
# 루트로 전환
su -
# 새 그룹 만들기
groupadd evaluating
# 새 사용자 포함시키기
usermod -G evaluating aaa

# 그룹에 잘 들어갔는지 확인
groups aaa
  1. 암호 정책의 장단점
  • 현재 암호정책
    • 30일마다 바꿔야 됨.
    • 10개 이상 + 소문자, 대문자 포괄
    • 리트라이 횟수도 조정.
  • 장점
    • 강한 보안을 유지할 수 있음.
  • 단점
    • 비밀번호 자체가 쉬워질 수 있다. (설정하기 귀찮기 때문에)
    • 이 경우, 브루트포스 공격 등에 무방비로 노출 가능

호스트네임과 파티션

  • 먼저, 머신의 호스트 이름이 다음과 같이 올바르게 포맷팅되어 있는지 확인하세요: (~~~)42
  • 이 호스트 이름을 자신의 로그인으로 바꾸고 머신을 다시 시작하세요. 다시 시작할 때 호스트 이름이 업데이트되지 않으면, 평가를 여기서 중단합니다.
  • 이제 머신을 원래의 호스트 이름으로 복원할 수 있습니다.
bash
# 호스트네임 확인하기
hostnamectl

# 호스트네임 변경하기
sudo hostnamectl set-hostname <변경할 hostname>

# 로그아웃 (이후 로그인)
exit

# 원래대로 복원
sudo hostnamectl set-hostname <원래 hostname>

# 로그아웃 (이후 로그인)
exit
  • 평가 받는 학생에게 이 가상 머신의 파티션을 보는 방법에 대해 물어보세요.
  • 출력 결과를 과목에서 제시된 예시와 비교하세요.

SUDO

  1. sudo 확인
bash
whereis sudo
  1. 새 사용자 aaa를 sudo에 넣기
bash
usermod -aG sudo aaa

# 로그아웃
exit

# 계정 들어간 후 sudo 권한 확인
su aaa
sudo whoami
  1. sudo의 가치와 작동 방식을 설명
bash
# 계정 접속
su -
# visudo 보여주기
visudo
  1. sudo의 로그 보여주기
bash
sudo cd /var/log/sudo

UFW

  • 가상 머신에 "UFW" (또는 rocky의 경우 "Firewalld") 프로그램이 올바르게 설치되었는지 확인합니다.
  • 프로그램이 올바르게 작동하는지 확인합니다.
bash
# ufw 설치 여부
whereis ufw
# ufw 작동 여부
sudo ufw status verbose
  • 평가 받는 학생은 UFW (또는 Firewalld)가 무엇인지와 사용하는 가치에 대해 간단히 설명해야 합니다.
  • UFW (또는 Firewalld)에서 활성 규칙을 나열합니다. 포트 4242에 대한 규칙이 있어야 합니다.
  • 포트 8080을 열기 위해 새로운 규칙을 추가합니다. 이 규칙이 추가되었는지 확인하기 위해 활성 규칙을 나열합니다.
  • 마지막으로, 평가 받는 학생의 도움으로 이 새로운 규칙을 삭제합니다. 예상대로 작동하지 않거나 명확하게 설명되지 않으면 평가가 여기서 종료됩니다.
bash
# "8080 포트를 허락한다"라는 규칙을 추가
sudo ufw allow 8080
# "8080 포트를 허락한다"라는 규칙을 추가
sudo ufw deny 8080
# 위의 규칙 자체를 삭제
sudo ufw delete allow 8080

SSH

  • 가상 머신에 SSH 서비스가 올바르게 설치되었는지 확인합니다.
bash
whereis ssh
  • 서비스가 올바르게 작동하는지 확인합니다.
bash
sudo service sshd status
  • 평가 받는 학생은 SSH가 무엇인지와 사용하는 가치에 대해 간단히 설명할 수 있어야 합니다.
    • 포트포워딩이란 무엇인지, 연결 과정 세세히 설명
    • localhost가 무엇인지도 추가적으로 설명
  • SSH 서비스가 포트 4242만 사용하는지 확인합니다. (왜 80이 열렸는지 꼭 설명하기)
bash
sudo vi /etc/ssh/sshd_config
  • 평가 받는 학생은 새로 생성한 사용자로 로그인하도록 SSH를 사용하는 방법을 안내해야 합니다. 이를 위해서는 키 또는 간단한 비밀번호를 사용할 수 있습니다. 이는 평가 받는 학생에 따라 다릅니다.
  • 물론 주제에서 명시한대로 "root" 사용자로는 SSH를 사용할 수 없도록 해야 합니다. 예상대로 작동하지 않거나 명확하게 설명되지 않으면 평가가 여기서 종료됩니다.
bash
# 원래 아이맥에서 쉘 접속
ssh aaa@localhost -p 8000

Script monitoring

  1. cron이 무엇인지 설명하고, 보여주기
  2. 스크립트 설명하기
  3. 10분 당 한번씩 나오는지 보기
bash
sudo crontab -u root -e

보너스 - 서비스 구현하기

서비스 접근하기

워드프레스 : localhost:8080/wordpress

보너스 서비스 : localhost:8080/phpmyadmin

서비스 설명하기

  • lighttpd가 뭔지 설명
  • mariadb가 뭔지 설명
  • php가 뭔지 설명
  • wordpress의 작동원리 설명
  • phpmyadmin을 추가한 이유

평가 후 삭제

bash
# user 한번에 보기
grep /bin/bash /etc/passwd | cut -f1 -d:

# user + 해당 user가 속한 홈 디렉토리 삭제
# 삭제 후 /home 꼭 확인해주기
sudo userdel newuser

# 그룹 삭제
sudo groupdel evaluating

# 그룹 확인
cat /etc/group | grep "^eval"