본문 바로가기

Rookies 9기/클라우드 보안 컨설팅 실무

클라우드 보안 컨설팅 실무 1일차

728x90

• 오늘의 주요 내용

‣ 네트워크 기본 지식

‣ IP를 네트워크에 할당

‣ 네트워크 간 연결

‣ VPC와 Subnet의 개념 정리

‣ AWS의 네트워크 구조 정리

‣ 보안 그룹 및 NACL

 

 

• IPv4 주소를 배분 및 연결

‣ IP주소는 네트워크와 호스트로 구분됨 (네트워크 부분은 Lastname, 호스트 부분은 Firstname)

‣ 어디까지가 네트워크일까? Subnet Mask에서 1에 해당하는 IP주소 부분이 네트워크 부분

 

• IP 주소의 범위 

‣ 192.168.100.0/24

⇒ 네트워크 주소가 24bit이므로, 호스트 부분은 8bit

⇒ IP주소는 전체가 8bit가 네자리으므로 32bit임

⇒ 호스트 부분이 8bit = 2의 8승 = 256개 ----> (0~255)

⇒ 0 : Network 주소에 할당, 255는 Brodcast 주소, 실제로 호스트에 할당 가능한 주소는 1~254 임

⇒ 1~254 중에, Gateway, AWS에서 모니터링하는 주소 등을 제외하고 약 250개 정도 실제로 EC2에 할당이 가능함

 

참고) 8bit를 다른 말로 1byte라고 함 또 다른 말로 Octet이라고 함

 

 

•NAT

‣ 공유기를 통해서 나갈 때 

⇒ IP 헤더의 출발지 IP에 쓰여있는 사설 IP를(다른 장부에 기록해 놓고) 지운 다음 공인 IP(퍼블릭 IP)로 바꿔서 써넣음

⇒ 인터넷으로 나가서 목적지를 찾아감, 목적지에서는 회신을 줄 때, 출발지는 자신의 IP, 목적지는 바꿔 넣은 공인 IP를 사용해서 패킷 생성

‣ 공유기를 통해서 들어올 때

⇒ IP 헤더의 목적지 IP에 쓰여있는 공인 IP를 (장부를 참고해서) 사설 IP로 바꿔 줌

⇒ 내부망에서는 사설 IP만 사용하기 때문에  목적지에 있는 사설 IP를 보고 해당 호스트를 찾아주게 됨

 

• Internat Gateway는 퍼블릭 IP를 내부에서 1:1로 매칭을 시켜줌(외부 <---> 내부) 양방향으로 접근 가능

NAT Gateway는 내부망에 있는 호스트가 외부로 나가는 것만 가능(외 <--- 내) 리턴 트래픽은 허용됨, 외부에서 들어오는 것은 연결 안 됨

 

• NAT의 기술

‣ 고정 NAT(Static NAT)

⇒ 퍼블릭 IP 1개와 사설 IP 1개를 1:1로 매핑하는 기술 --> 주소를 바꾸지 않음, 항상 같은 퍼블릭 IP와 같은 사설IP를 연결

   ex) IP가 바뀌면 책임을 묻기 어려움 ⇒ Elastic IP (탄력적 IP)

 

‣ 유동 NAT(Dynamic NAT)

⇒ 퍼블릭IP 1개와 사설 IP 1개를 1:1로 매핑하지만, 일시적으로 사용을 중지하거나 리부팅하면 IP를 바꾸게 됨 (퍼블릭 IP가 모자라기 때문에, 사용하는 컴퓨터에만 할당함)

 ex) EC2를 사용 중지했다가 나중에 다시 켜면 퍼블릭 IP가 바뀜 ⇒ 인터넷 게이트웨이

 

‣ Port NAT(= NAT Overload) 

⇒ 퍼블릭 IP 1개에 여러 개의 사설 IP를 연결(Overload, 과적)하는 기술, 퍼블릭 IP에 각각 다른 포트를 사용해서 여러 사설 IP와 1:1로 매핑(Port NAT)

⇒ Port를 활용한 NAT

⇒ NAT 게이트웨이

 

• Private Subnet과 Public Subnet 

‣ Subnet을 만들면 일단 Private Subnet으로 만들어짐

‣ 설정에서 자동으로 퍼블릭 IP주소를 할당 

‣ Private & Public 둘 다 사설 IP로 구성되어 있음 ---> VPC 내에서는 사설IP로 통신

‣ Public Subnet에 EC2 또는 ECS를 생성하면 퍼블릭 IP를 부여해서 IGW로 들어올 때 공인 IP를 사설 IP로 바꿔줌(NAT)

 

• 가용 영역(AZ )

‣ 가상의 데이터센터, 실제 3~5개 정도의 데이터센터의 일부를 빌려서

 

• 리전(Region)

‣ 가용 영역을 3개 이상을 모아서 해당 지역에서 클라우드 서비스를 제공하는 단위

 

• 보안 그룹(Security Group)

‣ 순서는 의미가 없음, 허용만 설정

‣ 거부를 따로 설정하지 않음, 모두 거부 상태에서 허용만 설정함

‣ 리턴 트래픽이 허용됨 (요청에 대한 응답이 들어오게 됨)

‣ 인스턴스에 대해 설정 ---> 윈도 방화벽, UFW(우분투 방화벽) 등과 비슷함(호스트 방화벽)

‣ 소스(출발지 IP주소)를 허용 또는 거부

⇒ Anywhere : 모든 곳에서 접근 가능

⇒ 내 IP : 내가 있는 곳에서만 접근 가능, 외부에서 접속해야 하는 경우, 수정해놓고 접근해야 함

‣ 포트는 용도에 따라서 설정 

⇒ 웹 서버는 어디서든 접속 허용

⇒ 22번(SSH), 3389(RDP)는 접속 IP를 제한해야 함

어디서든 접속 가능하게 하면 어떤 공격을 당할 수 있을까??
Brute Force Attack : 모든 가능한 경우의 수를 대입하는 것  ex) 숫자 4자리 : 0000-9999, 대문자 4자리 : AAAA~ZZZZ //시간 오래 걸림
Dictionary Attack : 자주 사용하는 패스워드 목록을 파일로 저장해서 순차적으로 대입해보는 방법  ex) password.txt //시간 절약

 

 

• 방화벽

‣ Rule Set (=Access List)

출IP, 출Port, 목IP, 목Port, 허용/거부, 시간, 방향 등
Admin           FW                  허용
Any               FW                  거부
Any               Game/Stock    거부
Internal         Any                  허용       
Any               Any                 거부   ---> 맨 마지막 줄에 모두 거부가 포함됨  

 

 

• Network Access Control List (NACL, 네트워크 기반의 접근 통제 목록)

‣ 허용과 거부를 모두 설정

‣ 위에서부터 내려가면서 적용 (윗줄이 우선), 번호가 작을수록 우선 적용됨

‣ 맨 아랫줄에는 모두 거부가 있음

‣ 최소한 하나의 허용이 있어야 함

‣ 규칙대로만 적용하므로 리턴 트래픽은 허용되지 않음

‣ 자주 참조되면 윗줄에 배치 (효율성)

‣ Subnet에 적용(Network ACL 이므로)

 

실습 준비 

VPC 생성
Subnet 생성
라우팅 테이블 설정(게이트웨이 추가)
라우팅 테이블 설정(서브넷 연결)
게이트웨이 생성
EC2 생성
EC2 생성(보안 그룹 설정)
EC2 생성(보안 그룹 규칙 설정)
EC2 생성(고급 세부 정보 설정)
EC2 확인
EC2 SSH로 연결

1) EC2 인스턴스 연결

2) SSH로 연결 ---> 윈도 사용자 외에 상속을 해제, 읽기만 허용

다운로드 받은 aws_key.pem 파일을 복사해서 D: 드라이브에 key라는 폴더를 만들고 붙여넣기
aws_key.pem에 오른쪽 마우스 클릭, 속성에 들어가서,  보안 > 고급 > 상속 사용 안함 클릭 > 모두 제거 선택
추가 > 보안 주체 선택 > 윈도우 사용자 확인(시작버튼, user라고 하면) 후, 이름(user)을 입력하고 '이름 확인' 클릭 > 읽기만 체크 > 확인

3) PPK로 변환 ---> Putty로 접속하는 방법

sudo apt install apache2 -y
sudo apt install vim -y
sudo vi index.html
index.html 파일 작성
EC2 퍼블릭 IP로 웹 브라우저 접속

 

‣ WordPress 설치

sudo rm -rf html
sudo wget https://ko.wordpress.org/latest-ko_KR.tar.gz
sudo tar -xvf latest-ko_KR.tar.gz
sudo chown -Rf www-data:www-data html

디렉터리의 소유자와 그룹 소유권을 변경

sudo  apt  install  php   php-mysql   php-common   php-gd   php-json  php-xml  php-curl  php-fpm   php-mbstring  설치하기

sudo apt install mysql-serve
sudo service apache2 restart
sudo mysql -u root -p

데이터 베이스 설정

웹브라우저에서 http://EC2의IP 로 접속
웹브라우저에서 http://EC2의IP 로 접속