카테고리 없음

새싹 성동 2기 7일차 정리

news6001 2024. 10. 30. 21:43

 생성형 AI 활용한 클라우드&보안 전문가 양성 캠프

 

#1 user1, user2, user3 사용자 생성

 

IAM > 사용자 > [사용자 생성] 버튼 클릭

사용자 세부 정보 입력하고 [다음] 버튼을 클릭

사용자 이름은 "발급받은본인계정_user1" 형식으로 지정합니다.

 

권한 정책을 선택하지 않고 [다음] 버튼을 클릭

입력한 내용을 확인하고 [사용자 생성] 버튼을 클릭

동일한 방법으로 user2와 user3를 생성 ⇒ 사용자 목록에서 추가된 사용자를 확인

사용자 이름은 "발급받은본인계정_user2", "발급받은본인계정_user3" 형식으로 지정합니다.

 

#2 S3-Support, EC2-Support, EC2-Admin 사용자 그룹 생성

사용자 그룹 이름을 입력하고 그룹에 소속된 사용자를 선택한 후 권한 정책 연결 없이 그룹을 생성

그룹 이름을 "발급받은본인계정_그룹이름" 형식으로 지정합니다.

세 개의 그룹에 사용자 한 명이 추가되고 권한이 정의되어 있지 않은 것을 확인

#3 S3-Support 사용자 그룹에 S3 읽기 전용 관리형 정책 추가

IAM > 사용자 그룹 > S3-Support 그룹 선택 > 권한 탭 > 권한 추가 : 정책 연결

 

AmazonS3ReadOnlyAccess 정책을 선택하고 해당 정책에 JSON 정책 문서를 확인한 후 [정책 연결] 버튼을 클릭

 

해당 그룹에 속한 사용자에게도 동일한 권한이 부여된 것을 확인할 수 있음

 

#4 EC2-Support 사용자 그룹에 EC2 인스턴스 읽기 전용 AWS 관리형 권한을 설정

 

#5 EC2-Admin 사용자 그룹에 EC2 인스턴스 읽기, 실행, 중지 권한을 부여 (인라인 정책을 적용)

 

 

JSON 편집기를 이용하는 경우

 

정책 이름을 입력하고 [정책 생성] 버튼을 클릭

"발급받은본인계정_EC2-Admin-Policy" 형식으로 정책 이름을 지정

 

EC2-Admin 사용자 그룹에 생성한 정책이 연결된 것을 확인

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

이후 정리는 수업 내용 복습 겸 정리

 

6. EC2 인스턴스 생성

 

본인에게 할당된 리전을 확인하고 동일 리전을 사용

 

리전 선택

EC2 대시보드 화면에서 [인스턴스 시작] 버튼을 클릭 

 

 

인스턴스의 이름을 입력하고,Amazon Linux 2023 AMI를 선택(프리 티어 사용 가능한 이미지를 선택)

 

 

인스턴스 유형으로 t2.micro를 선택하고 새 키 페어 생성 링크를 클릭해서 키 페어를 생성

 

 

키 페어 이름을 입력하고[키 페어 생성] 버튼을 클릭 => 내려받은 키 페어 파일은 해당 인스턴스 접속을 위해서 잘 보관해야 함

나머지 설정을 그대로 유지한 상태로 [인스턴스 시작] 버튼을 클릭 

 

인스턴스 실행을 확인

7. S3 버킷 생성

S3 인트로 페이지에서[버킷 만들기] 버튼을 클릭 

 

할당 받은 리전을 선택하고 버킷 이름을 입력한 후 나머지 설정을 그대로 둔 상태에서 [버킷 만들기] 버튼을 클릭

버킷 이름은 글로벌하게 유일해야함

 

AmazonS3ReadOnlyAccess 권한 확인

https://docs.aws.amazon.com/ko_kr/aws-managed-policy/latest/reference/AmazonS3ReadOnlyAccess.html

 

AmazonS3ReadOnlyAccess - AWS 관리형 정책

이 페이지에 작업이 필요하다는 점을 알려 주셔서 감사합니다. 실망시켜 드려 죄송합니다. 잠깐 시간을 내어 설명서를 향상시킬 수 있는 방법에 대해 말씀해 주십시오.

docs.aws.amazon.com

 

EC2 서비스로 이동 => EC2 서비스에 대한 권한이 없으므로 대시보드에 정보가 출력되지 않음 

 

AmazonEC2ReadOnlyAccess 권한 확인

https://docs.aws.amazon.com/ko_kr/aws-managed-policy/latest/reference/AmazonEC2ReadOnlyAccess.html

 

AmazonEC2ReadOnlyAccess - AWS 관리형 정책

이 페이지에 작업이 필요하다는 점을 알려 주셔서 감사합니다. 실망시켜 드려 죄송합니다. 잠깐 시간을 내어 설명서를 향상시킬 수 있는 방법에 대해 말씀해 주십시오.

docs.aws.amazon.com

S3 서비스로 이동 ⇒ user3 사용자는 S3 서비스에 대한 권한이 부여되지 않았기 때문에 버킷 목록을 조회할 수 없음

 

 

 

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

 

Access Key를 이용한 AWS 서비스 이용

AWS 서비스를 이용하는 방법

  1. Management Console을 이용하는 방법 ⇒ 사람 사용자가 로그인 후 사용하는 방법
  2. AWS CLI를 이용하는 방법 ⇒ 사람 또는 프로그램이 Access Key를 이용해서 사용하는 방법 
  3. 언어별 SDK를 이용하는 방법 ⇒ 응용 프로그램을 만들 때 사용하는 방법 (예: Python 용 AWS SDK = Boto3)

AWS CLI 설치

https://docs.aws.amazon.com/ko_kr/cli/latest/userguide/getting-started-install.html

 

명령 프롬프트를 실행해서 아래 명령어로 설치 프로그램을 다운로드한 후 기본 설정 상태로 설치를 진행

c:\Users\*> msiexec.exe /i https://awscli.amazonaws.com/AWSCLIV2.msi

 

설치가 완료되면 새 명령 프롬프트를 실행해서 설치 여부를 확인

c:\Users\ * > aws --version

aws-cli/2.18.17 Python/3.12.6 Windows/11 exe/AMD64

 

 

C:\Users\  * > aws help

 

aws

^^^



Description

***********

 

The AWS Command Line Interface is a unified tool to manage your AWS

services.



Synopsis

********

 

   aws [options] <command> <subcommand> [parameters]

 

Use *aws command help* for information on a specific command. Use *aws ⇐ 명령어 사용법법

help topics* to view a list of available help topics. The synopsis for

each command shows its parameters and their usage. Optional parameters

are shown in square brackets.

 

:

 

사용자 목록을 조회

https://docs.aws.amazon.com/cli/latest/reference/iam/list-users.html

 

list-users — AWS CLI 1.35.17 Command Reference

Note: You are viewing the documentation for an older major version of the AWS CLI (version 1). AWS CLI version 2, the latest major version of AWS CLI, is now stable and recommended for general use. To view this page for the AWS CLI version 2, click here. F

docs.aws.amazon.com

 

C:\Users\*> aws iam list-users

 

Unable to locate credentials. You can configure credentials by running "aws configure".

 

aws configure 명령으로 사용자 크리덴셀을 등록

 

C:\Users\*> aws configure

AWS Access Key ID [None]: ********* ⇐ 앞에서 생성한 액세스키 정보를 입력

AWS Secret Access Key [None]:**********************

Default region name [None]: us-west-2 ⇐ 본인에게 할당된 리전을 입력

Default output format [None]: json ⇐ 출력 형식을 지정

 

aws iam list-users 명령을 실행 

C:\Users\ * > aws iam list-users

{

    "Users": [

        {

            "Path": "/",

            "UserName": "",

            "UserId": "",

            "Arn": "",

            "CreateDate": "2024-10-26T03:40:25+00:00"

        },

        {

            "Path": "/",

            "UserName": "",

            "UserId": "",

            "Arn": "",

            "CreateDate": "2024-10-26T03:40:10+00:00",

            "PasswordLastUsed": "2024-10-30T00:21:43+00:00"

        },

        {

            "Path": "/",

            "UserName": "",

            "UserId": "",

            "Arn": "",

            "CreateDate": "2024-10-30T02:15:27+00:00"

        }

    ]

}

S3 버킷 목록을 조회

https://docs.aws.amazon.com/cli/latest/reference/s3api/list-buckets.html

 

C:\Users\ * > aws s3api list-buckets

{

    "Buckets": [], ⇐ 생성된 버킷이 없음

    "Owner": {

        "ID": ""

    },

    "Prefix": null

}

 

S3 버킷 생성 후 조회

https://docs.aws.amazon.com/cli/latest/reference/s3api/create-bucket.html

 

                                                 생성할 버킷 이름

                                                 ~~~~~~~~~~~~~~~~~~~~~ 

C:\Users\*> aws s3api create-bucket --bucket-*-clibucket

                                                 ~~~~~~~~~~~~

                                                 발급받은 계정 이름     

 

An error occurred (IllegalLocationConstraintException) when calling the CreateBucket operation: The unspecified location constraint is incompatible for the region specific endpoint this request was sent to.

 

 

 

C:\Users\*> aws s3api create-bucket --bucket- *-clibucket --create-bucket-configuration LocationConstraint= us-west-2               ~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                 |

|                                                 +-- 버킷 이름에 대문자를 사용할 수 없으며, 유일해야 함

+-- 버킷을 생성할 리전을 지정 (본인에게 할당된 리전을 사용)

{

    "Location": "http://*-clibucket.s3.amazonaws.com/"

}


C:\Users\*> aws s3api list-buckets

 

{

    "Buckets": [

        {

            "Name": "*-clibucket",

            "CreationDate": "2024-10-30T03:05:35+00:00"

        }

    ],

    "Owner": {

        "ID": ""

    },

    "Prefix": null

}

 

S3 버킷을 삭제 후 조회

 

https://docs.aws.amazon.com/cli/latest/reference/s3api/delete-bucket.html



C:\Users\*> aws s3api delete-bucket --bucket *-clibucket

 

C:\Users\*> aws s3api list-buckets

{

    "Buckets": [],

    "Owner": {

        "ID": ""

    },

    "Prefix": null

}

 

VPC(Vitual Private Cloud)

  • 네트워크 계층
  • AWS 사용자 계정 전용 가상 네트워크
  • AWS 클라우드에서 다른 가상 네트워크와 논리적으로 분리
  • 한 AWS 리전 안에서만 존재할 수 있고, 한 리전에 만든 VPC는 다른 리전에서는 보이지 않음 ⇒ VPC Peering

생성시 RFC 1918에 지정된 프라이빗 주소 체계 사용을 권고

  •   10.0.0.0/8  => 10.0.0.0  ~ 10.255.255.255
  •   172.16.0.0/12 => 172.16.0.0 ~ 172.31.255.255
  •   192.168.0.0/16 => 192.168.0.0 ~ 192.168.255,255

참조 ⇒ https://aws.amazon.com/ko/what-is/cidr/

 

 

VPC 구성 옵션

 

https://docs.aws.amazon.com/ko_kr/vpc/latest/userguide/create-vpc-options.html

 

  • 가용 영역(AZ) - AWS 리전에 중복 전원, 네트워킹 및 연결이 있는 하나 이상의 개별 데이터 센터
  • CIDR 블록 - VPC와 서브넷의 IP 주소 범위를 지정
  • DNS 옵션 - 서브넷에서 시작된 EC2 인스턴스의 퍼블릭 IPv4 DNS 호스트 이름이 필요한 경우, DNS 호스트 이름 활성화 및 DNS 확인 활성화 옵션을 활성화
  • 인터넷 게이트웨이(IGW) -  VPC의 서브넷에 속한 인스턴스에 대해 인터넷 송수신 액세스를 활성화
  • 이름 - VPC 이름
  • NAT 게이트웨이 - 클라우드 플랫폼 내부에 있는 여러 대의 비공인 IP를 가진 고객의 서버가 공인 IP 주소를 가진 외부 서버와 통신할 수 있도록 연결하는 NAT 서비스
  • 라우팅 테이블 - 서브넷 또는 게이트웨이의 네트워크 트래픽이 전송되는 위치를 결정하는 라우팅 규칙 집합
  • 서브넷 - VPC의 IP 주소 범위로, 특정 서브넷에 AWS 리소스를 생성할 수 있음
  • Tenancy -  VPC로 시작하는 EC2 인스턴스가 다른 AWS 계정과 공유되는 하드웨어에서 실행되는지 아니면 사용자 전용 하드웨어에서 실행되는지를 정의

기본 VPC(default VPC)

 

https://docs.aws.amazon.com/ko_kr/vpc/latest/userguide/default-vpc.html

 

  • 계정이 2013년 12월 4일 이후에 생성된 경우 각 리전에 기본 VPC가 함께 제공
  • 각 가용 영역의 퍼블릭 서브넷, 인터넷 게이트웨이 및 DNS 확인 활성화 설정과 함께 제공

               ~~~~~~~~~~~~~

               인터넷 게이트웨이로의 라이팅이 포함된 서브넷 = 인터넷과 연결이 가능한 서브넷   

 

기본 VPC 구성 요소

  • 크기가 /16 IPv4 CIDR 블록(172.31.0.0/16)인 VPC를 생성 ⇒ 최대 65,536개(2^16)의 프라이빗 IPv4 주소를 제공
  • 각 가용 영역에 크기가 /20 기본 서브넷을 생성 ⇒ 서브넷당 최대 4,096개(2^12)의 주소를 제공하며 그 중 일부(5개)는 예약
  • 인터넷 게이트웨이를 생성하고 기본 VPC에 연결
  • 모든 트래픽(0.0.0.0/0)이 인터넷 게이트웨이를 가리키는 경로를 기본 라우팅 테이블에 추가
  • 기본 보안 그룹을 생성하고 이를 기본 VPC와 연결
  • 기본 네트워크 ACL(액세스 제어 목록)을 생성하고 이를 기본 VPC와 연결
  • AWS 계정에 설정된 기본 DHCP 옵션을 기본 VPC와 연결

서브넷(subnet)

  • VPC 내 논리 컨테이너
  • EC2 인스턴스를 배치하는 장소 = 인스턴스는 서브넷 안에 위치   

              한번 서브넷에 인스턴스를 생성하면 다른 서브넷으로 옮길 수 없음

              인스턴스를 종료하고 다른 서브넷에 새 인스턴스를 만들 수는 있음

  •  인스턴스를 서로 격리하고, 인스턴스 간의 트랙픽 흐름을 제어하고, 인스턴스를 기능별로 묶을 수 있음
  • 서브넷은 하나의 가용 영역 내에서만 존재할 수 있음
  • 서브넷 CIDR 블록
    • VPC의 일부, VPC 내에서는 유니크해야 함
    • 모든 서브넷에서 처음 4개의 IP와 마지막 1개는 예약되어 있으므로 인스턴스에 할당할 수 없음
    • 예 : 서브넷 CIDR이 172.16.100.0/24인 경우 

172.16.100.0 ~ 172.16.100.3         

172.16.100.255

 

10.0.0.0          네트워크 주소

10.0.0.1           AWS에서 VPC 라우터용으로 예약

10.0.0.2           DNS 서버 주소

10.0.0.3           AWS에서 나중에 사용하려고 예약

10.0.0.255       네트워크 브로드캐스트 주소

 

  • 퍼블릿 서브넷: 서브넷이 인터넷 게이트웨이로 향하는 라우팅이 있는 라우팅 테이블과 연결된 경우

  • 프라이빗 서브넷: 서브넷이 인터넷 게이트웨이로 향하는 라우팅이 없는 라우팅 테이블과 연결된 경우

ENI(Elastic Network Interface: 탄력적 네트워크 인터페이스)

  • 물리 서버의 네트워크 인터페이스와 같은 기능을 수행
  • VPC에서 가상 네트워크 카드를 나타내는 논리적 네트워킹 구성 요소

인터넷 게이트웨이(igw)

  • 퍼블릭 IP 주소를 갖는 인스턴스가 인터넷에 연결할 수 있도록 기능을 제공
  • 처음 VPC를 만들면 인터넷 게이트웨이가 연결되어 있지 않으므로, 직접 인터넷 게이트웨이를 만들고 VPC와 연결해야 함 
  • 하나의 VPC는 하나의 인터넷 게이트웨이만 연결 할 수 있음

라우팅(routing)

  • VPC의 네트워크 트래픽을 전달할 위치를 결정하는 데 사용되는 규칙
  • 트래픽을 전달할 IP 주소 범위(대상 주소)와 트래픽을 전송할 게이트웨이, 네트워크 인터페이스 또는 연결(대상)을 지정
  • VPC는 소프트웨어 함스로 IP 라우팅을 구현 => 사용자는 라우팅 테이블만 관리
  • 라우팅 테이블 -> 라우팅 집합으로, 서브넷과 연결할 수 있음
  • 기본 라우팅 테이블: VPC와 함꼐 자동으로 제공되는 라우팅 테이블
    • 기본 VPC인 경우, local 및 igw로의 라우팅을 포함

 

  • 기본 VPC인 아닌 경우, local 라우팅만 포함

예를 들어, 라우팅 테이블이 아래와 같이 정의되어 있는 경우,

 

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

                       대상 주소                                           대상

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

                        172.31.0.0/16                                    local

                        0.0.0.0/0                                            igw-xxxxxxxxx

                        ~~~~~~~~~                                        ~~~~~~~~~~~~~

                       인터넷 상의 모든 호스트 IP를 기반    인터넷 게이트웨이

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

 

  • 192.51.100.50으로 패킷을 보낼려고 하면, …

라우팅할 위치와 가장 근접하게 일치하는 항목을 기반으로 라우팅을 처리 → 인터넷 게이트웨이로 라우팅됨⇒ 라우팅 테이블의 항목들간의 순서는 중요하지 않음

 

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

대상 주소                                       대상

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

10.0.0.0/16                                     Local

2001:db8:1234:1a00::/56               Local

172.31.0.0/16                                 pcx-11223344556677889

0.0.0.0/0                                         igw-12345678901234567

::/0                                                  eigw-aabbccddee1122334

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

 

  • VPC(10.0.0.0/16) 내에서 라우팅되는 IPv4 트래픽은 Local 경로로 처리
  • VPC(2001:db8:1234:1a00::/56) 내에서 라우팅되는 IPv6 트래픽은 Local 경로로 처리
  • 172.31.0.0/16의 경로는 피어링 연결로 트래픽을 전송
  • 모든 IPv4 트래픽(0.0.0.0/0)의 경로는 인터넷 게이트웨이로 트래픽을 전송 ⇒ VPC 내 그리고 피어링 연결을 통한 트래픽을 제외한 모든 IPv4 트래픽은 인터넷 게이트웨이로 라우팅
  • 모든 IPv6 트래픽(::/0)의 경로는 외부 전용 인터넷 게이트웨이로 트래픽을 전송 ⇒ VPC 내 트래픽을 제외한 모든 IPv6 트래픽은 외부 전용 인터넷 게이트웨이로 라우팅

보안 그룹(sg, Security Group)

  • 방화벽과 같은 기능을 제공
  • 인스턴스의 ENI에서 송수신하는 트래픽을 제어
  • 모든 ENI는 최소 한개 이상의 보안 그룹과 연결되어야 하고, 보안 그룹은 여러 ENI와 연결될 수 있음
  • 생성할 때 보안 그룹 이름, 설명, 포함될 VPC를 지정하고, 생성 후에 인바운드, 아웃바운드 규칙을 지정 => 트래픽을 허용
  • 상태 저장 방화벽 역할 => 보안 그룹이 트래픽을 한 방향으로 전달되도록 허용할 때 반대 방향의 응답 트래픽을 지능적으로 허용 (예: 웹 클라이언트에서 HTTPS로 요청을 허용했다면 요청에 대한 응답도 허용)

NACL(Network Access Control List, 네트워크 ACL)

  • 보안 그룹과 유사
    • 원본 또는 대상 주소 CIDR, 프로토콜, 포트를 기반으로 트래픽을 인바운드, 아웃바운드 규칙으로 제어 => 방화벽과 같은 역할
    • VPC에 삭제할 수 없는 기본 NACL이 있음
  • 서브넷에 연결되어 해당 서브넷과 송수신되는 트래픽을 제어
  • 상태 비저장  NACL을 통과한 연결 상태를 추적하지 않음  모든 인바운드와 아웃바운드 트래픽의 허용 규칙을 별도로 작성해야 함
  • 규칙을 적용할 떄 규칙 번호의 오름차순으로 처리

 

#!/bin/sh

이 줄은 스크립트가 sh 셸을 통해 실행되어야 한다는 것을 지정합니다.

yum -y install httpd

 

  • yum: 패키지 관리 도구로, CentOS와 RHEL에서 패키지를 설치할 때 주로 사용합니다.
  • -y: 사용자에게 설치 여부를 묻지 않고 자동으로 "Yes"를 선택해 설치를 진행합니다.
  • install httpd: httpd라는 이름의 Apache HTTP 서버 패키지를 설치합니다

 

chkconfig httpd on

 

  • chkconfig: 서비스의 시작 여부를 설정할 때 사용하는 명령어입니다. (현재는 systemctl로 대체된 경우가 많음)
  • httpd on: 서버가 재부팅되더라도 Apache HTTP 서버가 자동으로 시작되도록 설정합니다.

 

systemctl start httpd

 

  • systemctl: 시스템 서비스를 관리하는 명령어입니다.
  • start httpd: Apache HTTP 서버(httpd)를 즉시 시작합니다.

 

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

Bitvise SSH Client 설치 (SSH Client 프로그램이 없는 경우)

https://bitvise.com/ssh-client-download




EC2 인스턴스로 SSH 접속

키 페어 파일이 있는 곳에서 명령어를 실행

~~~~~~~~~~~~~~~~~~~~~~~~

C:\Users\ * \Downloads> ssh -*my_new_keypair.pem ec2-user@*

                                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~ ~~~~~~~~~~~~

                                 |                              |         |    

                                 |                              |         +-- 접속지 주소소

                                 |                              +-- 사용자 이름 ⇒ Amazon Linux인 경우 ec2-user 기본 

                                 +-- 인스턴스 생성 시 다운로드 받은 키 페어 파일을 명시 

   ,     #_

   ~\_  ####_        Amazon Linux 2023

  ~~  \_#####\

  ~~     \###|

  ~~       \#/ ___   https://aws.amazon.com/linux/amazon-linux-2023

   ~~       V~' '->

    ~~~         /

      ~~._.   _/

         _/ _/

       _/m/'

[ec2-user@ip-*~]$

 ~~~~~~~~ ~~~~~~~~~~~~~~

 |         |

 |         +-- 내부 IP    

 +-- 접속한 사용자 이름



[ec2-user@ip-*~]$ systemctl status httpd ⇐ 웹 서버가 실행되고 있는지 확인

● httpd.service - The Apache HTTP Server

     Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; preset: disabled)

     Active: active (running) since Wed 2024-10-30 07:15:14 UTC; 26min ago

       Docs: man:httpd.service(8)

   Main PID: 3772 (httpd)

     Status: "Total requests: 0; Idle/Busy workers 100/0;Requests/sec: 0; Bytes served/sec:   0 B/sec"

      Tasks: 177 (limit: 1112)

     Memory: 13.0M

        CPU: 914ms

     CGroup: /system.slice/httpd.service

             ├─3772 /usr/sbin/httpd -DFOREGROUND

             ├─3878 /usr/sbin/httpd -DFOREGROUND

             ├─3881 /usr/sbin/httpd -DFOREGROUND

             ├─3882 /usr/sbin/httpd -DFOREGROUND

             └─3883 /usr/sbin/httpd -DFOREGROUND

 

Oct 30 07:15:14 ip-10-0-10-169.ap-northeast-2.compute.internal systemd[1]: Starting httpd.service - The Apache HT>

Oct 30 07:15:14 ip-10-0-10-169.ap-northeast-2.compute.internal systemd[1]: Started httpd.service - The Apache HTT>

Oct 30 07:15:14 ip-10-0-10-169.ap-northeast-2.compute.internal httpd[3772]: Server configured, listening on: port>

lines 1-19/19 (END)



[ec2-user@ip-* ~]$ curl http://localhost ⇐ 웹 서버의 웹 루트 디렉터리의 기본 페이지를 요청

<html><body><h1>It works!</h1></body></html>




내 PC에서 EC2 인스턴스의 80 포트로 요청을 전달

[ec2-user@ip-* ~]$ exit ⇐ SSH 연결을 종료

logout

Connection to * closed.

 

C:\Users\myanj\Downloads>

 

C:\Users\ * \Downloads> curl http:// * ⇐ 연결되지 않음 ⇒ 보안그룹에 인바운드 80 포트를 

curl: (28) Failed to connect to * port 80 after 22085 ms: Could not connect to server 허용하지 않기 때문

 

C:\Users\ * Downloads> curl -v http:// *

*   Trying * :80...

* connect to * port 80 from 0.0.0.0 port 62378 failed: Timed out

* Failed to connect to * port 80 after 21039 ms: Could not connect to server

* closing connection #0

curl: (28) Failed to connect to * port 80 after 21039 ms: Could not connect to server

 

 

내 PC에서 EC2 인스턴스의 80 포트로 요청을 전달

C:\Users\*\Downloads> curl -v http:// *

*   Trying * :80... ⇐ 연결 시도

* Connected to * ( * ) port 80

> GET / HTTP/1.1 ⇐ 요청 전달

> Host: *

> User-Agent: curl/8.9.1

> Accept: */*

>

* Request completely sent off

< HTTP/1.1 403 Forbidden ⇐ 응답 수신

< Date: Wed, 30 Oct 2024 07:52:09 GMT

< Server: Apache/2.4.62 (Amazon Linux)

< Last-Modified: Mon, 11 Jun 2007 18:53:14 GMT

< ETag: "2d-432a5e4a73a80"

< Accept-Ranges: bytes

< Content-Length: 45

< Content-Type: text/html; charset=UTF-8

<

<html><body><h1>It works!</h1></body></html> ⇐ 응답 본문

* Connection #0 to host 43.202.0.212 left intact ⇐ 연결 해제

NACL에 80 포트로 들어오는 트래픽을 거부하는 규칙을 10번으로 추가

 

C:\Users\*\Downloads> curl -v http:// *

*   Trying * :80...

* connect to * port 80 from 0.0.0.0 port 62698 failed: Timed out

* Failed to connect to * port 80 after 21032 ms: Could not connect to server

* closing connection #0

curl: (28) Failed to connect to * port 80 after 21032 ms: Could not connect to server

 

NACL에 80 포트로 들어오는 트래픽을 허가하는 규칙을 20번으로 추가

 

C:\Users\*\Downloads> curl -v http:// *

*   Trying * :80...

* connect to * port 80 from 0.0.0.0 port 62698 failed: Timed out

* Failed to connect to * port 80 after 21032 ms: Could not connect to server

* closing connection #0

curl: (28) Failed to connect to * port 80 after 21032 ms: Could not connect to server

 

NACL에 80 포트로 들어오는 트래픽을 허가하는 규칙을 5번으로 추가

 

C:\Users\*\Downloads> curl -v http:// *

*   Trying * :80...

* Connected to * ( * ) port 80

> GET / HTTP/1.1

> Host: *

> User-Agent: curl/8.9.1

> Accept: */*

>

* Request completely sent off

< HTTP/1.1 403 Forbidden

< Date: Wed, 30 Oct 2024 08:04:14 GMT

< Server: Apache/2.4.62 (Amazon Linux)

< Last-Modified: Mon, 11 Jun 2007 18:53:14 GMT

< ETag: "2d-432a5e4a73a80"

< Accept-Ranges: bytes

< Content-Length: 45

< Content-Type: text/html; charset=UTF-8

<

<html><body><h1>It works!</h1></body></html>

* Connection #0 to host * left intact