공부/클라우드 보안

9월 28일 클라우드 보안 3

마준123 2022. 9. 28. 17:33

지난시간 복습~!

 

 * EC2

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

 = Ubuntu를 웹서버로 만드는 실습 ( Debian 계열 : apt, apt-get )

 = Amazon Linux를 웹서버로 만드는 실습 ( Red hat 계열 : yum, 최근에는 dnf )

 = Windows Server 2016

 

 * RDS ( 관계형 데이터베이스 서비스, Relational Database Service )

 

 

실습 ) EC2 윈도우로 만들어보기

 

다른 EC2와 방법은 거의 비슷하다.

 = 윈도우를 선택하고 아래 이미지 선택에서 2016버전을 선택해준다 ( 2022는 메모리 등을 많이 잡아먹어서 돈이 많이들듯! )

 = 리눅스와 윈도우의 가격차이, 윈도우가 더 비싸다

 

아이피는 모자이크했다.

네트워크 설정

 = 윈도우에서는 기존 보안 그룹 선택 하지말고 새로 만들어줘야 한다. ( 설정이 조금 다름 )

 = 인스턴스 시작~

 

 

 

 * AMI ( Amazon Machine Image )

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

 

 

 = EC2를 만들었으면 누르고 연결 - RDP연결 - 암호 가져오기 - 브라우즈 - 내가 저장했던 키 불러오기 - 암호해독

짜잔 암호가 생겼다

 

 = 원격 데스크톱 연결 을 연다

 = 옵션표시 를 누르고 암호 위에 떠있는 퍼블릭IP를 복사해서 컴퓨터칸에 넣는다.

아이피는 모자이크했다.

 = 연결을 누르면 암호 입력칸이 뜨는데 밑에 암호를 복사해서 입력하면 윈도우 가상환경으로 들어간다.

 

 = 서버매니저 - add roles and features 클릭  ( 가상환경이라 사진을 캡쳐하기가 힘들다 )

 = 주의사항 스킵 체크하고 다음

 = 웹서비스 체크하고 무한 다음and인스톨 클릭

이런너낌

 = 사진처럼 인스톨이 완료되면 Close 누르고 공인(퍼블릭) 아이피로 접속해본다.

짜잔~

 

 * 접속이 안되는경우

 = http://퍼블릭IP 로 접속

 = https ----> SSL/TLS를 설치해야 하는데 우리는 아직 설치하지않았음!

 

------------------------------------------------------------------------------------------------------------------------------------

 

 * Windows Server 의 Web Server Root Directory ( ip주소나 도메인 입력했을때 제일 먼저 접속되는 위치)

 가상환경 ( 윈도우2016) 속에서

C:\inetpub\wwwroot

 

 * 복사방법 : 오른쪽 마우스 복사 ----> 오른쪽 마우스 클릭해서 paste

지난번에 실습했던 index.html과 이미지 (tulip.jpg) 를 윈도우 2016의 wwwroot 디렉토리에 이동시켜주고

index.html 파일을 iisstart.htm 으로 수정한다!. ( 확장자가 다르니 꼭 확인!! )

그리고 나서 다시 공인(퍼블릭)아이피로 접속해보면 내용이 바뀌어있다!

내 사이트
태진님이 놀러오라고 하셔서 놀러가봤다.
귀엽다 나도 고양이나 강아지 같은거 넣을껄.
거의 싸이월드급 에티켓 반사 문화
순범님 버전....
수업시간에 신난 트리오

 * 403 error가 뜨는 이유

 = 403 error는 보안 그룹에서 http를 허용하지 않았기 때문

 

 * Security Group ( 보안 그룹 )

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

 

 * 접속이 안되면

----> 보안 그룹에 설정이 잘 못된 경우

----> 서비스가 실행되지 않은 경우 ( 설정을 다 한 후에는 아파치 재시작 해야 함 )

 

 * 페이지가 안 보이면

 = 확장자가 잘못된 경우

 = 이미지 업로드 안했거나

 = 이미지 확장자가 잘못되었거나

 

 * 만약 루트 디렉토리에 파일이 여러개면(?)

 = 윈도 2016

 = 서버매니저

 = 왼쪽에 IIS

 = 우클릭 후 인터넷 인포메이션 서비스 매니저

 = 왼쪽에 EC2누르고 디폴트 다큐먼트 눌르고 우선 순위확인or 변경 가능

 = 윈도우 2016안에서 셧다운 ( 컴퓨터 끄기 ) 시키면 인스턴스가 자동으로 종료되고 삭제된다~ ( 우분투 종료할때 인스턴스에서 종료하 하는 것 과 같은것! )

 

---------------------------------------------------------------------------------------------------------------------------------------------------------

 

 * Database Server에 원격으로 접속하기

VMware를 켜고 Ubuntu 22.04 LTS를 실행하세요~ ( 부팅 )

 

 실습 ) Workbench ( 워크벤치는 클라이언트용 프로그램 )

 = 구글에 접속해서 'workbench' 검색

 = 맨 위에 뜨는거 들어가서

 = MySQL Workbench 8.0.30

 = 고투 다운로드 페이지

 = 위에꺼클릭

 = 노땡스클릭

 = 저장~

 = 설치 시작하고 Client only를 선택

 = 넥스트 - 넥스트 - Excute

 = 다운로드에서 error가 나오면 try again 클릭

 = 걍 라우팅이고 나발이고 다 피니쉬 하고 도스창도 꺼도댐

 = 워크벤치 실행~ ( 워크벤치가 꺼져도 윈도우에서 workbench 입력하면 실행 가능 )

짜잔~ 워크벤치 등장~

 

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

$ sudo mysql -u root -p

 ( 비밀번호 없으므로 그냥 엔터 )

mysql> create user blackpink@'%' identified by 'icecream';             // '%' : 어디서든지 접속이 가능한 계정

mysql> grant all privileges on *.* to blackpink@'%';                         // 모든 DB에 대해서 모든 권한을 부여함 ( like a 신돈 )

 

 

 * 다시 워크벤치로 돌아와서

 = +버튼을 누른다.

 = 커넥션네임에 VMware Ubuntu MySQL 적어준다 ( 맘대로 해도됨 )

 = 호스트네임 : VM 우분투 아이피

 = 유저네임 : 아까 우분투에서 만든 아이디 ( blackpink )

 = 패스워드 : Storen in vault 누르고 iceream 입력!

 = 하고 Ok를 누르고 만들어진 커넥션에 들어가본다!

 

는 오류

 = Cannot Connect to Database Server 가 뜬다. ( 황당? 당황? )

 

 * 해결과정!

$ sudo ufw allow 3306            //일단 우분투에서 이걸 추가해주자

 =  현재 접속이 안되는이유 : 외부에서 접속이 안되도록 설정되어 있음

$ cd /etc/mysql/mysql.conf.d/ 

$ sudo vi mysqld.cnf

:set nu

( 31번 라인으로 내려감 )

i를 누르고 127.0.0.1을 0.0.0.0으로 바꿔준다.     // 누구나 접속 가능하게 변경한 것

ESC

:wq

$ sudo service mysql restart     //MySQL 재시작

 

참고 ) 회사 내부에서만 접속 하려면

59.6.0.1.6일 경우, 끝자리가 바뀔 수 있으므로 , 59.6.0.0 으로 설정하는 방법 ---> 우리 회사에서는 IP가 바뀌더라고 접속 가능!

 

 = 이제 다시 접속하면 접속이 된다!

 = 비밀번호 입력하고 접속!

짜잔~

 =  명령어 한줄 입력하고 붉은색 동그라미 친 번개를 클릭하면 실행된다. ( 엔터친다고 실행되는게 아님! )

 

----------------------------------------------------------------------------------------------------------------------------------------------

 

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

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

 = 실제 업무에는 다른 계정을 만들어서 활용

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

 = 회사 내부에서만 접속 가능하도록 설정하도록 해야함

 

Quiz ) 재택근무를 하고 있는 상황에서 DB에 접속해야 하는 경우는 어떻게 할까요?

  ( DB는 회사 내에서만 접속됨 )

 = VPN을 이용해서 회사 내부망에 접속해서 DB에 접속

 = SSH로 업무용 서버에 접속해서 DB에 접속

 

 * 접속의 차이

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

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

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

 

실습 ) 다시 워크벤치로 와서

use gnuboard;      //그누보드 DB 사용
show tables;         // 테이블보기
select * from g5_write_free;      // 게시물들을 볼 수 있다.

desc g5_write_free;    // 컬럼명 보기

 

실습 ) goods.sql 파일 실습

 = open sql 버튼을 눌러서 goods.sql 파일을 연다

 = 명령어 작성하는곳에 명령어 7930줄이 공짜로 작성된다.

 = ctrl + a 눌러서 전체 선택

 = 이번엔 그냥 번개 모양을 눌러서 전체 명령어 실행을 해준다.

 = 그리고 show databases;

 =  아까는 보이지 않던 classicmodels가 생겼다

use classicmodels;

show tables;

desc orders;

select orderNumber,orderDate,shippedDate from orders;

select orderNumber,orderDate,shippedDate from orders;

 

 * 최근 주문한 10개의 목록을 추출해보기

select orderNumber,orderDate,shippedDate from orders order by orderDate desc limit 10;          //orderDate기준 내림차순(desc) 10개만보기 (limit 10)

실습 ) RDS (데이터베이스)

 = AWS에서 RDS를 검색해서 들어간다.

 =  표준생성 - MySQL - 프리티어 -

 = 자격증명  majun / abcd1234 로 만들었다

 

 ( 여기 너무 복잡해서 당장 쓸수가 없을거같다. )

심지어 문제가 생겼다.

RDS는 가용역역 2개를 사용해야 함

    --> Subnet 1개 추가해야 함

 

 = AWS에서 VPC로 이동

 = 서브넷 클릭

 = 서브넷생성

 = 이름 지어주기 ( 지난번과 다르게 )

 = 가용영역 ( 지난번과 다르게 )

 = 아이피 사진처럼 입력

 

 

 = 이제 다시 RDS로 가자

심지어 문제가 생겼다.

 

그래도 안돼서 이런걸 하였다.

 = 활성화 -  변경사항 저장

 = 이제 다시 RDS로 가자2

 = 아까 하던대로 하면 결국 생성이 되었다.

 

 

 * RDS 사전조건

 1 ) RDS는 가용역역 2개 필요함

 ---> Subnet 1개 추가해야 함

 2 ) VPC에서 DNS 경로를 사용해야 함 ( 호스트 이름 편집 ---> 활성화 )

 ---> 원격에서 접속할 수 있는 URL을 생성할 수 있음

 3 ) 설정할 때, _(언더바)는 사용 안됨, -(하이픈)은 사용 가능

 

 

 * Cloud의 종류

 1 ) IaaS ( Infrastructure as a Service )

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

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

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

 = 장점 : 대부분의 완전한 통제가 가능하고 가격이 저렴함

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

 

 2 ) PaaS (Platform as a Service)

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

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

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

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

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

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

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

 

 3 ) SaaS ( Software as a Service )

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

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

 = 단점 : 의존성 문제( 마이그레이션 하기 어려움[딴데로 옮기기] ), 가격이 비쌈

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

 = 주로 누가 할까? 커피/치킨.피자 프랜차이즈, 무역( 의류

 

 

실습 ) 

 = 만들어진 RDS가서 엔드포인트 가져오기

 = 워크스페이스가서 이렇게 입력하기 ( 아이디는 아까만든거!, 비밀번호도 아까만든거 Store in Vault 누르고 넣기! )

 

 = ok누르고 들어가서 아까처럼 실습하면된다.

 실습 ) Workbench를 이용해서, goods.sql을 RDS에 업로드하고 명령을 실행시켜 봅니다.

show databases;
use classicmodels;
show tables;
desc products;
select productName,productLine,ProductVendor,buyPrice from products;

 

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

EC2를 생성한 다음, DB를 설치하지 말고, RDS에 데이터를 저장하도록 해서Gnuboard를 동작시키려면?

 

 = 다 하던대로 하고 DB(MySQL)만 설치 안하고 하면된다.

그런데 안댄당.

 = 알고보니 RDS 처음 만들때 EC2 사용 안함을 체크했는데 사용 한다고 체크해야한다.

 = 다시 만들어야한다.

 = 그리고 워크스페이스는 이용할 수 없고 아래쪽 명령어로 접속 할 수 있다. ( 퍼블릭 IP설정이 안되기 때문, EC2를 통해서 접속해야함 )

 

sudo mysql -h mdatabase-1.cgx9dhulo9mj.ap-northeast-3.rds.amazonaws.com -u majun -p

 

 * RDS에 연결 방법

 = Public IP 부여 : EC2와 연결 안됨

 = EC2와 연결 : 지정한 EC2가 필요하므로 EC2를 미리 생성하고 연결해야 함 ---> 워크벤치 사용 불가

아까 잘못만든건 삭제

 

 = 계속 mysql을 찾을수 없다고 씨부렁거리길래 뭔가 했는데 설치를 안했다; ( 어이없음 ㅋㅋ)

 =  참고로 mysql-client 만 깔아도 가능함!

새로운DB는 EC2들어가서 sql깔고 아이디를 만들었다.

 = 무슨 차이인지는 모르겠는데 이번에는 아이디 만들때 @localhost가 아니라 '%'로 해주었다.

 = 아마도 외부 접속을 허용해줘야 하기 때문인거같다.

 

 = 성공~

 

 * EC2는 퍼블릭 서브넷(01)에 만들어야 외부에서 접속이 가능함 ( 프라이빗 서브넷은 접속 안됨 )

 

 * DB사용자 접속제한 설정

 = board@'%'        // 아무데서나 접속 가능

 = board@10.100.1.16 ( EC2사설IP )   //VPC 내부에서는 사설 IP로만 통신함

 

 

과거에 웹 애플리케이션을 만든적이 있는데 DB와 같이 호스팅 하는 방법을 몰라서 포기한 적이 있었다.

그래서 그런지 좀더 재미있게 배울 수 있었던거 같다.

다음에 시간적 여유가 생기면 만들어놨던거 ec2에 올려서 실행 해봐야겠다.

 

 

 

'공부 > 클라우드 보안' 카테고리의 다른 글

10월 05일 클라우드 보안 6  (0) 2022.10.05
9월 30일 클라우드 보안 5  (0) 2022.09.30
9월 29일 클라우드 보안 4  (0) 2022.09.29
9월 27일 클라우드 보안 2  (0) 2022.09.27
9월 26일 클라우드 보안 1  (0) 2022.09.26