본문 바로가기

Rookies 9기/클라우드 보안

클라우드 보안 3일차

728x90

• EC2

- 클라우드의 핵심(서버를 아웃소싱, AWS이 가장 먼저 시작한 서비스) 

- Ubuntu를 웹서버로 만드는 실습

- Amazon Linux를 웹서버로 만드는 실습

 

• RDS (관계형 데이터베이스 서비스)

 

• AMI(Amazon Machine Image)

- 아마존이 미리 만들어 놓은 가상 머신 이미지 (아마존이 설치 다 해놓고 사용하겠다고 하면 복사해줌)

 

Windows  Server 2016 실습

1) 인스턴스 생성

Windows에서 2016서버를 선택을 해준다. (기존에 있던 VPC와 서브넷, 키 페어를 사용)

RDP는 원격 데스크톱 프로토콜이므로 서버나 컴퓨터의 파일, 앱, 데트크톱 공간을 사용할 수 있다.

인스턴스 생성
인슨터스에 연결

RDP 클라이언트에 들어가서 암호 가져오기를 클릭한다.

암호화 가져오기

저장된 키 페어를 가져와 암호 해독을 해준다.

 

2) 윈도우 연결

로컬PC

윈도우에서 원격 데스크톱 프로그램을 찾아 실행을 해준다.

로컬PC

옵션 보기를 눌러 입력창에 EC2 퍼블릭 IP와 사용자 이름을 넣는다.

로컬PC

암호는 키 페어(암호 해독한 키 페어)를 넣는다

원격 데스크톱

원격 데스크톱에 EC2에서 만든 Windows Server 2016이 실행이 된다.

 

3) 서비스 설정 (Web Server(IIS)) 설치

원격 데스크톱

시작 메뉴에서 Server Manager에 프로그램을 실행시켜준다.

sever manager

Add roles and features를 클릭한다.

원격 데스크톱

Server Roles에서 Web Server(IIS) 선택을 해주고 다음을 눌러준다.

 

• 원격 데스크톱 페이지 수정해보기

C:\intetpub\wwwroot

Windows Server의 Web Server Directory ( IP주소나 도메인만 입력했을 때 가장 먼저 접속되는 위치) 

원래 있던 iisstart.htm을 iisstart.old로 확장자를 변경을 한다.

index.html

저번에 실습했던 index.html 파일을 nodepad++로 위 이미지와 같이 수정을 해준다.

윈도우에서 원격데스크톱으로 이동

index.html를 C:\interpub\wwwroot 위치로 이동을 시켜준다.(이미지 파일인 hacker.jpg 파일도 함께)

원격 데스크톱

index.html 파일을 iisstart.htm으로 이름과 확장자 수정을 해준다.

윈도우

웹 브라우저로 들어가면 페이지가 iisstart.htm(index.html)이 실행이 되어 페이지가 변경되었다.

※ 404 error가 뜨는 경우 보안 그룹에서 http를 허용하지 않았기 때문이다.

 

• Security Group(보안 그룹)

- 인바운드 규칙 : 인터넷에서 AWS에서 들어갈 때의 규칙(밖에서 안으로) --> SSH, http, https RDP 등 꼭 필요한 경우만 허용---> SSH, RDP는 반드시 IP주소를 엄격하게 제한해야 한다(http, https는 IP를 제한하지 않음)

- 아웃바운드 규칙 : AWS에서 인터넷으로 나갈 때의 규칙(안에서 밖으로) --> 대부분 허용

 

• 우선순위 

index.html

윈도우에서 index.html를 nodepad++로 다른 사진으로 수정을 한다.

원격 데스크톱

윈도우에서 다른 이미지가 나오도록 수정한 index.html과 pantheon.jpg 파일을 복사하여 원격 데스크톱(C:\inetpub\wwwroot ) 위치에 붙여 넣기를 해준다.

웹 브라우저를 실행을 하면 iisstart.htm이 아닌 index.html 파일이 실행이 되었다. 우선순위 확인을 위해 Internet Information Service (IIS) Manager 프로그램을 실행시켜보자.

Internet Information Service (IIS) Manage

index.html 파일이 iistart.htm 파일보다 우선순위기 높기 때문에 index.html 파일이 실행이 된다.

Internet Information Service (IIS) Manage

iistart.htm 파일을 index.html 파일보다 우선순위를 올려보자

iistart.htm파일이 실행이 되었다.

※ 접속이 안되면 
보안 그룹에 설정이 잘 못된 경우
서비스가 실행되지 않은 경우(설정을 다 한 후에는 아파치 재시작 해야 함)


※ 페이지가 안 보이면
확장자가 잘못된 경우
이미지를 업로드 안했거나
이미지 확장자가 잘못된 경우

 

• Database server에 원격으로 접속하기

실습 준비( workbench 설치하기)
1) 구글에 접속해서 'workbench' 검색
2) MySQL Workbench 8.0.30 에서 Go to Download page 클릭
3) 5.5M Download 클릭
4) 설치하기 
5) Client Only를 선택하고 계속 Next 버튼 클릭 ( 다운로드에서 error가 나오면 Try again 클릭)

• 우분투에서 원격에 사용할 계정 만들기

외부에서 접속이 가능하도록 설정 '%'는 어디서든지 접속이 가능한 계정이다.

두 번째 명령어는 모든 DB에 대해서 모든 권한을 부여한다.

sudo  ufw  allow  3306

우분투에서 3306번 포트를 외부에서 접속할 수 있도록 허용한다.

외부에서 접속이 안되도록 설정이 되어있기 때문에 mysqld.cnf을 수정해준다

mysqld.cnf

31번 라인을 127.0.0.1에서 0.0.0.0으로 수정을 한다.( 0.0.0.0이면 전 세계 어디서든지 접속이 가능하다(매우 위험))

수정후 mysql 서비스를 다시 시작해준다.

 

• Workbanch 설정 및 기본 실습

Workbench 첫화면
MySQL 연결

플러스 버튼을 눌러 MySQL를 연결해주자.

MySQL Connections

이름을 정해주고 우분투의 IP와 우분투에서 만든 계정을 입력한 후 store in Vault.. 를 클릭한 후 비밀번호를 입력해준다.

blackpink MySQL 연결
MySQL Workbench 화면
DB 생성

create database [DB명] 명령어를 사용했다.

생성된 DB 확인

show databases; 명령어를 사용하면 모든 데이터베이스를 볼 수 있다.

만들어져 있던 gnuboard 테이블 확인

use를 사용해 gnuboard에서 show tables; 명령어로 테이블을 확인한다.

Select 문사용
desc 내림차순 사용

 

• Root 계정을 업무에 활용하면 안 되는 이유

- Root 계정이 크래킹 되면, 컨트롤할 방법이 없음

- 다른 계정을 만들어서 활용

- 특히, DB에서는 database마다 따로 계정을 할당하는 것이 좋음

 

• 접속의 차이

- blackpink는 '%'로 되어 있어서 Workbench 또는 mysql command line으로 DB에 직접 접속 가능

- board는 localhost로 되어 있어서 Workbench 또는 mysql command line으로는 DB에 직접 접속 불가능

---> SSH로 서버에 접속하고 board 계정으로 DB에 접속하면 가능

 

Quiz) 재택근무를 하고 있는 상황에서 DB에 접속해야 하는 경우는 어떻게 할까요?
 (DB는 회사 내에서만 접속됨)
- VPN을 이용해서 회사 내부망에 접속해서 DB에 접속
- SSH로 업무용 서버에 접속해서 DB에 접속

Quiz) 회사 내부에서만 접속하려면?
59.6.0.106 일 경우, 끝자리가 바뀔수 있으므로,  59.6.0.0 으로 설정하는 방법 -----> 우리회사에서는 IP가 바뀌더라도 접속 가능

 

 

RDS 실습

• goods.sql 파일 실습(강사님이 파일 제공)

1)Open a SQL Scipt.. 선택하고 goods.sql을 열기
2) 전체선택(Ctrl+a)하고 그냥 번개를 누르면 goods.sql 스크립트가 한번에 쫙 실행됨

 

1) RDS 사용하기 전 (데이터베이스 연습)

show databases;

show databases; 명령어를 사용했을 때 classicmodels DB가 있는 거는 goods파일이 잘 실행이 되었다는 것이다.

show tables;

classicmodles 안에 무슨 테이블이 있는지 확인해 보았다.

desc orders;

orders 테이블 안에 있는 컬럼들을 내림차순으로 확인을 해보았다.

select  orderNumber,orderDate,shippedDate  from  orders;

원하는 컬럼을 선택해 확인을 해보았다.

select  orderNumber,orderDate,shippedDate  from  orders  order by orderDate  desc  limit 10;

원하는 컬럼을 내림차순으로 최근 주문한 10개의 목록을 추출해 보았다.

 

2) Workbench를 이용해서, goods.sql을 RDS에 업로드하고 명령을 실행

• RDS 사전 조건
1) RDS는 가용영역 2개 필요함(전에 사용하던 서브넷 포함)
 ---> Subnet 1개 추가해야 함
2) VPC에서 DNS 경로를 사용해야 함 (DNS 호스트 이름 편집 ---> 활성화)
 ---> 접속할 수 있는 URL을 생성할 수 있음
3) 설정할 때, _(언더바)는 사용안됨, -(하이픈)은 사용 가능

1) 서브넷 추가 설정

서브넷

기존에 사용했던 vpc를 연결하고 hcmsub02 이름으로 서브넷을 생성해준다..

서브넷

주의사항은 전에 있던 서브넷(hcmsub01)의 가용 영역이 겹치면 안 된다.

 

2) 데이터베이스 생성

RDS

데이터베이스 생성을 해준다.

MySQL 데이터베이스를 사용할 것이다.

프리티어 사용
기본 정보 설정
사용할 엔진 선택
퍼블릭 설정

퍼블릭을 설정을 하여 외부의 다른 리소스가 데이터베이스에 연결을 할 수 있게 해 준다.

생성한 데이터베이스

 

3) VPC DNS 설정

VPC

VPC에 들어가 DNS 호스트 이름 편집에서 DNS를 활성화해준다.

 

4) Workbench 연결

RDS

데이터베이스를 세부내용을 보면 연결을 할 수 있는 주소와 포트 번호를 볼 수 있다.

Workbench

hostnname부분에 RDS의 엔드포인트를 입력해주고 설정해준 hcm을 Username에 입력해주고 비밀번호는 Store in Vault.. 에 넣어준다. 

RDS를 사용하여 Workbench에 들어간 화면
show databases;
use classicmodels;  show tables;
desc products;
select productName,productLine from products;

 

Cloud의 종류

‣ IaaS (Infrastructure as a Service)

- 클라우드에서 인프라를 제공해주는 서비스

- 인프라는 가상 머신(Ubuntu, Amazon Linux, Windows Server 등), 네트워크(VPC, Subnet), 스토리지(S3)

-  AWS에서는 HW, Network, Security 등만 책임지고, 나머지는 사용자의 책임 (OS, Application, Data, Platform 등등)

- 장점 : 대부분의 통제가 가능하고 가격이 저렴함

- 단점 : 사용자가 확장, 관리(백업, 용량, 보안, 장애 등)해야 함

 

‣ PaaS (Platform as a Service)

- 클라우드에서 플랫폼을 제공해주는 서비스

- 플랫폼은 개발자가 개발할 수 있는 환경까지 제공해줌 (RDS)

-  AWS에서는 HW, Network, Security + OS + Application 설치 및 관리, 

- 사용자는 Application을 사용하기만 하면 됨, Data에 대한 책임

- 장점 : 관리를 해주는 부분은 신경을 안 써도 됨 (백업, 용량, 보안, 장애 관리 등을 AWS에서 해줌)

- 단점 : OS 및 Application에 대한 완전한 통제권을 갖기 어려움  (root권한이 없음, admin/girlsday 등을 만들어서 사용)

- Paas-ta : 정부에서 개발자들이 창업을 할 수 있는 환경을 만들어줌

 

‣ SaaS (Software as a Service)

- 클라우드에서 소프트웨어를 제공해주는 서비스

- 사용자는 ID/PW 등 인증만 하면 모든 서비스를 이용할 수 있음, Client용 SW만 있으면 됨.

- 장점 : IT인력이 많이 필요하지 않음

- 단점 : 의존성 문제(마이그레이션 하기 어려움), 가격이 비쌈, Customizing 하기 어려움.

- 주로 누가 할까?   커피/치킨/피자 프랜차이즈, 무역(의류, 수입차 등), 고객 관련 Biz 등

 

• 3 Tier 구성하기(웹서버와 DB서버를 따로 사용)

RDS에 데이터를 저장하도록 해서 Gunboard를 동작시키려면?
- OS는 Ubuntu 22.04 LTS : MySQL을 제외하고 설치
- DB는 RDS를 활용, 설정은 Workbench로 설정하면 됨
- 기존의 RDS는 삭제하고, 새로 RDS를 만들면서 EC2에 연결하도록 설정(퍼블릭IP설정 안됨, EC2를 통해서 접속해야 함)

1) EC2 생성 및 그누보드 설치

 

EC2

RDS이름으로 인스턴스를 생성한다.(EC2 생성 설명은 생략한다.)

sudo apt install apache2

sudo apt update를 진행 후 아파치를 설치해준다.

sudo apt install php php-mysql php-common php-gd php-fpm php-xml php-json php-curl git

php언어를 사용하기 위해 설치를 해준다.

sudo git clone https://github.com/gnuboard/gnuboard5

/var/www/html 경로로 이동해 github에서 gnuboard를 가져와 설치를 해준다.

데이터를 저장할 data디렉터리를 만들어 모든 권한을 부여해준다.

sudo service apache2 restart

설정이 끝나면 아파치 서비스를 재시작해준다.

 

2) 데이터베이스 생성

나머지는 기존에 생성했던 방법을 진행을 하고 연결 정보만 EC2 컴퓨팅 리소스에 연결로 수정을 해준다.

※ RDS에 연결 방법 (아래 방법 둘중에 하나밖에 안됨)
- Public IP 부여 : EC2와 연결 안됨
- EC2와 연결 : 지정한 EC2가 필요하므로 EC2를 미리 생성하고 연결해야 함   ----> Workbench 사용 불가

데이터베이스

hcrmrds 데이터베이스가 생성이 되었다.

hcmrds

hcmrds를 연결해줄 수 있는 엔드포인트와 포트이다.

 

3) 데이터베이스 서버 

sudo mysql -h [엔드포인트] -u  [RDS계정]  -p 사용

sudo apt install mysql-client 명령어를 실행 후 데이터베이스의 서버를 만들어줘야 한다. 

DB 및 사용자, 사용자 권한 설정

데이터베이스를 만들어주고 사용자 및 비밀번호를 설정해준다. 그리고 사용자한테 gnuboard 테이블의 모든 권한을 부여해준다.

 

4) Gnuboard 실행

gnuboard 설정

HOST에 RDS의 "엔드포인트: 3306"를 입력해준다. 

그누보드 첫 화면

잘 동작이 되는지 사진을 업로드해보았다.

'Rookies 9기 > 클라우드 보안' 카테고리의 다른 글

클라우드 보안 6일차  (0) 2022.10.05
클라우드 보안 5일차  (0) 2022.09.30
클라우드 보안 4일차  (0) 2022.09.29
클라우드 보안 2일차  (0) 2022.09.27
클라우드 보안 1일차  (0) 2022.09.26