'firewall'에 해당하는 글 2건

AWS WAF setting

Server/AWS 2024. 11. 25. 02:53

웹 공격, 특히 DDoS 대응으로 방화벽을 설치하라고 한다. (난 안전불감증으로, WAF 설치의 필요성은 못느끼고 있다.)

AWS 에서는 WAF 라는 웹 어플리케이션 방화벽 서비스를 제공한다. 고급 사양으로는 DDoS 방어에 특화된 AWS Shield, 여러 계정/리소스 관리를 간소화 하는 AWS Firewall Manager 가 있지만 생략한다. (여유자금 있으면 쓰면됨)

십수 년 전 suhosin 사용했을 때도 그렇지만, 설정을 빡세게 할수록 방화벽의 기능을 십분 활용할 수 있지만, 그렇게까지 할 필요가 있나 싶다. 공격을 완벽하게 막기란 쉽지 않고, 까딱 잘못하면 정상적인 요청마저 거부할 수도 있고, 슬프지만 내가 개발한 서비스가 누군가의 타겟이 될 정도로 인기 있지도 않기 때문이다. 참고로 20년 동안 방화벽에 대한 필요성을 느낀 적이 단 한번도 없었다. 그래도 방화벽을 달아야 하는 상황이라 아주 기본적인 설정만 해보려고 한다.

WAF 는 기본적으로, AWS 리소스 일부를 보호할 수 있으며, HTTP(S) 요청에 대한 IP / 국가 / 헤더 / 요청횟수 등으로 접근 허용이나 거부를 할 수 있다. (SQL Injection / XSS 생략) 프론트 단의 CloudFront 와 백엔드의 API 서버 중 alb 에만 방화벽을 설치해 보았다. 가장 기본적인 규칙들만 몇 개 적용하고 Bot Control / Capcha 등은 사용하지 않았다.

 

 

1. 서버 접근 패턴 파악

 

우선은 방어 전략을 짜기 전에, 해당 서버에 로그를 수집하여 패턴을 파악해 봐야 한다. 물론 처음부터 빡세게 제한하는 것도 좋지만, 이미 운영중일 경우는 기존 서비스에 장애가 발생하지 않도록 면밀히 분석해야 한다.

 

다행스럽게도 서버 대부분은 해외IP 로부터 SQL Injection / XSS 접근이 전부여서 Source IP 가 해외인 접근만 차단하는 것으로 완벽 차단이 가능했다. 사실 그것보다는 DDoS 공격에 대비하는 것이 목표라, 해외IP 차단 + 국내IP 에서 초당 100개 요청시 IP 차단 하는 Rule 로 처리하기로 했다.  

 

 

 

 

2. Rule 세팅 및 리소스 적용

 

  • Rule : 제어 규칙 생성
  • Rule Group : 재사용 가능한 사용자 정의 Rule Group 을 생성할 수 있고, AWS Marketplace 에서 유/무료 관리형 규칙 그룹을 선택할 수도 있다. (규칙 수, 복잡도에 따라 요금 증가)
  • Web ACL(제어목록) : 특정 규칙집합을 만들고 AWS 리소스를 연결하여 요청 제어 수행
    ㄴ 기본동작 (Allow / Block) 설정
    ㄴ 규칙 우선순위는 화면 위에서 아래, 낮은 숫자에서 높은 숫자 순

 

 

 

 

3. 모니터링 및 알람 설정

모니터링으로 요청에 대한 규칙 및 필터링 확인을 마쳤다면, CloudWatch 에서 특정 메트릭(예: 차단된 요청 수 - BlockedRequests)이 기준치를 초과할 때 SNS 알림을 트리거하도록 설정하여 운영하도록 한다. (알람 세팅 생략...)

 

 

 

4. 요금

(예, 관리형 규칙X, 사용자 규칙 19)

  • 웹 ACL 요금 = 5.00 USD * 1 = 5.00 USD
  • 규칙 요금 = 1.00 USD * 19(규칙) = 19.00 USD
  • 요청 요금 = 1백만 건당 0.60 USD * 1천만 건 = 6.00 USD
  • 결합된 총 요금 = 월별 30.00 USD

WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

,

VPC

Server/AWS 2015. 2. 6. 23:49

VPC(Virtual Private Cloud) 란 가상의 네트워크 망을 생성하는 것으로써, EC2 의 네트워크 계층이다. 특정 서비스를 생성하기 전에 그 서비스를 위치시킬 공간(네트워크 망) 을 사용자 정의로 만드는 작업이다. VPC는 실제 데이터센터 처럼 매우 유사한 가상 네트워크 환경을 제공한다. private IP 네트워크를 효율적으로 구성하기 위해 사용되며, 서브넷의 추가/제거, 게이트웨이의 연결, 라우팅 테이블 변경, 네트워크 ACL 수정 등을 하며 VPC를 구성할 수 있다. 



VPC 구성 방법


IP 대역을 설정하여 VPC 를 생성하고, 생성된 VPC 범위에 Subnets 을 추가하고 Routing Tables 를 설정하면 네트워크 망 구성을 마칠 수 있다. 간단하게 VPC 마법사로 VPC는 물론 서브넷, 게이트웨이 및 라우팅 테이블을 한 번에 만들 수 있다. public 이나 private, VPN 이나 혼합 VPC 등을 구성할 수도 있으며, 상세 설정을 위한 커스텀 설정도 가능하다.


VPC IP 대역(IPv4 CIDR 블록) 으로 설정 가능한 범위는 다음과 같다.

  • 10.0.0.0 - 10.255.255.255 (10.0.0.0/8)
  • 172.16.0.0 - 172.31.255.255 (172.16.0.0/12)
  • 192.168.0.0 - 192.168.255.255 (192.168.0.0/16)

허용된 블록 크기는 최소 /28 netmask(IP 주소 16개) 에서 최대 /16 netmask(IP 주소 65,536개) 이다.


VPC 의 가용영역(a/b/c) 에 하나 이상의 Subnets 추가할 수 있으며, Subnet CIDR 블록에서는 첫 4개의 IP 주소와 마지막 IP 주소는 AWS 에서 예약된 IP 이므로 사용할 수 없다. 예로 Subnet CIDR 블록이 10.0.0.0/24 라면 10.0.0.0, 10.0.0.1, 10.0.0.2, 10.0.0.3, 10.0.0.255 IP 주소는 사용자가 임의적으로 사용할 수 없다. 또한 VPC 간에 혹은 Subnets 간에 IP 대역이 중복될 수 없다.


Subnets 에는 외부로 나가는 아웃바운드 트래픽에 대해 routing table 이 연결되어야 한다. 인터넷 게이트웨어(igw) 로 라우팅 되는 경우 public(공개) subnet, 그렇지 않으면 private(비공개) subnet 이라고 한다.


VPC 사용에 대한 추가 비용은 없다 (VPN, NAT Gateway 등은 유료). 각종 인스턴스를 생성하기 전에 관리 콘솔에서 Networking의 VPC를 선택하면 VPC 대시보드를 볼 수 있다.

 

 

 

 

좌측에는 이미 생성된 VPC 리소스들, 우측에는 인스턴스가 서비스될 지역(Region)과 상태가 나타난다.


아래는 AWS 에서 외부(Internet) 로 트래픽이 이동하는 과정이다.

 

AWS > Region > VPC > Subnet > Route Table > Internet Gateway > Internet

 

 

Region
AWS 의 데이터센터는 미주, 유럽, 아시아 등 세계 각각의 지역에 구축 되어 있다. 이 중에 인스턴스의 서비스 목적을 고려해서 최적의 지역(가까운?)을 선정한다. 인스턴스 생성 후에 다른 지역으로 이전하게 되면 추가적인 비용이 소요될 수 있으므로 신중히 결정한다. 또한 지역별로 서비스 가격도 차이가 있고, 제공하지 않는 서비스도 있으니 잘 살펴보아야 한다.

 

VPC
자동으로 구성된 VPC이며 사설 IP로 172.31.0.0/16 CIDR 블록을 가지므로 총 65,536개의 private IP 를 할당할 수 있다. Default Subnet은 항상 '/20'의 netmask 가 지정되므로 서브넷 하나당 4,096개의 IP 주소를 할당할 수 있다. Default Subnet은 기본적으로 인터넷 접속이 자유로운 public subnet으로 지정되어 있다. 별다른 구성없이 EC2 인스턴스 등을 생성하면 기본적으로 default VPC 내에 인스턴스가 배치된다.

 

Subnet
VPC에 할당된 사설IP를 여러 개의 네트워크 대역으로 분리하기 위해 사용된다. 이곳의 가용 영역(Availability Zone)에 인스턴스를 원하는 대로 분산 배치할 수 있다. 각 Default Subnet 별 가용 IP는 172.31.0.0/16 을 subnet mask /20 으로 쪼개어 4091개 이다. B class IP 에 /20 의 CIDR subnet 을 적용하면 4096개 이지만 AWS 내부 예약 IP 를 빼서 4091개가 된다.

 

Internet Gateway
VPC의 외부 인터넷 통신을 담당하며 하나의 VPC에는 하나의 인터넷 게이트웨이만 연결할 수 있다.

 

Route Table
모든 subnet 간에 내부 통신을 위해 존재하는 target 으로 'local' 이 설정되며 수정할 수 없다. Default route table 의 내부 통신은 사설 IP 대역(172.31.0.0/16) 의 local 로, 외부 통신은 공용 IP 대역(0.0.0.0/0) 의 인터넷 게이트웨이(igw) 로 이루어 진다.

 

 

DHCP Option
기본적으로 아마존이 제공하는 DHCP 서버 대신에 사용자 서버를 참조해서 인스턴스들이 가동되게 할 수 없다. 하지만 AWS 에서 DNS/NTP/NetBIOS 서버를 구축해 놓았다면 이 곳에서 변경이 가능하다. 다만 AWS 인스턴스들은 public IP 를 기본적으로 가질 수 없기 때문에, public IP를 갖는 서버는 지정할 수 없다.

 

Network ACL
Security Group 과 비슷하지만, 서브넷 자체, 즉 네트워크 단에 대한 방화벽 역할을 하며 서브넷 당 한 개만 설정이 가능하다. 허용/차단 규칙 적용. 기본적으로 Inbound / Outbound 연결이 모두 허용된 상태이다.

 

Security Group
인스턴스 단위로 방화벽이 적용, 한 인스턴스에 여러 개의 설정 가능. 허용 규칙만 적용이 가능하며, 수정된 규칙 적용시 기존 세션에는 영향이 없다.

 


WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

,