지난시간 복습~!
* 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;
* 최근 주문한 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 만 깔아도 가능함!
= 무슨 차이인지는 모르겠는데 이번에는 아이디 만들때 @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 |