• 오늘의 주요 내용
‣ 네트워크 기본 지식
‣ 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 이므로)
실습 준비
1) EC2 인스턴스 연결
2) SSH로 연결 ---> 윈도 사용자 외에 상속을 해제, 읽기만 허용
다운로드 받은 aws_key.pem 파일을 복사해서 D: 드라이브에 key라는 폴더를 만들고 붙여넣기 aws_key.pem에 오른쪽 마우스 클릭, 속성에 들어가서, 보안 > 고급 > 상속 사용 안함 클릭 > 모두 제거 선택 추가 > 보안 주체 선택 > 윈도우 사용자 확인(시작버튼, user라고 하면) 후, 이름(user)을 입력하고 '이름 확인' 클릭 > 읽기만 체크 > 확인 |
3) PPK로 변환 ---> Putty로 접속하는 방법
‣ WordPress 설치
디렉터리의 소유자와 그룹 소유권을 변경
sudo apt install php php-mysql php-common php-gd php-json php-xml php-curl php-fpm php-mbstring 설치하기 |
데이터 베이스 설정
'Rookies 9기 > 클라우드 보안 컨설팅 실무' 카테고리의 다른 글
클라우드 보안 컨설팅 실무 3일차 (0) | 2022.11.09 |
---|---|
클라우드 보안 컨설팅 실무 2일차 (0) | 2022.11.08 |