사전준비사항 (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" 그룹에 속해 있는지 확인하라고 요청합니다.
- 현재 계정이 무슨 그룹에 있는지 확인
bash
groups (계정이름)
- 새 사용자 만들기 & 암호 할당하기
bash
# 사용자 aaa 추가 (-m : 홈 디렉토리 생성, -s : 쉘 환경 생성)
useradd -m -s /bin/bash aaa
# 비밀번호 추가
passwd aaa
# 접근하기
su aaa
# 계정 aaa의 홈으로 이동
cd /home/aaa
- 그룹 “evaluating” 만들기 & 새 사용자 포함시키기
bash
# 루트로 전환
su -
# 새 그룹 만들기
groupadd evaluating
# 새 사용자 포함시키기
usermod -G evaluating aaa
# 그룹에 잘 들어갔는지 확인
groups aaa
- 암호 정책의 장단점
- 현재 암호정책
- 30일마다 바꿔야 됨.
- 10개 이상 + 소문자, 대문자 포괄
- 리트라이 횟수도 조정.
- 장점
- 강한 보안을 유지할 수 있음.
- 단점
- 비밀번호 자체가 쉬워질 수 있다. (설정하기 귀찮기 때문에)
- 이 경우, 브루트포스 공격 등에 무방비로 노출 가능
호스트네임과 파티션
- 먼저, 머신의 호스트 이름이 다음과 같이 올바르게 포맷팅되어 있는지 확인하세요: (~~~)42
- 이 호스트 이름을 자신의 로그인으로 바꾸고 머신을 다시 시작하세요. 다시 시작할 때 호스트 이름이 업데이트되지 않으면, 평가를 여기서 중단합니다.
- 이제 머신을 원래의 호스트 이름으로 복원할 수 있습니다.
bash
# 호스트네임 확인하기
hostnamectl
# 호스트네임 변경하기
sudo hostnamectl set-hostname <변경할 hostname>
# 로그아웃 (이후 로그인)
exit
# 원래대로 복원
sudo hostnamectl set-hostname <원래 hostname>
# 로그아웃 (이후 로그인)
exit
- 평가 받는 학생에게 이 가상 머신의 파티션을 보는 방법에 대해 물어보세요.
- 출력 결과를 과목에서 제시된 예시와 비교하세요.
SUDO
- sudo 확인
bash
whereis sudo
- 새 사용자 aaa를 sudo에 넣기
bash
usermod -aG sudo aaa
# 로그아웃
exit
# 계정 들어간 후 sudo 권한 확인
su aaa
sudo whoami
- sudo의 가치와 작동 방식을 설명
bash
# 계정 접속
su -
# visudo 보여주기
visudo
- 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
- cron이 무엇인지 설명하고, 보여주기
- 스크립트 설명하기
- 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"