Ansible을 활용한 자동화 구성 관리(22.04.11)

박민선·2022년 4월 12일
0

Vagrant

Vagrantfile 생성

vagrant init <IMAGE>

VM 생성 및 부팅

vagrant up [VM_NAME]

VM 재부팅

vagrant reload [VM_NAME]

VM 종료

vagrant halt [VM_NAME]

VM 삭제

vagrant destroy [VM_NAME]

VM SSH 접속

vagrant ssh [VM_NAME]

Vagrantfile 예제

Vagrant.configure("2") do |config|
	# Define VM
	config.vm.define "myvm1" do |centos|
		centos.vm.box = "centos/7"
		centos.vm.hostname = "myvm1"
		centos.vm.network "private_network", ip: "192.168.56.11"
		centos.vm.provider "virtualbox" do |vb|
			vb.name = "myvm1"
			vb.cpus = 2
			vb.memory = 2048
		end
		config.vm.provision "shell", inline: <<-SHELL
			#!/bin/bash
			echo "hello world" > /tmp/hello.txt
		SHELL
	end
	# Define VM
	config.vm.define "myvm2" do |centos|
		centos.vm.box = "centos/7"
		centos.vm.hostname = "myvm2"
		centos.vm.network "private_network", ip: "192.168.56.12"
		centos.vm.provider "virtualbox" do |vb|
			vb.name = "myvm2"
			vb.cpus = 2
			vb.memory = 2048
		end
		config.vm.provision "shell", inline: <<-SHELL
			#!/bin/bash
			echo "hello world" > /tmp/hello.txt
		SHELL
	end
end

Ansible 환경 설정

~/vagrant/ansible/Vagrantfile

Vagrant.configure("2") do |config|
	# Define VM
	config.vm.define "controller" do |centos|
		centos.vm.box = "centos/7"
		centos.vm.hostname = "controller"
		centos.vm.network "private_network", ip: "192.168.100.10"
		centos.vm.provider "virtualbox" do |vb|
			vb.name = "controller"
			vb.cpus = 2
			vb.memory = 2048
		end
	end
	# Define VM
	config.vm.define "node1" do |centos|
		centos.vm.box = "centos/7"
		centos.vm.hostname = "node1"
		centos.vm.network "private_network", ip: "192.168.100.11"
		centos.vm.provider "virtualbox" do |vb|
			vb.name = "node1"
			vb.cpus = 2
			vb.memory = 2048
		end
	end
	# Define VM
	config.vm.define "node2" do |centos|
		centos.vm.box = "centos/7"
		centos.vm.hostname = "node2"
		centos.vm.network "private_network", ip: "192.168.100.12"
		centos.vm.provider "virtualbox" do |vb|
			vb.name = "node2"
			vb.cpus = 2
			vb.memory = 2048
		end
	end
end

파일의 인코딩

  • UTF-8
  • UTF-16

라인의 끝

  • CRLF: Windows
  • LF: Unix-like
vagrant up

node1 패스워드 인증 활성화

vagrant ssh node1
sudo vi /etc/ssh/sshd_config
PasswordAuthentication yes
sudo systemctl restart httpd

node2 패스워드 인증 활성화

vagrant ssh node2
sudo vi /etc/ssh/sshd_config
PasswordAuthentication yes
sudo systemctl restart httpd


contoller

vagrant ssh controller
ssh-keygen
ssh-copy-id vagrant@192.168.100.11
ssh-copy-id vagrant@192.168.100.12


암호학

보안의 3요소

  • 기밀성: Confidentiality
  • 무결성: Integrity
  • 가용성: Availability

암호학 제공 기능:

  • 기밀성
  • 인증
  • 부인방지
  • 무결성

1. 고대/과거 암호

스키테일

카이사르 암호

시저

  • Transposition
  • Substitution
    치환, 전치

용어
Plain Text: 평문
Cipher Text: 암호문
Key: 키
암호화: 평문--> 암호문
복호화: 암호문 --> 평문

치환 암호

Enigma

2. 현대 암호

치환, 전치 얼마나 어렵게 만드는가?

1) 대칭키

Symmetric
암호화 키 = 복호화 키

기밀성 제공

Symmetric Key
Secret Key

알고리즘

  • RC4
  • DES: 취약점
  • 3DES
  • AES
  • SEED
  • ...

문제점?

  • 키 분배의 문제
  • 키 개수 너무 많아

속도: 빠르다

2) 비대칭키 / 공개키

Asymmetric

암호화 키 =/ 복호화 키

키 쌍(KeyPair)

  • Public Key: 공개키
    - 공개되어도 상관 없음
  • Private Key: 비공개키, 개인키(대칭키: Secret)
    - 공개되면 안됨

A(자신)-B(상대방)

  • (상대방)공개키로 암호화, (상대방)개인키로 만 복호화: 기밀성
  • (자신)개인키로 암호화, (자신)공개키로 만 복호화: 부인방지

알고리즘

  • Diffie-Hellman
  • RSA
  • DSA
  • ECC
  • EC DSA
  • ...

속도: 느려요

3) 해시

Hash Function
Hash Algorithm
One Way Function: 일방향 함수
Message Digest: 메시지 축약

무결성

Input(Message) --f(x)--> Hash Value

Input: 길이 제한 X
Output(Hash Value): 고정된 길이

입력 값 같으면 = 출력 값 같다

알고리즘

  • MD5: 취약점
  • SHA0: 취약점
  • SHA1
  • SHA2
    - sha256
    - sha512
  • SHA3
  • ...

해시 문제점: Birthday Paradox

https://ko.wikipedia.org/wiki/SHA

4) PKI

Public Key Infrastructure: 공개키 기반 구조

공개키 방식: 상대방의 공개키를 검증 방법 X
PKI: 제 3자(CA)가 인증서(공개키) 검증을 대신

구조

  • Root CA: 최상위 인증 기관
  • CA: 인증 기관
  • RA: 등록 대행 기관
  • VA: 검증 기관

인증서: x.509 표준

  • 일련번호
  • 발급자
  • 알고리즘
  • 유효기간
  • 주체: 발급대상
  • 공개키
  • 지문: Fingerprint
  • 전자서명 알고리즘: sha256RSA

5) 전자서명

profile
클라우드신생아

0개의 댓글