복구하기

ip addr ls cd ~ : 본인의 홈 디렉토리 이동 cd /home/master master@master:~$ master : 사용자 master : 컴퓨터 이름 ~ : 위치 sudo nano /etc/hostname 이름을 master → st로 변경 st sudo reboot (재확인) master@sr:~$로 변경되는 것을 확인한다 192.168.0.202 에서 변경을 한다 sudo nano 위 서버로 들어가보면 root것의 var/www/html/index.html이 메인페이지인데 이 위치를 master의 public_html로 변경한다 (어려움) 이건 root만이 할 수 있음 100번 서버에서는 아무것도 못함 교수님만이 관리하는 100번 본인의 번호는 본인들이 관리해라 root로 변경해가지고 일반 사용자가 홈디렉토리 운영하도록 설정 = 가상 호스팅 sudo a2enmod userdir (웹페이지 뜬다 이때 사용자 추가) systemctul restart apache http://192.168.0.202/~master 계정 추가할 만큼 추가해도 홈페이지 돌아간다 (해킹 당하면 다 안돌아가니까 번거로움) 사용자 추가 adduser mcyber public_html을 사용자 다만들어야하는데 , 하나씩 만들어주면 힘드니까 계정 추가할때 특정 디렉토리를 만들어주면 번거로움을 줄여준다 etc/skel을 복사하면 따로 만들 필요가 없다 , 이때 skel에 파일과 디렉토리 만들어줘야한다 이때 바로 mkdir public_html을 할 경우 루트 권한이 없기에 추가 불가능 sudo passwd root (비밀번호 바꾸기 , 루트 권한 실행할때 비번추가한적 없기에) 비번 변경 후 su 들어가면 mkdir public_html 만들어준다 pwd - 내 위치 어디냐 물어보는것 clear - 지워달라 파일 복사 cd /etc/skel 이제 여기에 public_html이 만들어졌다 계정이 추가되자마자 돌아가야하니까 touch backup.sh chmod 777 backup.sh cd public_html/ ls touch index.html touch idnex.php unzip 'codeigniter4-framework-v4.6.1-0-gd021b04_(1).zip' 을 해서 압축을 풀면 2개로 나눠진다. (압축 푼것, 압축) 압축 푼 파일을 CI4로 바꿔준다 mv codeigniter4-framework-d021b04/ CI4 로변경한 후 ls 확인시 CI4로 바뀐것을 확인 할 수 있다. -> 원래 압축본은 지워준다 rm - rf 'codeigniter4-framework-v4.6.1-0-gd021b04_(1).zip' 해주면 CI4, index.html, index.php가 나온것을 확인한다 cd /home ls 확인하면 master, mcyber가 만들어진걸 확인 할 수잇다 forbidden이 뜬다 이때 chmod 711 $HOME chmod 755 /home/mcyber/public_html 다시 들어갈때는 mcyber로 들어가서 123456 으로 드렁가면 mcyber@st:~ chmod 711 $HOME chmod 755 /home/mcyber/public_html 다시 한 후 st.mcyber.kr에 들어가면 오류, 웹 서버설정이 문제다

웹 서버 설정

(p.689) 고급 웹 서비스 구현하려면 웹 서버의 설정 파일인 /etc/apache2/apache2.conf 의미 파악이 중요하다 아파치 웹 서버 설정은 /etc/apache2/ 디렉터리에 여러 개의 파일로 분리,저장 되어 있다 주 설정 파일인 apache2.conf의 중요의미 몇가지를 알아보면 ServerRoot "/etc/apache2" → 웹 서버의 설정 파일, 로그 파일 등이 저장되는 최상위 디렉터리 Listen 80 → 웹 서버의 포트 번호. 기본적으로 대부분의 웹 서버는 80번 포트를 사용 (이 설정은 ports.conf에 있음) Include conf.modules.d/*.conf → 설정 파일에 포함될 파일의 경로와 파일 이름이 들어 있음 User ${APACHE_RUN_USER} → 웹 서비스를 작동하는 사용자. /etc/apache2/envvars 파일에서 www-data로 설정되어 있음 Group ${APACHE_RUN_GROUP} → 웹 서비스를 작동하는 그룹. /etc/apache2/envvars 파일에서 www-data로 설정되어 있음 MaxKeepAliveRequests 100 → 연결당 처리할 수 있는 최대 요청 수 /Directory /var/www/> Option Indexes FollowSymLinks AllowOberride All Require all granted //Directory> → 웹 서버는 디렉터리 단위로 설정한다. 즉, 각 디렉터리마다 허가/거부 등의 접근 권한을 다르게 할 수 있다. 'Option Indexes FllowSymLinks'의 의미는 현재 디렉터리에서 DirectoryIndex에 지정된 파일이 없다면 파일의 목록을 대신 출력하라는 의미다. 자세한 내용은 검색 엔진에서 apache2.conf를 검색하면 확인가능하다 파일 수정 후 문법 오류 있는지 체크하려면 apache2ctl configtest명령어를 입력해 테스트한다 설정 이상이 없을 경우 'Syntax OK'라는 메시지가 나온다

복구

파일 압축을 풀면 home으로 번거롭게 들어가진다 찾는 방법은 1. 압축경로를 지정 hosting.conf -> home/mcyber/public_html에 있다고 지정해줘야하던가 2. apt -y install zip 을 다운받은 후 mcyber@st:~/public_html$ ls mcyber_20250630100647.tgz mcyber_2025063010.sql (파일 붙여넣기) tar -xzvf mcyber_20250630100532.tgz (압축 풀기)
풀면 home이 생기는데 경로가 복잡하게 /public_html/home/mcyber/public_html으로 들어가니까 public_html로 한번에 붙이기위해 zip -r home.zip ./*.* rm -rf home.zip zip -r home.zip auth includes index.html index.php logs intro packet server static study mv home.zip ../../../ unzip home.zip 데이터베이스 복구 mysql show databases; create database mcyber; CREATE USER 'mcyber'@'localhost' IDENTIFIED BY '123456'; GRANT ALL PRIVILEGES ON mcyber.* TO 'mcyber'@'localhost'; flush privileges; mysql -u mcyber -p mcyber < mcyber_2025063016.sql 미션 다운받은 리눅스 이미지를 usb에 저장하여 부팅 가능하도록 만들것!



최종 복구 방법

mcyber@st: mkdir public_html ls -al 하면 public_html 생성 cd public_html/ ls rz -E (파일 가져오기) 압축 풀고 들어가서 많은곳 다시 압축해서 붙여넣기 ls public_html.zip이 생긴다 이걸 unzip public_html.zip하면 끝 여기서 데이터베이스까지 불러오려면 ls su -> root권한으로 데이터베이스 복구 mysql show databases; create database mcyber; CREATE USER 'mcyber'@'localhost' IDENTIFIED BY '123456'; GRANT ALL PRIVILEGES ON mcyber.* TO 'mcyber'@'localhost'; flush privileges; mysql -u mcyber -p mcyber < mcyber_2025063016.sql