[Born2beroot] 공부 기록

최별 Choi Byeol·2022년 6월 20일
0

42Seoul

목록 보기
6/6

기본 내용 정리

특정한 규칙을 가진 VirtualBox (또는 UTM) 머신을 만들어보는 프로젝트

가상머신 (Virtual Machine)

  • 컴퓨터 내의 컴퓨터처럼 작동하는 가상의 환경, 즉 컴퓨터 속에서 또 다른 컴퓨터를 에뮬레이션 하는 소프트웨어
  • 사용하는 소프트웨어가 가상머신이 제공하는 환경과 자원의 제한을 받고 가상세계 밖으로 벗어날 수 없음
  • VirtualBox는 시스템 가상머신으로써 운영체제를 설치하고 실행하기 위해 컴퓨터의 메모리를 분할하여 단일 컴퓨터에서 격리된 여러 실행환경을 생성함.
  • Hypervisor(가상 머신을 생성하고 구동하는 소프트웨어)

가상머신 사용 목적

  • 하나의 컴퓨터로 동시에 서로 다른 2개 이상의 운영체제를 실행하고 싶은 경우
  • 하나의 컴퓨터의 자원을 여러 명에게 나누어주고 싶은데, 각 사용자 간의 상호 간섭을 없애고 싶을 때
  • 컴퓨터의 다른 부분에는 영향을 주지 않는 독립 환경을 만들고 싶을 때
    • 악성코드 분석
    • 각종 인증, 보안 프로그램을 많이 깔아야 하는 경우
    • 명령어를 실험해 보고 싶은 경우 ex) rm -rf

가상머신 장점

  1. 비용 절감

    여러 가상 환경을 하나의 인프라(하드웨어)에서 설치하기에 물리적 인프라 설치 공간을 줄일 수 있게 됨. 이때문에 많은 서버를 유지 보수하지 않아도 되고 많은 전력을 사용할 필요가 없어 비용을 줄이는 데 도움이 된다.

  2. 간편함+속도

    새로운 환경(OS)을 구동하려는 경우 새 환경 전체(물리적 서버 포함)를 준비하는 것 보다 빠르고 간편함.

  3. downtime의 최소화

    VM은 호스트가 예기치 않게 중단될 경우 다른 물리적 서버의 Hypervisor(가상 머신을 생성하고 구동하는 소프트웨어)로 이전 가능.

 

부트로더 (GRUB)

  • 운영체제가 실행되기 이전에 미리 실행되어 커널이 올바르게 실행될 수 있도록 사전 작업을 수행하고 아무 이상 없이 운영체제를 실행시키기 위한 프로그램

 

리눅스 특징

  • 유닉스와 완벽한 호환
  • 공개 운영체제
  • PC용 OS보다 안정적, 보안면에서도 우수한 성능
  • 다양한 네트워킹 기술 제공, 서버용으로 적합
  • 배포판이 아닌 리눅스 자체는 무료

 

CentOS와 Debian의 차이점

centOS

  • 2004년 최초 출시
  • Linux 배포판
  • 무료, 오픈소스, 엔터프라이즈급
  • 대규모 커뮤니티에서 지원
  • RedHat에서 지원
  • RedHat에서 공개한 RHEL을 그대로 가져와 로고만 바꿈.
  • RPM패키지형식 / YUM과 DNF를 패키지 관리자로 사용
  • 다양한 아키첵처를 지원하지 않음
  • 둘 다 데스크톱 응용 프로그램을 지원하지만 CentOS는 데비안보다 약간 우위
  • 쉬운 GUI가 없다.

Debian

  • 1993년 최초 출시
  • 오픈소스 구성요소같은 운영체제
  • 데비안 프로젝트에 속한 개인 그룹이 구축 및 지원
  • Linux를 커널로 사용
  • 특징 :
    • 패키지 설치 및 업그레이드의 단순함.
  • DEB 패키지 형식 / dpkg와 APT를 패키지 관리자로 사용
  • 많은 패키지를 가지고 있음
  • 데스크톱 친화적인 GUI가 있다.
  • 업그레이드 편함.

 

aptitude, apt

aptitude

  • 사용자 인터페이스를 추가하여 대화형으로 패키지를 검색하고 설치 또는 제거할 수 있는 고급 패키징 도구에 대한 프론트엔드
  • 강력한 검색 제공

apt

  • 소프트웨어 설치 및 제거를 정상적으로 처리하는 무료 오픈소스 소프트웨어
  • 처음엔 .deb(데비안) 패키지 용으로 설계되었지만, RPM 패키지 관리자와 호환되도록 만들어짐
  • GUI가 없음
  • apt-get, apt-mark, apt-cache 등이 있음

Aptitude

  • 상위 수준의 패키지 관리자
  • 패키지 설치 혹은 삭제 중 충돌될 경우 마땅한 조치를 제안함
  • 사용하지 않는 패키지를 자동으로 제거함

APT

  • 다른 상위 수준의 패키지 관리자가 사용할 수 있는 하위 수준의 패키지 관리자
  • 패키지 설치 혹은 삭제 중 충돌될 경우 프로세스가 죽을 수 있음
  • 사용하지 않는 패키지에 대한 추가적인 옵션 필요

 

APPArmor

  • 시스템 관리자가 프로그램 프로필 별 프로그램의 역량을 제한할 수 있게 해주는 리눅스 커널 보안 모듈
  • Linux 애플리케이션 보안 시스템. 운영 체제와 응용 프로그램을 사전에 보호하는 커널 모듈
  • CentOS와 같은 제품 및 파생제품은 SELinux, 다른 대부분은 APPArmor를 사용
  • 강제적 접근 통제(MAC)를 제공함으로써 전통적인 유닉스 임의적 접근 통제 모델(DAC)을 지원
  • SELinux를 대체하는 한 부분으로서 제공
  • 개별 응용프로그램을 보호하는 일에 집중, 응용프로그램 단위의 보안 모델 구현
  • APPArmor는 순전히 정책 파일을 기반으로 함
    SELinux는 정책파일에 올바른 파일 시스템 레이블이 필요함

DAC

  • 임의접근제어, Discretionary Access Control
  • 소유자가 사용자 또는 그룹이 자원에 접근하는 것을 조절

MAC

  • 강제접근제어, Mandatory Access Control
  • 정의된 정책을 활용해 사용자와 프로세스의 행동 제어
  • sudo dpkg -l apparmor
    • apparmor가 설치되어 있는지 확인
  • sudo apt install apparmor
    • apparmor 설치
  • sudo apt install apparmor-utils
    • apparmor utils 설치
  • aa-enabled
    • apparmor의 활성화 여부 확인

 

SUDO 적용, 그룹 설정

sudo 설정 등 설정 후에 명령어가 먹지 않는다면, 로그아웃 후 재 로그인하여 실행

sudo 설치 및 설정

  • su - 명령어를 통해 root 계정으로 이동.
  • sudo가 설치되어 있는지 여부 확인.
    dpkg -l sudo
    - dpkg는 데비안 패키지 관리 시스템의 기초가 되는 소프트웨어
    dpkg 명령어가 .deb 패키지의 설치, 삭제, 정보 제공을 위해 사용된다.
    - 설치되어 있지 않을 경우 아래의 명령어를 통해 설치
    apt install sudo
  • 아래 명령어를 통해 sudoer 파일 접근
    visudo
    - sudoer 파일은 일반 편집기로 접근하면 많은 제약이 있다.
    /etc/sudoers 파일을 직접 편집하다가 실수가 발생하면, sudo를 사용할 수 없게 된다.
    visudo는 문법체크를 해준다.
  • secure_path에 서브젝트에서 요구하는대로 /snap/bin 추가
secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"

sudo 명령 실행 시 현재 계정의 쉘이 아닌 새로운 쉘을 생성하고 그 안에서 명령을 실행하는데, 이 때 명령을 찾을 경로를 나열한 환경변수인 PATH값이 바로 secure_path

트로이목마 해킹 공격에 대한 일차적인 방어 기능을 제공. (사용자의 부주의로 현재 계정의 PATH에 악의적인 경로가 포함된 경우, 이를 무시함으로써 sudo를 통한 전체 시스템에 해킹되는 경우를 방지)

  • Default와 주석 사이 아래 옵션들을 추가적으로 설정
Defaults	authfail_message="원하는 에러메세지" #권한 획득 실패 시 출력 (sudo 인증 실패 시)
Defaults	badpass_message="원하는 에러메세지" #sudo 인증에서 비밀번호 틀리면 출력
Defaults	log_input #sudo 명령어 실행 시 입력된 명령어 log로 저장
Defaults	log_output #sudo 명령어 실행 시 출력 결과를 log로 저장
Defaults	requiretty #sudo 명령어 실행 시 tty강제
## tty는 리눅스 환경에서 콘솔이나 터미널을 의미. 따라서 현재 셀이 tty일 때만 sudo 가능
Defaults	iolog_dir="/var/log/sudo/" #sudo log 저장 디렉토리 설정
Defaults	passwd_tries=3 #sudo 패스워드 실행 횟수를 지정. default는 3
  • 저장은 ctr + X를 누른 후 Y를 눌러 나가기
  • /var/log/sudo/00/00에서 log 확인

그룹 설정

  • groupadd user42
    • user42 그룹을 추가
  • usermod -G user42,sudo 유저이름
    • 유저를 user42, sudo 그룹에 추가시키고 나머지 그룹에서는 탈퇴
  • usermod -aG user42,sudo 유저이름
    • 유저를 user42, sudo 그룹에 추가시키고 나머지 그룹 유지
  • usermod -g user42 유저이름
    • user42를 유저의 primary group으로 만듬(gid)
  • id 유저이름
    • 유저의 그룹 정보를 보여줌
  • G 옵션:
    G 옵션만 붙인 상태에서 그룹 설정 시, gid 그룹을 제외하고 명령어에 나열된 그룹만 추가가 되며 명령어에 나열되어 있지 않지만 유저가 속해있는 그룹은 전부 탈퇴된다.

a 옵션:
G 옵션에서만 함께 쓰일 수 있고, G옵션만 붙었을 때와 달리, 유저가 속해있지만 명령어에 나열되어있지 않는 그룹에 관하여 탈퇴처리 되지 않는다.

  • grep /bin/bash /etc/passwd | cut -f1 -d:
    • 유저 목록 확인

유저 추가 및 삭제

  • sudo useradd adduser -m <유저이름>
    • 새로운 유저 추가 및 디렉토리 생성
    • adduser로 해야 이상하게 실행 안됨. -m 옵션은 굳이 추가하지 않아도 가능?
    • useradd는 홈 디렉토리를 자동으로 생성 안함. adduser는 홈 디렉토리를 자동으로 생성한다.
  • passwd <유저이름>
    • 패스워드 설정
  • grep /bin/bash /etc/passwd | cut -f1 -d
    • useradd로 추가했던 유저 목록
  • userdel -r <유저이름>
    • 유저의 모든 정보 삭제

 

UFW(Uncomplicated Firewall)

  • 데비안 계열 및 다양한 리눅스 환경에서 작동되는 사용하기 쉬운 방화벽 관리 프로그램
    프로그램 구성에는 iptable라는 방화벽을 사용하는데, iptable의 설정을 간단하게 할 수 있도록 도와줌.
    - iptable: 시스템 관리자가 리눅스 커널 방화벽이 제공하는 테이블과 그것들을 저장하는 체인, 규칙들을 구성할 수 있게 해주는 사용자 공간 응용프로그램
  • 리눅스의 커널은 서버에 대한 클라이언트의 네트워크 접속을 제어하는 넷필터라는 모듈을 가지고 있는데, 이를 이용하여 서버 접속에 대한 네트워크 정책을 세우는 프로그램이 방화벽
    • 방화벽
      • 보안이 필요한 네트워크의 통로를 단일화하여 외부의 불법 침입으로부터 정보자산을 보호하기 위한 시스템
      • 접근제어를 제공하기 위해 외부, 내부망의 구성을 위한 별개의 네트워크를 가짐
      • 바이러스와 같은 맬웨어 형태로 존재하는 위협은 방어x
  • 리눅스의 핵심인 커널은 server에 대한 client의 네트워크 접속을 제어하는 넷필터라는 모듈을 가지고 있는데, 그것을 활용하여 서버 접속에 대한 네트워크 정책을 세우는 프로그램이 바로 Firewall
  • 설치했다고 바로 작동되지는 않고 시스템 시작시에도 방화벽이 백그라운드에서 자동으로 활성화되게끔 하기 위해선 터미널에서 작업을 해주어야 한다.

꼭 필요한 포트만 열고 내부 비공개 서비스포트는 기본값이 아닌 임의 포트로 변경해야 함.

  • sudo apt install ufw
    • ufw를 설치
  • sudo ufw status verbose
    • ufw 상태 확인
    • verbose 옵션은 몇 가지 추가 정보를 보여줌.
  • sudo ufw enable
    • 부팅 시 ufw가 활성화되게 설정 (기본은 비활성화)
  • sudo ufw default deny
    • 기본 기본정책을 deny로 설정 (allow도 가능)
  • sudo ufw allow 4242
    • 4242포트 연결을 허용
  • sudo ufw deny 4242
    • 4242포트 연결을 거부
  • sudo ufw show raw
    • 기본 룰 확인
  • sudo ufw status numbered
    • 룰들에 숫자를 붙여서 확인
  • sudo ufw delete 1
    • 1번 룰을 삭제
  • sudo ufw delete allow 4242
    • 4242포트 연결허용 룰이 있을때 룰을 삭제
  • sudo ufw allow(deny) ssh
    • ssh 연결을 허용(거부)

 

SSH(Secure Shell Protocol)

네트워크 프로토콜중 하나로 컴퓨터와 컴퓨터가 인터넷과 같은 네트워크를 통해 통신할 때 안전하게 통신하기 위해 사용하는 프로토콜 (ex 데이터 전송, 원격 제어)

  • ssh는 통신을위해 접속할 때에 일반적인 비밀번호가 아닌 한쌍의 KEY를 사용하여 인증과정을 거침.

  • public key를 통해 암호화를 하게되고, 본인의 컴퓨터에 저장되어있는 private key를 사용해 복호화

  • apt search openssh-server

    • openssh가 설치되어있는지 확인
  • apt install open ssh-server

    • openssh를 설치
  • systemctl status ssh

    • openssh 실행여부와 사용 포트 확인
  • sudo vim /etc/ssh/sshd_config

    • ssh의 설정을 변경
      • Port 22라 되어있는 부분을 Port 4242로 수정
        • ssh 포트 기본인 22번 포트 연결을 4242 포트로 변경
      • PermitRootLogin 부분을 No로 변경
        • 외부에서 root으로 로그인 하는 것을 막음
  • sudo systemctl restart ssh

    • ssh를 재시작하여 설정을 적용

로컬과 가상환경 간 ssh 연결

<계정이름>@<내 ip주소> -p < Host Port번호>

ssh로 접속 (포트번호는 들어가는 host 포트, ufw에서 설정하는 포트는 guest port)

클러스터 환경에서는 포트포워딩을 해주어야 접속 가능

  • ifconfig | grep inet
    • 클라이언트에서 입력해 내 ip주소 확인
  • hostname -I
    • 가상환경에서 입력해 ip주소 확인
  • virtualBox의 Setting - Network - Advanced - Port Forwarding
    • HostPort는 원하는 포트 사용하고 다음과 같이 입력
    • 다른 프로세스가 사용 중일 수 있으니 lsof -P -i :번호 사용해 확인
    • host IP는 내 아이피, Guest IP는 VM IP
  • ssh bchoi@192.168.56.1 -p 4242

 

패스워드 정책 적용

  • chage -l <사용자>사용자의 암호만료 정보를 알 수 있음

기본정책 변경

  • chage 명령어를 통해 아래와 같은 설정을 바꿀 수 있다.

    • Last password change (-d) : 마지막 패스워드 변경일
    • Password expires : 암호 만료일
    • Password inactive(-I (대문자i)) : 비활성화 유예기간
    • Account expires(-E) : 계정 만료일
    • Minimum number .... (-m) : 패스워드 변경 후 최소 사용 기간, 즉 최소 의무 사용일
    • Maximum number .... (-M) : 패스워드 변경 후 변경 없이 사용 가능한 최대 일 수
    • Number of days of warning ... (-W) : 패스워드 만료 전 경고메세지를 보낼 일 수
  • -M 옵션과 -m옵션, -W옵션을 통해 서브젝트에서 요구하는 패스워드 만료 관련 정책들을 변경

  • 위 방법은 나의 계정만 정책을 변경시킴.

  • vi /etc/pam.d/common-password

    • 현재 패스워드 정책을 알 수 있음.
  • sudo apt install libpam-pwquality

    • 패스워드 정책 설정을 위한 모듈을 설치
    • libpam-pwquality 모듈
      • retry=N
        • 암호 입력을 N회까지
      • minlen=N
        • 암호 최소 길이는 N
      • difok=N
        • 기존 패스워드와 달라야 하는 문자 수 N
      • ucredit=-N
        • 대문자 최소 N개 이상
      • lcredit=-N
        • 소문자 최소 N개 이상
      • dcredit=-N
        • 숫자 N개 이상
      • credit 명령어에서 N의 양수 음수 차이
        (N >= 0)
        새 패스워드에서 대문자로 얻을 수 있는 최대 점수. N개 이하로 있으면 각 글자를 현재 minlen 값 검사에 +1씩 계산한다. ucredit default 값은 1.
        (N < 0)
        새 패스워드에 있어야 하는 대문자 최소 개수.
        따라서 보안 강화의 개념으로 lcredit=-1 추가
      • reject_username
        • 사용자의 이름이 그대로 또는 뒤집혀서 패스워드에 포함 되었는지 확인
      • enforce_for_root
        • root 사용자의 패스워드에도 정책 적용
      • maxrepeat=N
        • 같은 문자가 N번 이상 연속해서 나오는지 검사
  • vi /etc/login.defs

    • 패스워드 만료 및 변경 정책 설정
      • PASS_MAX_DAYS 30
        • 패스워드가 30일 뒤 만료됨
      • PASS_MIN_DAYS 2
        • 패스워드 변경 후 2일 뒤 변경 가능
      • PASS_WARN_AGE 7
        • 패스워드 변경후 7일 경과 시 알림
  • passwd -e <사용자명>

    • 사용자의 비밀번호를 변경함 (로그아웃 후 재 로그인 시 비밀번호 변경)

 

호스트

  • hostnamectl
    • 호스트 정보를 확인
  • sudo hostnamectl set-hostname <변경할 이름>
    • 호스트 명을 변경

 

파티션, LVM

파티션

  • 어떤 하나의 공간을 여러개로 나누는것
  • 사용하던 중에는 디스크의 공간을 늘릴 수 없음

LVM (Logical Volume Manager)

  • Logical Volume을 효율적이고 유연하게 관리하기 위한 커널의 한 부분
  • LVM은 여러 디스크 공간 및 자투리 공간을 합쳐서 하나로 만들 수 있게 해줌
  • 기존 사용하던 디스크의 공간이 부족해 졌을 때 다른 디스크의 공간을 추가해서 사용 가능
  • 여러 저장 공간을 하나의 공간처럼 사용 가능

PE, PV, VG, LV, LE

  • PV는 기존의 디스크 공간같은 물리적 공간, PE는 PV를 이루는 최소 단위(PE가 모여 PV)
  • PV를 모아 VG(Volume Group을 만듬)
  • VG에서 필요에 따라 LV(Logical Volume)를 만들어 사용
  • LE는 LV에서 사용하는 PE
  • lsblk
    • 파티션을 확인

 

cron

cron

특정한시간 또는 특정 시간마다 어떤 작업을 수행하게하는 명령어

  • ps -ef | grep cron
    • cron 설치 여부 확인 (출력이 되면 설치 O)
  • crontab -e
    • cron job 등록할 수 있는 편집창이 열림
  • 주기 설정
    • *     *      *    *     *
    • 분(0-59) 시간(0-23) 일(1-31) 월(1-12) 요일(0-7)
              • bash /home/script/test.sh | wall
    • 매분마다 test.sh 실행 및 wall 사용하여 터미널에 출력
    • 45 5 * * 5 bash /home/script/test.sh | wall
    • 매주 금요일 05시 45분에 test.sh 실행 및 wall 사용하여 터미널에 출력
              • bash /home/script/test.sh | wall* * * * * sleep 30; bash /home/script/test.sh | wall
    • 두개를 이렇게 적을시 1분마다 실행 하나 30초 쉬고 실행하는 것 하나 해서 30초마다 실행 가능
  • crontab -l
    • cron job 출력
  • crontab -r
    • cron job 삭제
  • service cron status
    • cron이 실행되어 있는지 확인
  • service cron start
    • cron 시작 (crontab -e 로 수정후 시작 또는 재시작 해줘야함)
  • service cron restart
    • cron 재시작
  • service cron stop
    • cron 정지
  • sudo systemctl disable cron
    • 그냥 service cron stop 하면 reboot 했을 때 다시 실행됨. 아예 중지하는 명령어
>> /dev/null 2>&1 
/dev/null은 어떤 데이터를 보내든 블랙홀로써 전부 버려질 것
2 는 표준 에러를 뜻하는 파일 디스크립터(file descriptor)
> 는 리다이렉트(redirect)를 위한 것
& 파일 디스크립터를 뜻하는 심볼(이 기호가 없으면 다음 1 은 파일 이름으로 간주)
1 은 표준 출력을 뜻하는 파일 디스크립터(file descriptor)

그러므로 >/dev/null 2>&1 는 프로그램의 출력을 /dev/null로 보냄.(redirect)
보낼 때 표준 에러와 표준 출력이 포함. 따라서 에러는 cron에서 실행할 때 출력하지 않음.

 

Monitoring.sh

# os 아키텍처, 커널 버전
printf "#Architecture: "
uname -a
# 시스템 정보를 출력하는 uname과 모든 정보를 출력하는 -a 옵션 사용

# 물리 프로세서 개수
printf "#CPU physical : "
cat /proc/cpuinfo | grep "physical id" | wc -l
# /proc/cpuinfo 파일은 CPU 코어의 세부사항에 대한 정보를 가지고 있으며
# physical id가 적힌 라인을 추출하고 줄 수를 카운트하여 개수를 알아냄

# 가상 프로세서 개수
printf "#vCPU : "
cat /proc/cpuinfo | grep "processor" | wc -l
# 프로세서가 적힌 라인을 추출하고 줄 수를 카운트하여 개수를 알아냄

# 서버에 사용 가능한 ram, 사용중인 비율 퍼센트
printf "#Memory Usage: "
free --mega | grep Mem | awk '{printf"%d/%dMB (%.2f%%)\n", $3, $2, $3/$2 * 100}'
# 메모리 현황을 MB단위로 보는 free --mega 에서 Mem이 적힌 라인을 추출하고
# 3번째값 '/' 2번째값'MB'((3번째값/2번째값 * 100)소수점 2번째까지'%') 를 출력해줌
# awk는 레코드 선택하는 명령어:

# The available memory on your server and its utilization rate as a percentage.
printf "#Disk Usage: "
df -a -BMB | grep /dev/map | awk '{sum+=$3}END{print sum}' | tr -d '\n'
printf "/"
# 리눅스 내 디스크 메모리 현황을 MB단위로 보는 df -BM에서 사용 부분을 추출하고
# 각 라인들의 3번째 값(used)를 합한 값을 출력하는데 \n은 제외
df -a -BMB | grep /dev/map | awk '{sum+=$4}END{print sum}' | tr -d '\n'
printf "MB ("
# 리눅스 내 디스크 메모리 현황을 MB단위로 보는 df -BM에서 사용 부분을 추출하고
# 각 라인들의 4번째 값(Available)d을 합한 값을 출력하는데 \n은 제외
# 단위 출력
df -a -BMB | grep /dev/map | awk '{sum1+=$3 ; sum2+=$4 }END{printf "%d", sum1 / sum2 * 100}' | tr -d '\n'
printf "%%)\n"
# (used) / (Available) 값을 % 붙여서 백분율로 나타냄

# The utilization rate of your processors as a percentage.
printf "#CPU load: "
mpstat | grep all | awk '{printf "%.2f%%\n", 100-$13}'
# sudo apt-get install sysstat
# 자원에 대한 모니터링을 도와주는 유틸리티인 sysstat의 mpstat 명령어를 사용하기 위해 sysstat 설치
# cpu 사용량을 모니터링하는 mpstat의 마지막 컬럼인 idle값(13번째)을 100에서 뺌

# 마지막 reboot의 날짜와 시간
printf "#Last boot: "
who -b | awk '{printf $3" "$4"\n"}'
# 호스트에 로그인한 사용자 정보를 보는 who의 마지막 부팅 시간을 보는 -b를 사용하고
# 날짜인 3번째 값과 시간인 4번째 값을 사용

# LVM이 작동하는지 아닌지
printf "#LVM use: "
lsblk | grep 'lvm' | wc -l | awk '{if($1>0)print"yes";else print"no"}'
# 파티션 정보를 출력하는 lsblk에서 타입이 lvm인 부분을 추출한 뒤 라인 수를 구하고 
# 그것이 0 이상이라면 파티셔닝 된 것이니 yes를 출력, 0보다 작다면 no를 출력

# 작동중인 연결의 개수
printf "#Connections TCP : "
ss | grep tcp | wc -l | tr -d '\n'
printf " ESTABLISHED\n"
# ss 명령어로 네트워크 상태를 보고 grep을 통해 tcp의 연결 상태를 확인, 줄 수를 출력

# 서버를 이용하고 있는 사용자의 수
printf "#User log: "
who | wc -l
# 호스트에 로그인 한 사용자 정보를 출력하는 who에서 라인의 개수를 출력

# 서버의 ipv4 주소, mac 주소
printf "#Network: IP "
hostname -I | tr -d '\n'
# IPv4 주소 출력
ip link | grep link/ether | awk '{print"("$2")"}' | sed '2, $d'
ip link show | awk '$1 == "link/ether" {print $2}' | sed '2, $d' | tr -d '\n'
# ip link의 link/ether 부분에 있는 MAC 주소를 괄호에 넣고 출력

# sudo를 이용한 명령의 개수
printf "#Sudo : "
ls /var/log/sudo/*/* | wc -l | tr -d '\n'
# sudo로 실행한 커맨드의 log가 저장되는 sudo 폴더 내의 log 폴더가 몇 개 있는지 확인
printf " cmd\n"

 

스냅샷

  • vm을 상태 저장하면서 종료
  • 스냅샷을 남김
  • 터미널에서 cd /goinfre/intra id/vm이름 으로 가상머신이 설치된 폴더로 진입
  • shasum vm이름.vdi 를 실행
  • 잠시 기다리면 가상머신의 서명이 나옴
  • 여러차례 실행하면서 바뀌는지 확인
  • shasum vm이름.vdi > signature.txt 에 넣고 git push 해서 평가준비
profile
FE 👩🏻‍💻

0개의 댓글