|
| 1 | + |
| 2 | +## 들어가기 전에 |
| 3 | + |
| 4 | +띵진 님의 네트워크 강의 시간에 다 공부했을 것 같은데 들어가기 전에 보안 그룹 CIDR이 무엇인지부터 알아보고 가도록 하겠습니다. (제가 네트워크가 오랜만이어서,,,,) |
| 5 | + |
| 6 | +#### CIDR |
| 7 | +네트워크 설계를 하면서 가장 많이 접하게 될 개념이 CIDR인데요 많이 들어보셨을 것 같습니다. |
| 8 | +풀네임은 Classless Inter-Domain Routing 로 클래스 없는 도메인간 라우팅 기법이라는 뜻입니다. |
| 9 | + |
| 10 | +선생님~ IP 주소 클래스 체계 배울 때는 서브넷 마스크랑 서브네팅을 배웠던 것 같은데 대체 뭔 차이인가요? |
| 11 | + |
| 12 | +서브네팅도 IP 클래스에 국한 되지않고 더욱더 IP 주소를 쪼개는 방식을 말하는 것인데 이게 바로 클래스 없는 도메인간 라우팅 기법입니다. |
| 13 | +즉, 서브네팅은 CIDR의 subset이라고 볼 수 있죠 |
| 14 | + |
| 15 | +#### CIDR 표기법 |
| 16 | + |
| 17 | +![[스크린샷 2024-10-08 오후 4.39.06.png]] |
| 18 | + |
| 19 | +192.168.10.70/26 |
| 20 | +서브네팅 배울 때 서브넷 마스크를 짧게 적은 prefix라고 배웠겠지만 이거시 바로 cidr이자 cidr 표기법입니다. |
| 21 | + |
| 22 | +==단 한줄만으로 네트워크 범위를 추측 또는 측정== 할 수 있다. |
| 23 | +![[스크린샷 2024-10-08 오후 4.39.47.png]] |
| 24 | +![[스크린샷 2024-10-08 오후 4.40.09.png]] |
| 25 | + |
| 26 | +결과 => 분리된 4개의 네트워크와 각 62개의 호스트를 가진 네트워크르 사용한다는 것을 의미하고 자신은 2번째 네트워크에 속함을 나타냅니다. |
| 27 | + |
| 28 | +#### AWS CIDR |
| 29 | +그럼 이제 aws의 CIDR를 알아봅시당 |
| 30 | + |
| 31 | +서브넷을 AWS에서는 CIDR 블럭이라고 합니다 |
| 32 | + |
| 33 | +AWS VPC를 학습할 때 중요한 개념이기도한 CIDR은 앞선 내용과 다를게 없습니다. |
| 34 | +VPC를 구성할 때 다음 CIDR값이 있다면 VPC는 16을 서브넷 값으로 하는 IP 주소 범위를 나타내는 것입다. |
| 35 | + |
| 36 | + |
| 37 | +## 관리형 접두사 목록 |
| 38 | + |
| 39 | +> 관리형 접두사 목록은 하나 이상의 CIDR 블록 세트 입니다. 접두사 목록을 사용하면 ==보안 그룹과 라우팅 테이블을 보다 쉽게 구성하고 유지 관리 할 수 있습니다.== |
| 40 | +**즉, 관리형 접두사 목록을 사용해서 보다 쉽게 많은 수의 IP 주소들을 관리할 수 있다는 것이죠.** |
| 41 | + |
| 42 | +![[스크린샷 2024-10-08 오후 4.40.32.png]] |
| 43 | + |
| 44 | +내가 SSH 통신을 허용해야 하는 IP 주소가 4개일 경우 이미지와 같이 4개의 IP 주소를 허용해야 합니다. |
| 45 | + |
| 46 | +허용해야 하는 IP 주소가 많아지게 되면?? -> 관리하기가 힘들어진다.... |
| 47 | + |
| 48 | +vpc -> 관리형 접두사 목록에서 접두사 목록 생성을 눌러줍니다. |
| 49 | + |
| 50 | +![[스크린샷 2024-10-08 오후 4.40.56.png]] |
| 51 | + |
| 52 | + |
| 53 | +여기서 최대 항목의 경우 관리할 IP 주소의 최대 허용 수를 의미하는데, |
| 54 | + |
| 55 | +최소 1개에서 1000개까지 허용한다. |
| 56 | + |
| 57 | +최대 항목은 접두사 목록을 생성하고 나서 수정이 가능합니다다. |
| 58 | + |
| 59 | +![[스크린샷 2024-10-08 오후 4.41.15.png]] |
| 60 | + |
| 61 | +이제 보안 그룹에서 접두사 목록을 추가할 수 있게 되었습니다. |
| 62 | + |
| 63 | +![[스크린샷 2024-10-08 오후 4.41.35.png]] |
| 64 | + |
| 65 | +이렇게 접두사 목록을 추가해서 깔끔하게 보안 그룹을 관리할 수 있다. |
| 66 | + |
| 67 | +(저는 그동안 0.0.0.0/0으로 welcome 마인드로 열어놓았는데 그러면 보안 이슈 때문에 그러면 안 될 것 같습니다. 이번 기회에 바꿔야지...) |
| 68 | + |
| 69 | +임시로 테스트하기 위한 개인 컴퓨터의 IP 주소를 관리형 접두사 목록에 넣어놨다가 테스트가 끝나면 목록에서 해당 IP 주소를 삭제해주면 됩니다. |
| 70 | + |
| 71 | +왜 인스턴스에 대한 인바운드 통신을 허용하는 CIDR 블로 목록을 업데이트해야 하는 경우 보안 그룹 대신 접두사 목록을 업데이트해야 하나요? |
| 72 | +==오버 헤드를 줄일 수 있기 떄문!! == |
| 73 | + |
| 74 | + |
| 75 | +## 교재 실습 설명 |
| 76 | + |
| 77 | +![[스크린샷 2024-10-08 오후 4.41.54.png]] |
| 78 | +**문제 설명** |
| 79 | +위에서 알아봤던 점과 비슷합니다 |
| 80 | +퍼블릭 서브넷의 인스턴스에서 특정 엑세스 요구 사항을 가진 2개의 애플리케이션을 호스팅하고 있다. 대부분 작동 시간 중에는 다른 리전의 가상 데스크톱에서 액세스하지만 테스트 기간에는 집 PC에서 접근해야 한다. |
| 81 | + |
| 82 | +**해결 방법** |
| 83 | +AWS가 제공하는 IP 주소 범위 목록을 사용해 해당 리전의 WorkSpces 게이트웨이의 CIDR 범위 목록을 포함하는 관리형 접두사 목록을 각각 만들어 보안 그룹에 연결한다. 테스트를 위해서는 임시로 집의 IP 주소를 접두사 목록에 추가했다가 테스트 종료 시 IP 주소를 삭제한다. |
| 84 | + |
| 85 | +1. aws IP 주소 범위를 가진 JSON 파일을 다운로드한다. |
| 86 | +``` |
| 87 | +curl -o ip-ranges.json https://ip-ranges.amazonaws.com/ip-ranges.json |
| 88 | +``` |
| 89 | +이 파일에는 AWS 서비스가 사용하는 IP 주소 범위가 있는데요 리전 및 서비스 별로 IP 주소가 있습니다. |
| 90 | + |
| 91 | +2. 특정 리전 및 서비스에 대한 CIDR 범위 선택 |
| 92 | +``` |
| 93 | +jq -r '.prefixes[] | select(.region=="us-west-2") | select(.service=="WORKSPACES_GATEWAYS") | .ip_prefix' ip-ranges.json |
| 94 | +``` |
| 95 | +특정 서비스와 리전에 대한 IP 범위를 필터링하여 필요한 정보만 가져오는 것입니다. |
| 96 | + |
| 97 | +3. 접두사 목록 생성 |
| 98 | +``` |
| 99 | +PREFIX_LIST_ID=$(aws ec2 create-managed-prefix-list \ |
| 100 | +--address-family IPv4 \ |
| 101 | +--max-entries 15 \ |
| 102 | +--prefix-list-name allowed-us-east-1-cidrs \ |
| 103 | +--output text --query "PrefixList.PrefixListId" \ |
| 104 | +--entries Cidr=44.234.54.0/23,Description=workspaces-us-west-2-cidr1 Cidr=5.4.244.46.0/23,Description=workspaces-us-west-2-cidr2) |
| 105 | +``` |
| 106 | +새로운 관리형 접두사 목록을 생성하는 모습이고 최대 항목의 수는 15개로 지정해준 모습이네요 |
| 107 | + |
| 108 | +4. 이제 내 IP 주소를 넣을 차례입니다. |
| 109 | +``` |
| 110 | +MY_IP_4=$(curl myip4.com | tr -d ' ') |
| 111 | +``` |
| 112 | +이 주소는 사용자가 현재 인터넷에 연결된 IP 주소입니다. |
| 113 | + |
| 114 | +``` |
| 115 | +aws ec2 modify-managed-prefix-list \ |
| 116 | +--prefix-list-id $PREFIX_LIST_ID \ |
| 117 | +--current-version 1 \ |
| 118 | +--add-entries Cidr=${MY_IP_4}/32,Description=my-workstation-ip |
| 119 | +``` |
| 120 | +접두사 목록 버전을 업데이트하고 새로운 IP 주소 항목을 추가하는 코드입니다. |
| 121 | + |
| 122 | +5. 만들었으니 이제 보안 그룹 인바운드 규칙을 추가해봅시다. |
| 123 | +``` |
| 124 | +aws ec2 authorize-security-group-ingress \ |
| 125 | +--group-id $INSTANCE_SG_1 --ip-permissions \ |
| 126 | +IpProtocol=tcp,FromPort=80,ToPort=80,PrefixListIds="[{Description=http-from-prefix-list,PrefixListId=$PREFIX_LIST_ID}]" |
| 127 | +``` |
| 128 | +보안 그룹의 인바운드 규칙에 접두사 목록을 추가해서 TCP 포트 80에 대한 접근을 허용해줍니다. |
| 129 | +~~ 보안 그룹의 특정 포트에 대해서 접두사 목록에 포함된 IP주소만 접근을 허용해주는 것이죠 |
| 130 | + |
| 131 | +앞에서 잠깐 보셨듯이 접두사 목록은 버전 관리 메커니즘을 제공합니다. 접두사 목록을 업데이트한 뒤 기존 기능이 중단된 경우 오류의 원인을 파악하는 동안 이전 버전으로 롤백해 이전 기능을 복원할 수 있습니다. |
0 commit comments