이 영역을 누르면 첫 페이지로 이동
우당탕탕 보안이야기 블로그의 첫 페이지로 이동

우당탕탕 보안이야기

페이지 맨 위로 올라가기

우당탕탕 보안이야기

- 모의 해킹 - 취약점 분석/진단 - AWS

[2] AWS 인프라 구축 (apache2, ALB, Private subnet)

  • 2022.08.17 22:15
  • Cloud System/AWS
반응형

A W S

[ Amazone Web Service ]

2022.08.17


AWS의 서버를 구축하기 위한 두번째 게시글이다.
1편을 보고싶다면 클릭!

이번 편에서는 지난번에 이어서
아파치 서버 설치, 어플리케이션 로드 벨런싱, 프라이빗 서브넷 생성과 ALB, 그리고 프라이빗에서 DB구축과 php환경을 만들었다.

아키텍처 구상도

아키텍처 구상도


Apache2 설치

각각 접속한 리눅스 서버에 아파치 서버를 설치해준다.

sudo apt update
sudo apt install apache2

 

index.html 수정

그 다음 /var/www/html 경로로 이동하여 설치한 아파치 서버의 첫 화면인 index.html 파일을 수정해준다.
일부를 수정하는 것보다 삭제후 동일한 이름으로 다시 생성하면 편하다.
이렇게 해주는 이유는 나중에 대상그룹을 이어서 로드밸런싱을 해주는데 각 두개의 서버가 서로 바뀌어가며 접속되는지 확인하기 위해서 이다.

cd /var/www/html
ls
sudo rm -rf index.html
sudo vim index.html

 

index.html 수정 내용

vim index.html로 새로 생성한 index 파일의 내용을 각각 Web Server 01, Web Server02로 수정한다.

<h1>Web Server 01</h1>
<h1>Web Server 02</h1>

 

index.html 수정

각 대역의 IP로 접속을 하면 위에서 수정한 Web Server 01, 02가 나오는것을 확인 할 수 있다.

NAT 게이트웨이 생성

NAT 게이트웨이를 생성한다. VPC, subnet을 지정하고 프라이빗 IP를 CIDR 10.0.0.0/24로 지정
그리고 탄력적 IP설정을 활성화 한다.
CIDR에 대해 잘 모르겠다면?

위 주소에서 VPC생성 밑에 CIDR에 대해 설명해 놓았다.

NAT 게이트웨이를 생성하는 이유는 뒤이어 생성할 Private_subnet을 연결하기 위함인데 프라이빗 영역은 퍼블릭영역처럼 외부의 네트워크와 직접적으로 연결되어서는 안되기에 프라이빗은 NAT 게이트웨이를 사용하여 퍼블릭영역처럼 외부 인터넷망을 이용할 수 있도록 하는 것이다.

NAT 게이트웨이의 이름은 Cloud_Private_GW_01로 지정한다.

Private_subnet 생성

그 다음 Private_subnet을 생성한다.
IPv4 CIDR는 10.0.50.0/24로 지정. 가용영역은 2a로 지정하였다.
기존 Public_subnet과는 겹쳐도 무관하다. 어차피 subnet자체가 서로 다른 기능을 하기 위함이니 로드벨런싱을 위한 문제에도 영향이 없다.

라우팅 테이블은 조금전 생성한 NAT 게이트웨이로 지정한다. Cloud_Private_Infra_RW
Private_subnet을 생성할때 pem키도 새로 받아 칼리에 그대로 복사해 두자.

private01.pem


이제 관리 및 접속가능한 서버가 web01, web02, pri01 까지 총 3개가 생겼다.
지금까지는 각각 명령어를 통해서 접속을 해야 했는데 이때 접속할때마다 긴 명령줄을 계속 입력하고 있어야 했다.
1,2개라면 모르겠지만 앞으로 서버를 몇개 더 만들 수 있으니 config파일을 생성하여 편리하게 관리하자.

./ssh/config

칼리에서 터미널을 열면 첫번째 기본 화면에서 명령어를 이용하여 ssh config를 만들어준다.
명령어를 이용하여 생성한다.

sudo mkdir ssh
./ssh
sudo vim config

 

config 파일 생성

위와 같이 config파일을 셋팅 및 생성하여 나중에는 간단한 명령어만으로 ssh 접속이 가능하게 만든다.

Host web01
	Hostname 3.142.55.172 #IP주소
        User ubuntu #지정된 User이름
        IdentityFile /home/kali/ec2_web.pem #pem키 경로 지정
        
Host web02
	Hostname 18.222.103.134 #IP주소
        User ubuntu #지정된 User이름
        IdentityFile /home/kali/ec2_web.pem #pem키 경로 지정
        
Host pri01
	Hostname 10.0.30.40 #IP주소
        User ec2-user #지정된 User이름
        IdentityFile /home/kali/private01.pem #pem키 경로 지정
        Proxycommand ssh web01 -W %h:%p

 

대상그룹 생성

다음은 로드벨런싱을 위한 대상 그룹을 생성한다. 타겟 그룹 이름은 LB-Target001로, VPC는 Public_VPC로 생성한다.

대상그룹 / health checks

사진과 동일하게 설정한다.
특히 Health check path부분에는 /index.html로 작성한다.

/index.html

 

대상그룹 지정

생성이 완료되었다면 대상 그룹을 지정하는데 위처럼 Public_web01과 Public_web02를 선택하고
Include as pending below를 선택하며 마무리.

로드벨런서 생성
Zone Mapping

로드 벨런서의 생성 옵션에서 가용영역을 조금전 우리가 대상그룹 지정해둔 영역으로 선택한다.
web01, web02가 번갈아나오게 하도록 어떤 것을 만들지 지정하는 것이다.
여기서 가용영역이 겹쳐져있다면 제대로 나오지 않을 것이다.

대상 그룹을 눌러 조금전 생성한 그룹을 지정

 

로드 벨런싱 완료

이제 로드벨런싱까지 마무리가 되었다.

그리고나서 DNS이름이라고 되어있는 A레코드를 복사하여 주소창에 붙여 접속한다.
새로고침을 반복하면 Web Server01과 Web Server02가 번갈아 나오는것을 확인 할 수 있다.

다음은 아마존 자원 RDS를 이용한다.
RDS > 파라미터 그룹 에서 파라미터 그룹 생성을 해주고 위 사진과 같이 설정을 지정한다.

mysql-sg 인바운드 규칙 편집


이제 mysql의 인바운드 규칙을 편집해준다.
182.224.183.136/32에 대한 접속 허가와 더불어 10.0.0.0/16에 대해 인바운드 규칙을 편집해준다.

칼리로 돌아와서 pri01로 접속하고 위와 같이 명령어를 통해 mysql에 접속한다.

ssh web01
sudo apt install mysql-client 
sudo mysql -u admin -p -h mysql-db.ctcfj4odiban.us-east-2.rds.amazonaws.com

 

mysql> show databases


데이터베이스의 목록을 확인한다.

show databases;

 

wordpress 생성


다음으로는 wordpress라는 폴더를 db안에 생성한다.

create database wordpress;
show databases;

 

php환경 구축

이제 php환경을 구축한다.
기존에 apache2가 php이지만 DB환경에 아무것도 구축되어있지 않으니 php환경을 구축해본다.

sudo apt install php libapache2-mod-php php-mysql

 

redis 연동, 압축 해제

명령어를 통해 다운받은 php에서 redis에 연동, 압축파일을 해제 한다.

sudo apt-cache search php | grep php
sudo apt install php redis php-zip

 

php 환경 저장

해당경로로 들어가 info.php파일 환경을 저장

sudo vim /var/www/html/info.php
<?php
	phpinfo();
?>

 

AWS-EC2-public_web01

이제 인스턴스로 돌아가서 Public_web01의 퍼블릭IP주소를 확인하고 주소창에서 접속한다.

ip주소로 접속 info.php

주소창에 ip주소/info.php로 접속하면 php환경이 잘 구축되었는지 확인 할 수 있다.


마 치 며
기존에 해놨던것에 대한 연장선이라 사진이 몇개 꼬인것 같다.
오늘은 기존 진행보다 조금 더 많이 나갈 수 있었다.
apache설치부터 프라이빗에서의 mysql과 php환경 구축 까지..
오늘은 교육에 대해 별다르게 복습하지 않아서 남은 시간에 무엇을 해볼까 복습해볼까 하다가 지난번에 이어서 AWS를 이어서 하기로 했다.
AWS가 생각보다 복잡하지만 기능들이 재밌는것도 많고 더불어 리눅스까지 이해가 되어가는것같다.

 





반응형
저작자표시 비영리 변경금지 (새창열림)

'Cloud System > AWS' 카테고리의 다른 글

[3] AWS 인프라 구축(WP,IAM,S3,CloudWatch)  (0) 2022.08.23
[1] AWS 인프라 구축 (VPC, subnet, 인스턴스, 보안그룹)  (0) 2022.08.05

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • [3] AWS 인프라 구축(WP,IAM,S3,CloudWatch)

    [3] AWS 인프라 구축(WP,IAM,S3,CloudWatch)

    2022.08.23
  • [1] AWS 인프라 구축 (VPC, subnet, 인스턴스, 보안그룹)

    [1] AWS 인프라 구축 (VPC, subnet, 인스턴스, 보안그룹)

    2022.08.05
다른 글 더 둘러보기

정보

우당탕탕 보안이야기 블로그의 첫 페이지로 이동

우당탕탕 보안이야기

  • 우당탕탕 보안이야기의 첫 페이지로 이동

검색

메뉴

  • 홈

카테고리

  • 분류 전체보기 (66)
    • Whoami (1)
    • Malicious Code (9)
      • Analysis (5)
      • Review (4)
      • Recent Trend (0)
    • Digital Forensic (1)
    • Red Team (28)
      • Penetration Testing & CTF (13)
      • Tools (6)
      • 정보보안 (5)
      • Script (0)
      • AOS (4)
      • IOS (0)
    • Data Base (0)
    • Cloud System (3)
      • AWS (3)
    • OS (9)
      • Linux X (3)
      • Windows X (6)
    • Develope (14)
      • Dev Tools (3)
      • HTML (5)
      • CSS (4)
      • Python (1)
      • Source Code 분석 (1)
    • Synology (1)
      • NAS 서버 운영 (0)
      • NAS 서버 구축 (1)

정보

Wolfcall의 우당탕탕 보안이야기

우당탕탕 보안이야기

Wolfcall

블로그 구독하기

  • 구독하기
  • RSS 피드

방문자

  • 전체 방문자
  • 오늘
  • 어제

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기
Powered by Tistory / Kakao. © Wolfcall. Designed by Fraccino.

티스토리툴바