Introduction to Security Groups
- AWS 클라우드의 네트워크 보안을 수행하는데 기본으로 트래픽이 EC2 인스턴스로 들어오고 나가는 방식을 제어
- Security groups only contain allow rules
보안 그룹은 오직 허용 규칙 (룰) 만을 포함하며, 룰은 IP주소를 참조하거나 다른 보안 그룹을 서로 참조함 - 공공 인터넷을 사용하고 있는 컴퓨터를 이용해 EC2 인스턴스로 접근을 원할 때
우리는 EC2 인스턴스를 중심으로 보안 그룹을 생성하게 되어 방화벽을 갖게 되고 보안 그룹은 규칙을 갖게 됨
이 규칙은 일부 인바운드 트래픽이 바깥에서 EC2 인스턴스로 수행하거나, EC2 인스턴스가 일부 아웃바운드 트래픽으로 수행
Security Groups Deeper Dive
- 보안 그룹은 EC2 인스턴스의 방화벽 firewall 이며 접근을 규제
1) Access to Ports
2) 인증된 IP 범위 - IPv4 and IPv6
3) 인바운드 네트워크 조절 (from other to the instance 외부에서 인스턴스로 오는 네트워크)
4) 아웃바운드 네트워크 조절 (from the instance to other 인스턴스에서 외부로 가는 네트워크)허용하는 Protocol, Port Range, Source (0.0.0.0/0은 모든 IP를 의미, 122.149.196.85/32는 하나의 IP를 의미)
Security Groups Diagram
- 방화벽이 작동하는 기본 방식
- EC2 인스턴스는 하나의 보안 그룹이 첨부되도록 허락 (Security Group1의 인바운드 룰, 아웃바운드 룰)
- 우리의 컴퓨터는 포트 22에서 인증될 것 (authorised port 22)
- 인바운드룰로 인해 트래픽은 우리의 컴퓨터에서 EC2 인스턴스로 통과
내 IP 주소가 아닌 다른 사람의 컴퓨터에서는 EC2 인스턴스를 접근하려면 방화벽이 막아 시간 초과로 통과를 하지 못함 - 아웃바운드룰은 기본값으로 설정되어 모든 보안 그룹에 대한 EC2 인스턴스는 모든 트래픽을 허용하므로
웹 사이트에 접근하여 연결을 시작할 경우 보안 그룹에서 허용
Security Groups Good to know
- 다양한 인스턴스에 첨부될 수 있음
보안 그룹와 인스턴스 사이에는 1:1 관계가 없으며, 하나의 인스턴스에 여러 개의 보안 그룹이 있을 수 있음 - 보안 그룹은 region/VPC 조합으로 잠겨있어, 지역을 바꾸려면 새로운 보안 그룹을 생성하거나 다른 VPC를 생성해야 함
- 보안 그룹은 EC2 밖에 있으므로 트래픽이 차단되면 EC2 인스턴스는 트래픽을 보지 못함
- SSH 접근은 가장 복잡한 작업이므로 올바르게 수행되고 있는지 확인이 필요하므로
SSH 접근 만을 위해 하나의 별도 보안 그룹을 유지하는 것이 좋음 - 앱에 접근 불가능하다면 시간 초과가 된 것이고, 이는 보안 그룹 문제 때문
- 만약 연결 거절 에러 메시지를 받는다면 보안 그룹이 작동하여 응답을 받았으나 연결이 거부된 것으로
트래픽은 통과했으나 애플리케이션은 에러가 났거나 런칭되지 않은 것 - All inbound traffic is blocked by default, All outbound traffic is authorised by default
기본적으로 모든 인바운드 트래픽은 막혀있고, 모든 아웃바운드 트래픽은 인증되어 있음
Referencing other security groups Diagram
- 보안 그룹이 다른 보안 그룹을 참조하는 방법
- 첫 번째 EC2 인스턴스와 Security Group 1이 있을 때,
Security Group 1의 Inbound 룰은 다른 EC2 인스턴스를 런칭하기 위해 보안 그룹 2개가 첨부되어야 하므로
기본적으로 Security Group 1과 2를 승인 (authorising) 하고 있음 - Security Group 2 룰을 사용해 셋업하면 EC2 인스턴스가 첫 번째 EC2 인스턴스로 결정한 포트를 통해 바로 연결되도록 허용됨
- 비슷하게 Security Group 1이 첨부된 다른 EC2 인스턴스가 있고 이를 첫 번째 EC2 인스턴스와 직접 통신하도록 승인하면
EC2 인스턴스의 IP에 관계없이 올바른 보안 그룹이 연결되어 있기 때문에 다른 인스턴스와 직접 통신 가능 - Security Group 3이 첨부된 다른 EC2 인스턴스의 경우 Security Group 1의 Inbound 룰에서 인증되지 못했기 때문에
거부되고 작동하지 않음
Classic Ports to know
- 22 = SSH (Secure Shell) : 리눅스에서 EC2 인스턴스에 로그인할 수 있게 허락
- 21 = FTP (File Transfer Protocol) : 파일 공유에 파일을 업로드하는데 사용
- 22 = SFTP (Secure File Transfer Protocol) : SSH를 사용해 파일 업로드
- 80 = HTTP : 안전하지 않은 웹사이트 접근
- 443 = HTTPS : 보안 웹사이트 접근
- 3389 = RDP (Remote Desktop Protocol) : 윈도우 인스턴스에 로그인하는데 사용
<보안 그룹 실습>
- EC2 - 네트워크 및 보안 - 보안 그룹
보안 그룹은 네트워킹을 통해 EC2 인스턴스에 대한 접근을 통제하는 방법My First Instance 런칭 시 만들었던 보안 그룹 IAM 사용자 / 인바운드 규칙 : 80, 22 아웃바운드 규칙 : 모두 허용 - 인바운드룰에서 HTTP과 관계된 룰을 삭제한 후 퍼블릭 IP 주소로 접근하면,
로딩이 되지만 응답하지는 않음 (EC2 인스턴스로 접근하지만 응답하지 않음)
트래픽이 금지되고 웹브라우저가 시간 제한 ERR_TIMED OUT을 알려줌 (보안 그룹 문제 발생)
즉, 인스턴스에 연결하지 못한다면 끝없는 로딩 사이클이 있다가 타임아웃 에러 - 이럴 경우 보안 그룹 규칙을 다시 보아서 바르게 설정되어 있는지 확인이 필요
다시 HTTP 규칙을 추가하면 방화벽은 트래픽이 들어오는 것을 허용하여 정상 작동 - 인바운드 규칙 편집을 통해 우리가 가질 수 있는 모든 종류의 인바운드 규칙을 볼 수 있으며
사용자 정의를 통해 트래픽이 어디에서 오는지와 관련하여 원하는 포트를 입력할 수 있거나 보안 그룹을 참조할 수도 있음SSH, FTP, 8C, HTTP, RDP 등
'Cloud > AWS' 카테고리의 다른 글
[SAA] EC2 인스턴스 (0) | 2022.01.21 |
---|---|
[SAA] SSH 및 인스턴스 역할 (0) | 2022.01.20 |
[SAA] EC2 인스턴스 유형 기본 사항 (0) | 2022.01.19 |
[SAA] EC2 사용자 데이터로 EC2 인스턴스 생성 (0) | 2022.01.19 |
[SAA] EC2 기초 (0) | 2022.01.19 |