본문 바로가기

4-2. 2024-1 심화 스터디/클라우드 보안 취약점

AWS 클라우드 서비스 인프라 구축 이해와 해킹,보안-2

* 본 게시물은 인프런 강의 "AWS 클라우드 서비스 인프라 구축 이해와 해킹,보안" 의 강의 화면을 참고, 활용하여 작성하였습니다*

 

 

1.  아마존 AWS 클라우드 프리티어 요금 살펴보기

APP

OpenVPN Access Server ⇒ 접근 통제

Splunk Enterprise ⇒ 통합 로그 / ELK

Firewall ⇒ 네트워크에서 진행되는 것(그룹)

WAF ⇒ 웹 방화벽

 

 

 

AWS 에 가입한다.

 

 

2. 아마존 AWS IAM 사용자 추가 및 그룹 관리

 

 

루트사용자 클릭 ⇒ 본인 이메일 주소 입력

 

 

즐겨찾기를 할 수 있다.

 

 

IAM 검색 및 클릭한다.

멀티펙터로 인증을 강화시키는 역할을 한다.(관리자 탈취되지 않게 하기 위해)

 

 

 

 

해당 url 주소는 안내 페이지이다, / 사용자 지정 통해 바꿀 수 있다.

계정에 대해서는 최소권한 엑세스만 부여해야한다.

 

 

 

IAM 핵심 3가지

-사용자: 사용자가 IAM에서 생성 및 액세스 AWS 리소스에 필요한 권한을 부여 할 수 있음

-그룹: 사용자를 그룹에 추가 할 수 있음. 이제 개별 사용자 대신 그룹에 권한을 부여 할 수 있음

-정책: 정책은 사용자 또는 그룹에 대한 권한을 정의하는 JSON 문서임

-역할: 역할은 일반적으로 사용자에게 AWS 서비스에 액세스 할 수 있는 임시 권한을 부여하는 데 사용,

예를 들어 S3 권한이 있는 역할을 EC2 서비스에 연결함

 

 

 

사용자 추가

 

 

그룹 추가 후 read only 권한을 부여해준다.

 

 

 

사용자들을 아까 만든 그룹에 넣어준다. 

엑세스 키는 노출되지 않도록 주의한다. 

 

 

- 아이디/패스워드만을 사용하는 것은 보안 위험이 존재한다.

-엑세스키 노출 -> access key, secret key가 노출되면 아이디/패스워드가 노출된 것과 동일하다. 

-사용하지 않는 사용자같은 경우에는 반드시 삭제하는 습관을 만드는 것이 좋다.

-엑세스키가 없는 것이 안전하다. 

 

 

3. 아마존 AWS 사용자 MFA 설정과 키 관리 보안

 

 

 

- 관리자 콘솔이 노출되면 위험하기 때문에 되도록 사용하지 않고, IAM을 통해 사용자를 추가하여 사용 + 각각 MFA 설정해야 보안상 안전하다.

- 아이디와 패스워드로만 접속하는 것은 보안상 위험하다.

- 액세스 키 노출 -> Access Key, Secret Key가 모두 노출 시 위험하다.  (id/pw 노출된 것과 같음)

 

 

4. AWS 클라우드 EC 서버 생성 및 인스턴스 연결

 

<인스턴스 설정 총정리>

- 인스턴스 유형 : 크기, 기본적으로 1GB 사용

- 키 페어 유형 : RSA

- 프라이빗 키 파일 형식 : .pem 사용(SSH 이용하기 때문에)

- 퍼블릭 IP : 활성화되면 외부에서도 접속 가능

- 트래픽 허용하고 싶다면 인터넷에서 HTTP 트래픽 허용 활성화

- 스토리지 : 기본적으로 8GB 사용

 

<실습화면>

 

EC2 인스턴스를 생성하고 관리하기

 

 

검색->EC2입력->인스턴스 생성

 

키 페어 생성

 

 

생성한 인스턴스에 대한 세부내용 확인 가능

 

 

오른쪽 키를 눌러서 종료나 중지 등도 할 수 있다.

 

 

 

5. AWS 클라우드 생성한 인스턴스에 SSH 연결 방법

 

 

인스턴스 ID 통해 브라우져로 바로 접속 가능

‘예: ‘ 부분으로 리눅스 접속 가능

 

1. 리눅스로 접속.

 

 

2. window powershell 로 접속하기

 

 

두가지의 접속 방법이 있지만 실습은 리눅스로 실행하였다.

 

 

- 학습 후에는 인스턴스 종료 또는 인스턴스 중지를 눌러야 한다. (중지 시 비용이 감소되지만 완전히 없어지지는 않기 때문에 사용을 안 할 때에는 종료)

 

6. 아마존 AWS 도커컴포즈로 워드프레스 설치

 

리눅스에 접속해서 아까 받은 파일을 복사해준다. 

 

 

 

해당 명령어 복사해서 입력해준다. (권한을 바꾼다.)

 

 

 

복사해서 연결 

 

 

<이후 설치 명령어>

docker 설치 전 업데이트 진행 $ sudo apt-get update 

docker 설치 $ sudo apt-install docker.io

docker compose 설치 $ sudo apt install docker-compose

 

위의 명령어 입력 후

 

리눅스-> 터미널->vim docker-compose.yml 을 열어 아래 yaml 코드를 작성해준다.

services:
  db:
    # We use a mariadb image which supports both amd64 & arm64 architecture
    image: mariadb:10.6.4-focal
    # If you really want to use MySQL, uncomment the following line
    #image: mysql:8.0.27
    command: '--default-authentication-plugin=mysql_native_password'
    volumes:
      - db_data:/var/lib/mysql
    restart: always
    environment:
      - MYSQL_ROOT_PASSWORD=somewordpress
      - MYSQL_DATABASE=wordpress
      - MYSQL_USER=wordpress
      - MYSQL_PASSWORD=wordpress
    expose:
      - 3306
      - 33060
  wordpress:
    image: wordpress:latest
    volumes:
      - wp_data:/var/www/html
    ports:
      - 80:80
    restart: always
    environment:
      - WORDPRESS_DB_HOST=db
      - WORDPRESS_DB_USER=wordpress
      - WORDPRESS_DB_PASSWORD=wordpress
      - WORDPRESS_DB_NAME=wordpress
volumes:
  db_data:
  wp_data:

입력 후 엔터, 컨트롤 C하면 복사가 완료된다. 

 

 

docker 실행 $ sudo sevice docker start  $ sudo docker-compose up -d

(db, wordpress 설치 완료)

 

 

$ sudo docker ps (wordpress와 mysql이 동작하고 있는 것 확인 가능)

 

 

ip addr  로 ip 확인가능

 

 

 

AWS 에서 EC2 들어가서 왼쪽에 네트워크 및 보안 세부항목에 ‘보안그룹’ 클릭

 

 

보안그룹 생성 클릭. 해당 사진 처럼 설정

 

 

밑에 인바운드 규칙에서 규칙 추가 클릭

 

다음으로 EC2 검색해서 인스턴스 부분에 ‘인스턴스’ 클릭

 

 

오른쪽 클릭후 보안 클릭. 보안그룹 변경 클릭.

docker부분 남겨두고 다 제거하기.

 

 

 

8000 포트 번호로 접속하면 워드 프레스 환경 구축된 것 확인 가능

 

 

 

 

7. 보안을 위한 골드 환경과 이미지 생성

 

골드 환경(골드 이미지)란?

  •  보안 설정을 사전에 적용하여 배포할 수 있게 만든 환경 또는 이미지
  • 이미지를 만들 때 스크립트로 적용하는 방식도 있음
  • ‘주요 정보 통신 기반 시설 취약점’ 기준으로 서버 진단을 한 후에 적용해도 됨

 

<이미지 생성 방법>

- 생성했던 인스턴스를 대상으로 보안 점검 완료 후에 인스턴스 정지

- 인스턴스 선택 후에 [이미지 및 템플릿] > [이미지 생성]