[42 Seoul] born2beroot - 과제 정리2

현톨·2022년 9월 23일
0

42 서울 기록하기

목록 보기
2/8

가상 머신 동작 원리

가상머신이란?: 컴퓨팅 환경을 소프트웨어로 구현한 것으로, 컴퓨터 시스템을 가상화 한것이다. 또한 이곳에서 운영체제와 여러 응용 프로그램을 설치 및 실행시킬 수 있다.

동작 원리: 하이퍼바이저를 통해 하드웨어를 관리하며, 물리적 자원을 가상환경과 분리한다. 만약 가상머신이 실행중이며, 물리환경에서 자원을 추가로 요구한다면, 하이퍼바이저가 유동적으로 자원을 공유한다.

하이퍼바이저: 호스트 컴퓨터에서 다수의 운영체제를 동시에 운영하기위한 플랫폼 ex)vmware, virtual box

유형1: 하이퍼바이저형

  • 하이퍼바이저가 하드웨어를 직접 제어하는 형태
  • 직접 제어하기 때문에 효율적이나 설치가 어려움

유형2: 호스트형

  • 호스트 OS위에서 하이버파이저가 실행 되는 형태
  • 하이퍼바이저 여러개 실행 가능

선택한 운영체제 및 CentOS와 Debian의 차이

CentOS: Red Hat(레드햇 회사에서 배포한 리눅스로 2003년 이전까진 무료였다가 이후 상용화 됨)이 공개한 RHEL을 그대로 가져와 약간의 수정을 거친 것으로, 무료로 사용가능하지만 문제 발생 시 회사에서 지원이 되지 않아 패치가 다소 느림, 서버용 운영체제로 인기가 많다. yum 명령어를 통해 패키지 설치

Debian: 커뮤니티에서 제작하여 배포된 것으로, 무료이며, 개인 사용자 서버용으로 인기가 매우 높다. 패치도 지속적으로 되고 있기 때문에,레드햇 계열에 비해 뒤쳐지지 않는다. apt 명령어를 통해 패키지 설치

가상머신의 목적

  1. 하나의 하드웨어에서 서로 다른 두개 이상의 운영체제를 실행하기 위함
  2. 여러 사용자에게 자원을 독립된 환경으로 분리시켜서 분배하고 싶을 때
  3. 하드웨어에 영향을 주지 않는 독립 환경을 만들고 싶을 때,
    ex)악성코드 분석 시, 감염 등의 영향 방지

APT vs APTITUDE

APT: 소프트웨어의 설치와 제거를 처리하는 패키지 관리 툴

Aptitude: 대화형으로 패키지를 검색해 설치, 제거하는 하이레벨의 패키지 관리 도구로 API보다 더 효율적으로 사용이 가능하다 ex) why, why-not 등의 명령어를 통해 해당 동작이 되고 안되는 이유를 알 수 있으며, 패키지 설치 및 제거 중 출돌 시 해결방법을 제시해줄 수도 있다. 또한 어떤 패키지를 삭제할 때, 사용되지 않는 패키지도 자동으로 삭제해줌 아무튼 훨씬 좋음, apt-get install aptitude 명령어로 설치 가능

AppArmor란?

우분투 내 백그라운드에서 실행되는 보안 기능으로, 보안적으로 취약한 프로세스가 야기시킬 수 있는 손상을 방지함
ex) 웹브라우저, 서버 소프트웨어
특정 프로그램에서 필요한 리눅스 기능, 네트워크 사용 여부, 파일 권한 등에 대한 접근을 허용하는 설정파일로 구성

상태 보기: sudo apparmor_status

기본 설정

  1. 처음 실행 할 때, 가상머신 연결 시 비밀번호가 요구되어야 하며, 연결 후, 사용자 본인 계정에 연결해야한다. 또 비밀번호가 규칙에 잘 맞게 설정되어있는지를 확인해야한다.
  2. UFW 서비스가 시작되었는지 확인하기
    sudo ufw status verbose
  3. SSH 서비스가 시작되었는지 확인하기
    systemctl status ssh
    terminal에서 ssh 접속
    ssh -p 4242 hyuncpar@192.168.56.1
  4. 사용되는 OS가 Debian인지 CentOS인지 확인하기
    uname -a or sh monitoring.sh

사용자

  • 유저가 잘 추가되었는지 확인한다. 이 때, 유저가 sudo와 user42 그룹에 속하는지 확인한다.
    1. 새로운 유저를 생성한다.
    sudo adduser newUser
    2. 제시된 규칙에 맞게 임의로 비밀번호를 만든다.
    3. 피평가자는 과제에 제시된 규칙을 어떻게 설정했는지 설명한다. (보통 1개 혹은 2개의 수정된 파일이 존재해야한다.)
    nano /etc/login.defs
PASS_MAX_DAYS	30 # 패스워드 만기일 설정
PASS_MIN_DAYS	2 # 패스워드 최소 변경일 설정
PASS_WARN_AGE	7 # 패스워드 경고 안내 기한 설정

nano /etc/pam.d/common-password

pam_pwquality.so 
retry=3 패스워드 변경 시 실패횟수 제한 3회
minlen=10 최소 10글자 이상
ucredit=-1 대문자 포함
lcredit=-1 소문자 포함
dcredit=-1 숫자 포함
maxrepeat=3 같은 문자 연속해서 3글자 사용x
reject_username enforce_for_root difok=7
이전 패스워드와 최소 7글자 이상 달라야 함
  • 새로운 유저가 추가된 상태에서 evaluating이라는 그룹을 생성하고, 새 유저에게 할당시켜야한다.
sudo groupadd evaluating
sudo usesrmod -aG evaluating newUser
  • 이러한 비밀번호 정책의 장점과, 그것을 구현할 때의 장단점을 설명할 수 있어야 한다.

    호스트명과 파티션들

  • 이 가상머신의 호스트명이 hyuncpar42인지 확인한다.

  • 로그인 후, 원래의 호스트 명을 수정한 후 가상머신을 다시 실행하여 호스트 명이 업데이트 되었는지 확인한다.

  • 호스트 명을 다시 원래대로 복원한다.

  • 이 가상머신의 파티션들을 확인할 수 있는지 확인한다.

sudo hostnamectl set-hostname <변경할이름>

명령어 확인: lsblk

LVM이란?

Logical Volume Manager의 약자로, 논리적 공간 관리 프로그램이다.
파티션이란 디스크를 원하는 크기로 조각내어 사용하는 것인데, 사용하기에 애매한 여분의 파티션들을 합쳐서 하나의 공간을 만들어내는 것
LVM을 사용하는 이유
1. 여러개의 디스크 공간을 합쳐서 하나인 것처럼 사용하기 위해
2. 사용하기 애매한 공간의 파티션들을 활용하기 위해
3. 기존에 사용중인 디스크 공간을 확장하기 위해

Sudo

  • sudo 프로그램이 가상머신에 제대로 설치되어있는지 체크하세요.
  • 당신의 새로운 유저를 sudo 그룹에 할당시키는 것을 보여주세요.
usermod -aG sudo <사용자이름>
id <사용자이름>
  • 해당 과제는 sudo에 대한 엄격한 규칙들을 요구합니다. 여러 예시를 통하여 sudo의 목적과 동작을 보여주세요. 그리고 과제에서 교구하는 엄격한 규칙들을 구현한 것을 보여주세요.
sudo visudo : sudo 설정파일 편집

# secure_path 끝에 :/snap/bin 추가  

# 다음 설정 추가
Defaults	authfail_message="Authentication faild."
Defaults	badpass_message="The password is incorrect."
Defaults	iolog_dir="/var/log/sudo/"
Defaults	log_input
Defaults	log_output
Defaults	requiretty
Defaults	passwd_tries=3
  • "/var/log/sudo/" 폴더가 존재하는지와 최소 한개 이상의 log 파일이 존재하는지 확인하세요, 파일의 내부에는 sudo와 함께 사용된 명령어들의 기록이 존재해야합니다. 그리고 sudo 명령어를 사용 후 log 파일이 업데이트 되었는지 확인하세요.

UFW

  • UFW 프로그램이 가상머신에 설치되어있는지 체크하세요. 그리고 그것이 제대로 작동하는지 확인하세요.
sudo ufw status verbose

UFW란?

데비안 계열을 비롯한 여러 리눅스 환경에서 작동하는 방화벽 관리 프로그램이다. 단순하고 사용자가 사용하기 쉬운 명령어로 구성되어있다.
방화벽은 데이터 패킷
  • UFW의 활성된 규칙들을 나열하세요, 4242 포트에 대한 규칙도 있어야합니다.
  • 8080 포트를 열기 위한 새로운 규칙을 추가하세요. 그리고 잘 추가되었는지 확인하세요.
sudo ufw allow 8080
  • 그 새로운 규칙을 삭제하세요.
sudo ufw delete allow 8080

SSH

  • SSH 서비스가 가상머신에 제대로 설치되어있는지 체크하세요.
systemctl status ssh
  • 그것이 제대로 동작하는지 체크하세요.

  • SSH가 무엇인지, 그리고 그걸 사용할 때의 장점을 설명하세요.

    SSH란?

    Secure Shell Protocol의 약자로, 인터넷과 같은 public Network를 통해 컴퓨터간의 통신을 할 때, 보다 안전하게 통신을 하기 위해 사용하는 프로토콜이다. 주로 원격 제어를 할 때 많이 사용된다.

  • SSH 서비스가 4242포트만 사용하는지 확인하세요.

  • SSH를 통해 새로운 유저에 로그인하세요. 그리고 SSH로 root에 접근할 수 없어야합니다.

Script monitoring

  • 스크립트가 어떻게 동작하는지 코드를 보여주세요.
  • cron이 무엇인지 설명하세요.

크론이란?

unix 운영체제에서 어떤 작업을 특정 시간에 실행시키기 위한 데몬(백그라운드에서 작업을 하는)프로그램으로, crontab 파일을 통해 cron 작업을 설정할 수 있음

  • 스크립트를 10분마다 실행시키기 위해 무엇을 했는지 설명하세요.
  • 스크립트는 매 10분마다 실행시켜야하며, 스크립트 값이 올바른 것을 보장할 수 있어야합니다. 최종적으로, 스크립트를 수정하지 않고 서버가 실행되면 실행을 멈추게끔 만들어야합니다. (crontab을 수정하라는 뜻인 듯)
profile
기록하는 습관 들이기

1개의 댓글

comment-user-thumbnail
2022년 9월 27일

오호라

답글 달기