주의!
이것만 보고 평가받으면 절대 통과할 수 없습니다. 이대로만 진행하면 평가를 받을 수 있는 상태가 되지만, 이 글은 평가를 통과하기 위한 글이 아님을 유의해주세요.
이 글은 평가표가 150줄 쯤 되는 대장정의 시작일 뿐입니다. 치트 시트 논란을 피하기 위해 일부러 설명은 빼고 적었습니다.
데비안 설치
https://www.debian.org/releases/stable/debian-installer/
가서 amd64 다운로드 먼저 누르고 시작
command + space에서 vir 검색하면 바로 버츄얼박스 나옴
당연히 아무것도 없을테니 위에 new 클릭
이름과 설정 하고 Continue 누른 다음부터는 엔터 눌러서 넘겨도 됨
잘 되면 start버튼 클릭. 잘 안되면 대부분 goinfre 용량 문제임. 자리를 옮기고 다시 할 것.
시작할 때 설치한 debian 찾아서 넣고 start 클릭
gui 쓰지 말라고 했으니 install. 처음 키면 엄청 작을텐데 command + c 누르면 키울 수 있음
한국어 해봐야 아무 의미 없음 그냥 영어 ㄱ
지역 미국으로 될텐데 other - asia 가서 남한으로 설정. 이후에 timezone 등 편하게 하려고 하는거라 안 해도 괜찮음. 북한은 안해봤는데 아마 북한도 별 상관은 없을 듯.
엔터 엔터 후 멍 때리기
서브젝트에서 하라는 대로 id + 42
그냥 엔터
루트 비밀번호 설정 + 비밀번호 확인
유저 네임 입력. 친절하게 한번 하면 다음에도 들어가 있음
방금 입력한 유저의 비밀번호 설정 + 입력한 비밀번호 확인
서브젝트 요구사항이라 세번째걸로
그냥 엔터
서브젝트에서 나누라고 했으니까 나누고 YES 누른 다음 물 한잔 마시고 오면 됩니다.
여기에도 비밀번호 입력 - 입력한 비밀번호 확인
엔터 엔터 Yes 누른다음 일어나서 허리 한번 피기
엔터 엔터
카이스트로 바꾸고 엔터 엔터 후 멍 때리기
엔터 엔터 후 잠시 멍 때리기
Yes! 11버전을 클러스터 맥에 설치할 때 no 누르면 설치 다해도 실행 안됨.
어?! 서브젝트에서 sda1에다가 설치하랬는데? 싶은 생각이 들어도 그냥 2번 고르시면 됩니다. 물 한잔 더 마시고 허리 한번 더 필거면 1번 고르시고 /dev/sda1 입력하시면 되구요
설치 끝! 엔터 누르면 자동으로 재부팅됨. 기다렸다가 화면 나오면 한번 더 엔터
LVM 설정할때 입력한 비밀번호 입력.
'뭐야 왜 폰트가 변했어' 라고 생각하면서 root 로 로그인
lsblk 해보면 부트로더를 /dev/sda 에다가 설치했지만 서브젝트에서 원하는 대로 sda1에 설치된 모습을 확인 가능. 설명을 다 빼려다가 궁금할 것 같아서 이건 남겼음.
sudo 설치
apt-get update 해서 패키지 목록 업데이트 해주고
apt-get install sudo 로 sudo 설치
visudo 로 sudoers에 접근.
서브젝트에는 secure_path를
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin
으로 하라고 되어있으니 /snap/bin 추가
Defaults authfail_message="권한 획득 실패 메세지"
Defaults badpass_message="비밀번호 틀릴때 메세지"
Defaults iolog_dir="/var/log/sudo/"
Defaults log_input
Defaults log_output
Defaults requiretty
Defaults passwd_tries=3
그 밑에 다른 정책들 추가
이런 모습이 되면 control + x 를 누르고 Y 를 눌러서 저장하면서 나가기
visudo 한번 더 해서 제대로 입력했는지 확인
서브젝트에 적힌대로 /var/log/sudo에 저장하기로 했으니 해당 폴더가 있는지 확인.
없으면 mkdir /var/log/sudo 실행해서 만들어줘야함.
usermod -aG sudo youjeon 을 입력해서 해당 유저를 sudo 그룹에 넣은 다음 해당 유저로 로그인해서 sudo 명령어 아무거나 실행
su - 로 루트로 다시 로그인 한 다음 /var/log/sudo/00/00/01/log 열어서 위에서 입력한 명령어가 잘 들어갔는지 확인
UFW 설치
su -
apt-get install ufw -y
ufw status verbose
ufw enable
ufw default deny
ufw allow 4242
ufw status verbose
이렇게 나온걸 확인
SSH 설치
su -
apt install openssh-server 거의 대부분 이미 깔려있음
vim /etc/ssh/sshd_config
#Port 22 -> Port 4242 로 변경
#PermitRootLogin prohibit-password -> PermitRootLogin no 로 변경
systemctl restart ssh
systemctl status ssh
이렇게 되어있던걸
이렇게 변경
hostname -I(쉬프트 i) 입력해서 가상머신의 ip 확인
그 다음 잠시 vm을 끄고 나옴(반드시 power off 해야함)
버츄얼 박스로 나와서 Tools 옆에 network 눌러줌
위에 create 누르면 새로운 네트워킹이 만들어짐
vm 클릭해서 위에 setting 누르고 Network 누른다음 Advanced 눌러서 밑에 Port Fowarding 눌러줌
오른쪽에 + 버튼 눌러서 포트 포워딩 룰을 새로 만든 다음 Host IP 에 vboxnet0 에 적힌 ip 를 Guest IP 에 위에서 hostname -I 에 나온 ip 를 입력하고 양쪽 포트는 모두 4242를 입력한 다음 OK 눌러서 나옴
Adapter 2 눌러서 새로운 어댑터를 만들어주고 Attached to 를 Host-only Adapter로, name을 vboxnet0 로 바꿔줌
가상머신 다시 킨 다음 터미널에 ifconfig 치면 vboxnet0 와 그 ip 가 적힌걸 확인 가능
터미널에서 ssh id@192.168.56.1 -p 4242 이렇게 치고 패스워드 입력하면 ssh 로 접근 가능
만약에 IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! 이런 문구가 나오면서 ssh 로그인이 안된다면
터미널에서
cd
cd .ssh/
rm -r known_hosts
이렇게 입력한 다음 다시 로그인하면 해결
설정에서 막아둬서 root 로는 로그인 불가능한거 확인
패스워드 정책 설정
su -
vi /etc/login.defs
PASS_MAX_DAYS 30
PASS_MIN_DATS 2
PASS_WARN_AGE 7
좀 많이 내려야 있음
apt-get -y install libpam-pwquality
vi /etc/pam.d/common-password
retry=3 뒤로 설정들 쭉 붙일것
minlen=10 ucredit=-1 lcredit=-1 dcredit=-1 maxrepeat=3 reject_username enforce_for_root difok=7
passwd -e <사용자명>
오타 있나 한번 더 확인할 것
monitoring.sh 설정
apt-get -y install sysstat
vi /root/monitoring.sh
아래 내용 그대로 입력. 틈틈히 저장하고 출력 확인하면서 만들 것.
printf "#Architecture: "
uname -a
printf "#CPU physical : "
nproc --all
printf "#vCPU : "
cat /proc/cpuinfo | grep processor | wc -l
printf "#Memory Usage: "
free -m | grep Mem | awk '{printf"%d/%dMB (%.2f%%)\n", $3, $2, $3/$2 * 100}'
printf "#Disk Usage: "
df -a -BM | grep /dev/map | awk '{sum+=$3}END{print sum}' | tr -d '\n'
printf "/"
df -a -BM | grep /dev/map | awk '{sum+=$4}END{print sum}' | tr -d '\n'
printf "MB ("
df -a -BM | grep /dev/map | awk '{sum1+=$3 ; sum2+=$4 }END{printf "%d", sum1 / sum2 * 100}' | tr -d '\n'
printf "%%)\n"
printf "#CPU load: "
mpstat | grep all | awk '{printf "%.2f%%\n", 100-$13}'
printf "#Last boot: "
who -b | awk '{printf $3" "$4"\n"}'
printf "#LVM use: "
if [ "$(lsblk | grep lvm | wc -l)" -gt 0 ] ; then printf "yes\n" ; else printf "no\n" ; fi
printf "#Connections TCP : "
ss | grep -i tcp | wc -l | tr -d '\n'
printf " ESTABLISHED\n"
printf "#User log: "
who | wc -l
printf "#Network: IP "
hostname -I | tr -d '\n'
printf "("
ip link show | awk '$1 == "link/ether" {print $2}' | sed '2, $d' | tr -d '\n'
printf ")\n"
printf "#Sudo : "
journalctl _COMM=sudo | wc -l | tr -d '\n'
printf " cmd\n"
잘 나오나 확인
chmod +x monitoring.sh
crontab -e
*/10 * * * * /root/monitoring.sh | wall 입력
10 말고 1분으로 놓고 ssh 로 로그인해서 잘 나오는지 보면 좋다.
평가 전 준비
평가 전에 그룹 지정
groupadd user42
usermod -aG sudo,user42 <사용자이름>
usermod -g user42 <사용자이름>
vm을 상태 저장하면서 종료
스냅샷을 남긴다.
터미널에서 cd /goinfre/intra id/vm이름 으로 가상머신이 설치된 폴더로 진입
shasum vm이름.vdi 를 실행
잠시 기다리면 가상머신의 서명이 나옴
여러차례 실행하면서 바뀌는지 확인
shasum vm이름.vdi > signature.txt 에 넣고 git push 해서 평가준비
'프로그래밍' 카테고리의 다른 글
[42 서울] push_swap을 케이크처럼 쉽게 먹는 법 - 2 (0) | 2022.01.18 |
---|---|
[42 서울] push_swap을 케이크처럼 쉽게 먹는 법 - 1 (0) | 2022.01.16 |
[42서울] ft_printf 보너스 가이드 (0) | 2021.12.12 |
새로 들어오는 카뎃들을 위한 libft 가이드 (0) | 2021.10.30 |
자주 쓰게되는 vim 명령어 (0) | 2021.02.20 |