Bastion Host 는 보안을 위해서, 쉽게말하면 특정host만 들어갈수있도록 만드는거다

나는 web03을 pubilc에 있는 web02만 접속할수있도록 만들거 

참고로 프라이빗 서브넷에는 mydb라는 db도 있음 이전글 확인 

만약 터미널에서 접속하려고 한다며 

내 터미널에서 myweb02에서 접속을 하는 절차를 걸쳐야만 web03에  들어갈수있는거임 

 

먼저 보안그룹(방화벽)을 구축해줘야한다

vpc 잘 선택

 

 

이따가 테스트를 할거라서 들어갈수있는 "인바운드 규칙"을 추가해줄거임 

 소스유형을 사용자 지정으로 바꾸고 

우리는 web02만 들어올수있게 할거니까 ec2 메뉴에 가서 web02의 프라이빗 ip를 복사해서 

소스메뉴에 CIDR 형식으로 넣어준다 

규칙추가를 눌러서 하나 더 추가

 

ec2가서 접속을당할 (프라이빗서브넷에 있는) ec2 선택 - 작업 - 보안 - 보안그룹 변경하고 위에서 만든거 선택 

 

 

vpc - 라우팅 테이블 -라우팅테이블 클릭 - 서브넷연결 클릭

연결이 되있는게 public

없는게 private

 

* 위처럼 연결 확인해주고 터미널에서ssh 접속으로 web 01에서  my db로 접속하려고 하면  접속이 안되는걸 볼수있음

 

 

 

이제 web02로 접속 후 ping -c 10 10.0.1.84 

10.0.1.84는 mydb의 사설ip

-c 10 은 10번만 ping 날리라고 제한 한거임 

나는 termius를 사용한다 늘..^vY

 

아주 잘됨 ^v^

근데 myweb01에서 하면 ping이 안날려질거임 

 

mysql -h 10.0.1.84 -uhr -p

입력후 비번 입력 하면 접속 됨 10.0.1.84는 위에도 말했듯이 mydb의 privat ip,즉  사설 ip임 이제부터 설명 생략

 

 

*  이때 보안그룹에서 설정된 ip를 지워도 접속한 상태에서는 아무문제가 없어보이는데 

exit 한다음 다시 접속하려하면 안됨. 

하지만 ping은 날릴수있음 인바운드 규칙은 삭제안했기때문.

 

이런 과정으로 설정해주면 원하는 ec2만 private 서브넷에 자원에  접속할수있다 

 

 

 
 
Scale in(줄이는거) <-> out (늘리는거) : 주로 웹서버 ,
Scale up(늘리는거) <-> down(줄이는거) : 주로 DB서버 개수를 늘리는게 아니라 요청수가 많아지면 스펙을 올려주는거 안쓰면 down하면 되니까.
 
 
테이블 생성 ( 정형화되있는 테이블이 아님 관계형 DB랑 다름 )
 

 Tag 클릭 - 표 항목 탐색 - 항목 생성 
 

 
새속성 추가 누르고 속성 추가
속성이름  
문자열 추가 - item_category
숫자 추가 - price
 
값넣기 
파티션키 - 101ABS
정렬 키 - 2023-11-07
item_category - Storagebox
price - 50000
 
관계형데이터베이스
- 정해준 형태의 알맞은 데이터를 넣어야함 ex ) 정해진 형태는 숫자형인데 문자 넣으면 에러남.
- null도 데이터로 인정함 
 
DynamoDB
- schema 없음 (구조가없음) 특정한 정해진 곳 아니면 그 뒤는 아무렇게나 넣어도 됨 
 
하나의 컬럼에 데이터를 다 넣을때 관계형은 숫자로 지정되어있다면 계속 숫자만 넣어야하지만 Dynamo는 그렇지 않다 문자넣고 숫자넣고 아무거나 넣어도 에러안남.
 
 
선택 - 작업 - 항목복제

 
그냥 아무렇게나 넣어서 데이터 어떻게 넣는지 해보기 
불편하니까 스크립트로 데이터 넣는거 하려고 이거 포스팅 하는거임.
 
IAM - 정책 - 정책생성 - 서비스선택에서 dynamodb 선택 - 쓰기 선택 - batchwriteitem, putitem 선택 - 리소스는 "모두" 선택

 필터에서 고객관리형(유저가만든거) 볼수있음 
 
역할 - 역할생성 - 사용사례 Lambda 선택 - 고객관리형으로 바꿔서 내가 만든거 선택 -  이름 설정- 역할생

 

 
선택후 들어가서 정책연결 - AWSlambdabasicExe...선택 (aws에서 lambda 사용할수있는 권한)

내가 만들었던거랑 AWS 있으면 준비 끝
내가 lambda함수를 생성하면 dynamo가 item를 저장할수있는 권한을 구성한 
 
서비스 - 컴퓨팅 - Lambda - 함수생성 - 

스크립트에 맞는 런타임 선택 - 기본실행역할변경 선택 - 기존역할사용 클릭후 위에서 만든 역할 선택- 함수생성

#Lambda Function for Multiple row insert 
import boto3

def lambda_handler(event, context):
    client = boto3.resource('dynamodb')
    table = client.Table('Customer-Transaction')
    
    with table.batch_writer() as batch:
        batch.put_item(
            Item={
                'customer_id' : '101ABC',
                'transaction_date' : '2023-11-12',
                'item_category' : 'Drawer',
                'price' : 600000
            }
        )
        batch.put_item(
            Item={
                'customer_id' : '103RAX',
                'transaction_date' : '2023-11-12',
                'item_category' : 'Chair',
                'price' : 275000
            }
        )
        
        batch.put_item(
            Item={
                'customer_id' : '304AAC',
                'transaction_date' : '2023-11-12',
                'item_category' : 'Storagebox',
                'price' : 50000
            }
        )

 
샘플코드 지우고 코드에 스크립트 넣기 

다 했으면 Deploy 선택 
 

 

- 실행해보고 데이터가 추가 안됐다면 좀 기다려보자 

처음에 추가가 안되서 에러인줄 알았는데 다음날에 보니까 추가되어있었음

ec2 - 보안그룹 - 인바운드 규칙 - 규칙 추가 - 3306, anywareipv4

 

1. root 계정 초기 암호 보기 grep "temporary password" /var/log/mysqld.log ⇒초기 암호 제공
2. 초기암호로 로그인
3. root 계정 암호변경하기

 

대소문자 특수문자 포함해서 8글자로 비밀번호 변경 

비밀번호 잃어버리면 끝임 잘 적어두길 바람..

 

변경후 확인 

 

- 포트번호 확인 

show globbal variables like 'PORT'; 

 

- host 보기 

select host, user from mysql.user;

localhost 라고 되어있는host는 다른곳에서 접속 못함

- 원격유저 만들기
create user 'hr'@'%' identified by 'Mydb1234!';

 직접 만들때 local 에서만 접속할때 만들고싶으면 %자리에 local 넣어주면 됨 즉 %는 0.0.0.0과 같음
 identified by 'Mydb1234!';는 비번 만들기 

-권한부여
grant all privileges on *.* to 'hr'@'%' 


all privileges on -- 이부분에 권한의 영역
*.* -- DB의 이름 ( *.* 는 생성되는 모든)
'hr'@'%'  -- 계정 (원격에서 관리자로 로그인할수있게 하려면 이부분에 root 넣으면됨)


이 과정을 잘 거쳤다면 

이런식으로 잘 된걸 볼수있다.

-db 보기 
show databases;

이미데이터베이스가 있지만 이 4개는 쓸수 없음 저 4개는 데이터딕셔너리이기 때문 

우리가 쓰려고 있는게 아니라 이미 데이터가 있음 근데 사용자 데이터가 아니라 db 자체의 데이터가 담겨져있기때문

 

 

-grante( 권한부여 해준 명령어) 를 영구저장하는것처럼 권한 저장(부여) 해주기

flush privileges;

 

-db 만들기 

create database hrdb;

 

 

다시 show 명령어를 이용해서 보면 늘어나있음 

 

-지금부터 어느 db에서 작업할건지 지정하기 

use hrdb;

 

-새 테이블 만들기 

길어서 사진으로 대체함

-table 보기 

show tables; 

 

테이블 생성후 show tables; 명령어를 입력하면 만든 table이 보임 

참고 :

하나의 데이터 베이스에는 이름이 동일한 테이블을 허용하지 않음

 

 

 

sql에서 저렇게 ec2 퍼블릭 아이피 입력하고 , 유저네임 입력후에 테스트 커넥션에 비번넣으면 생성완료 

 

sql에서 지정은 두번클릭 (두꺼워짐)

 

sql에서 데이터 넣기  test

 

그리고 다시 터미널로 와서 보면

다른 프로그램에서 했는데도 잘 설정되있는걸 볼수있음

 

 

그리고 myweb01 인스턴스에서 원격 접속 을 해서 업데이트를 해볼건데 

mysql -h3.36.14.135 -uhr -p  

입력후 비번입력하고 

use hrdb; (지정하기)

show tables; 하면 잘 들어온것을 볼수있다 

 

 

 

myvpc 안 현상황 

 

그림이 영.. ㅎ

 

대충 DB를 쓰지않고 하나의 데이터를 여러 인스턴스에서 수정하면 계속 수정본(사본)이 나오지만 

DB를 이용해 DB에서 접속을 하고 자체적으로 수정이나 편집을 하면 훨씬 효율적이여서 우리는 바로 이 환경을 구축해본것이다.

db를 터미널을 이용해 직접들어가는게 local web01은 db가 없는데 원격접속해서 편집하고 업데이트한거임 

 

 

 

 

 

 

 

글을 마치며 ..

mysql을 사용하는것도 처음이고 DB 자체의 개념과 원리를 잘 알지 못했는데 db의 편의성과 직접 환경세팅및

구성해보면서 

개념을 확실히 알게된거같아서 재미있었음 터미널 사용하는게 조금 어렵기도 하고 처음보는 명령어들이였는데 

직접 입력하면서 구성해보니까 점점 손에 익는거같음 

DB로 활용할 ec2를 프라이빗 서브넷에 생성하니까

SSH 접속이 안되고 당연히 time out 에러가 뜬다 

문제 해결하는게 과제였는데 

 

VPC내에 Private 서브넷을 만들면 별도로 기본적인 라우팅 테이블이 생성된다.
하지만 이 라우팅 테이블은 외부와 연결되지 않기 때문에
인터넷 연결을 하려면, 별도의 NAT 게이트 웨이가 필요하다

나는 NAT 게이트웨이를 생성해서 private 서브넷의 라우팅 테이블을 NAT 게이트웨이와 연결시켜 해결하려고 했다

 

프라이빗 서브넷을 외부 인터넷 망과 연결한다고 해서 

게이트웨이를 프라이빗 서브넷 안에 만들면 안되고 퍼블릭 서브넷에 만들어야한다 

탄력적 ip 할당 도 받아주면 NAT 게이트웨이가 생성될것이다.

 

 

이제 연결을 꼽았다 뺀다고 생각하면 되는 서브넷 연결에서 myvpc-sub02를 선택해주면 연결이 된다.

명시적 연결이 없는 서브넷 ( 프라이빗 서브넷 ) - myvpc-sub02

 

Tremius로 연결해주면 

아주 잘된다 

 

글을 마치며..

 

aws 배우는 과정에서 서버에 에러가 생길때 문제를 해결하는 과정이 재미있고

문제 해결하면서 다른 기술블로그나 aws 개념을 다시 되돌아보면서 공부가 직접적으로 많이 되는거같다

AWS 공인 강의 보다 훨씬 재미있다..

 

이번 문제해결에 참고한 블로그 및 자료 

- https://jesuisjavert.github.io/2021/02/03/aws-study7/

 

Jesuisjavert

IT dev blog

jesuisjavert.github.io

- https://mkchoi.me/archives/176

 

Private 서브넷 EC2 접속 방법 - MK Choi's Web Log and US stocks

AWS Private 네트워크에 생성한 EC2 인스턴스에 접속하는 방법

15.165.219.50

 

NFS 시스템은 서버간의스토리지 공유

s3와 차이점으로는 s3와는 다르게 nfs는 읽기 쓰기가 가능하다 

 

기능경기대회에서 

두개 이상의 연결을 요구할경우 스토리지 nfs 로 연결하면 된다 

 

라는 점을 바탕으로 실습 진행예정 

'AWS' 카테고리의 다른 글

AWS mysql 사용법 / AWS mysql로 DB구성하기  (0) 2024.01.04
AWS 프라이빗 서브넷 EC2접속실패 에러 해결  (0) 2024.01.04
AWS ec2 Termius,Moba접속 timeout 에러  (0) 2024.01.03
AWS 스토리지  (0) 2024.01.03
Aws nuke 사용법  (2) 2024.01.02

집에와서 복습겸 Nuke로 배운내용을 다시 다 지우고 새로하는데 에러가 뜬다 

ec2를 만드려고 하는데 인스턴스 유형이 t2가 안된다 가용영역 2b에서 t2를 지원하지 않는거같다..

* 인스턴스 유형에 따라서 뭐가 달라지는지 모르겠어서 멘붕이다.. 실습했을땐 됐었는데 안되니까 가용영역을 막 바꿔도 되는지를 모르겠음 

+ 상관 없다고 하심 

 

그래도 어떻게 어떻게 해서 라우팅 테이블과 igw 설정도 마치고 ec2 접속을 해보려는데 역시나 또 안됨

moba에서도 에러 뜨고 

 

termius 에서도 에러가 뜬다 ec2 접속이 되야 뒤에 mysql이랑 다 설정할수있는데 접속이 아예 안된다 timeout.. 

 

다 잘만들었는데 역시 보안그룹 문제였다 .

모든 icmp ipv4랑 Http 두개를 생성하는데만 초점을 맞추니까

기본으로 설정되어있던 ssh접속을 삭제하고 저 두개만 만든거다. 총 3개가 있어야하는데 ssh를 빼먹고 ssh접속이 안된다고 하고있었던꼴.그러니 당연히 ssh접속이 될리가 없다.

드디어 엑세스 탭이 뜨고 my sql 설정도 할수있다.

 

 

여기까지는 이런식으로 나는 termius를 사용해서 완료했다.

 

근데 그 뒤에 단계에서 또 막혔는데,.

1. 이미지생성을 잘했는지 

2. myweb02로 접속을 어떻게 하는건지 igw나 라우팅테이블연결도 안됐는데 접속을 어떻게? 

인스턴스 시작까지는 잘 한거같은데 일단 다 지우고 물어보기로 했다

그리고 web02는 SSH 접속이 안되고 time out 되는게 정상 아닌가..? 생각했는데

역시 time out 된다 그러면 인스턴스를 잘못만든건가??? 또 멘붕

 

이미지는 잘 만들었고 애초에 ec2를 sub01에 만들었어야했다 원초적인 문제였었다 

퍼블릭 서브넷(sub01)이 아니라 프라이빗 서브넷(sub02)에 접속하려고 하니까 외부접속을 차단한것

'AWS' 카테고리의 다른 글

AWS 프라이빗 서브넷 EC2접속실패 에러 해결  (0) 2024.01.04
NFS  (0) 2024.01.03
AWS 스토리지  (0) 2024.01.03
Aws nuke 사용법  (2) 2024.01.02
Aws 강의 캠프  (0) 2024.01.02

RSA ctf 문제풀거나 할때 유용하게 쓰이는 소인수분해 툴인데 

엄청큰 수를 입력하면 소인수분해가 되는것을 확인할수있는데, 그 옆에 있는 알파벳의 뜻을 정리하려고한다.

 

 

입력한 번호가 현재 데이터베이스에 어떻게 나열되어 있는지를 나타냄.
C   : 복합, 알려진 요인 없음
CF : 복합재, 알려진 요인
FF : 합성, 완전 인수분해
P : 확실한 소수 
Prp : 아마도 소수일 것 
U : 알 수 없음
Unit :"1"만을 위한 단위
N : 이 번호는 데이터베이스에 없다(귀하의 설정으로 인해 추가되지 않았다).
* : 이 요청 중에 데이터베이스에 추가됨

 

한마디로 fatordb에 내가 입력한 수가 소인수분해가 잘되는지 Db에는있는지 볼수있는 알파벳인거

대부분 문제 풀면 FF가 뜨면서factorize 되는걸 볼수있음 

컴퓨터에 스토리지를 연결하는 방식
DAS : 다이렉트 연결 
NAS : 이더넷
SAN : 전문가가 필요함 
 
스토리지형식 
block : usb 포맷하기전, 포맷안하고 직접 데이터를 넣어서 씀 (데이터베이스)
file : usb포맷하고 난 후 (우리가 아는거) 
object
file과 object는 관점만 다르지 다른건 없음
 
San 연결을 주로 사용하는게 block 형식  파일 시스템은 block 시스템을 가공하지않고
블록 단위로 읽어서 데이터를 가져옴 
 
 
----mount 개념 정리 필요 무조건---
 
 
 
LVM (logical volume manager)
1.physical volum 생성
2. volume group 
3. logical volum 
 
 

'AWS' 카테고리의 다른 글

AWS 프라이빗 서브넷 EC2접속실패 에러 해결  (0) 2024.01.04
NFS  (0) 2024.01.03
AWS ec2 Termius,Moba접속 timeout 에러  (0) 2024.01.03
Aws nuke 사용법  (2) 2024.01.02
Aws 강의 캠프  (0) 2024.01.02

Aws를 배우고 지방기능경기대회용으로 버지니아 북부에서 하다가 

강의캠프가서 서울에서하다가 집에서 복습하다가 이러니까 너무 정신산만하고 다 없애버리고 싶어서

nuke 설치법과 활용법을 정리하려고 한다 

https://cloudest.oopy.io/posting/056 블로그 참고!-!

 

 

 

https://github.com/rebuy-de/aws-nuke/releases/tag/v2.15.0

 

Release v2.15.0 · rebuy-de/aws-nuke

Changes since v2.14.0 Enhancements kind/enhancement Feature/324 date filter #480 (@jcarter3) kind/enhancement add support for programatically setting custom aws credentials #529 (@tylersouthwick)...

github.com

OS에 맞는 zip 다운후 압축해제  



압축해제해준 파일에 config.yml 생성후 명령어를 적어준다 

regions:  
- ap-northeast-2 #삭제를 원하는 리전 여러개 입력해도 된다 
- us-west-1

account-blacklist:
- "999999999999" # production

accounts:
  "[AWS 계정 번호 12자리]": {}  # 예시 : "123456789098": {}


alias 즉 계정 생성 

aws iam create-account-alias --account-alias cloudest

 

aws- nuke 실행

aws-nuke-v2.15.0-windows-amd64.exe -c config.yml

 

 

aws-nuke-v2.15.0-windows-amd64.exe -c config.yml --no-dry-run

이렇게 입력하면 내 모든 vpc와 서브넷들을 다 삭제해준다 

물론 바로 삭제해주진 않고,

내가 설정한 alias(별명)과 위의 명령어를 한 2번씩 입력하면 이제 진짜진짜 지운다? 하고 지워준다.

 

초기설정후에는 위에 명령어만 같은 경로로 입력해주면된다 

'AWS' 카테고리의 다른 글

AWS 프라이빗 서브넷 EC2접속실패 에러 해결  (0) 2024.01.04
NFS  (0) 2024.01.03
AWS ec2 Termius,Moba접속 timeout 에러  (0) 2024.01.03
AWS 스토리지  (0) 2024.01.03
Aws 강의 캠프  (0) 2024.01.02

+ Recent posts