Amazon EC2 인스턴스로 IP 주소 범위를 어떻게 차단할 수 있습니까?


27

특정 범위의 IP 주소로 인해 서버에 문제가 발생한다는 것을 알고 있습니다. 172.64.*.*Amazon EC2 인스턴스에 대한 액세스를 차단하는 가장 좋은 방법은 무엇입니까? 보안 그룹을 사용하여이를 수행하는 방법이 있습니까, 아니면 서버 자체의 방화벽을 사용하여 수행하는 것이 더 낫습니까?


1
인스턴스가 VPC 내에있는 경우 특정 범위를 거부하도록 네트워크 ACL을 편집 할 수 있습니다.

답변:


17

가능한 경우 서버와 방화벽 모두에서 트래픽을 차단하십시오.

보안 그룹은 호스트 외부에 있으므로 데이터가 사용자에게 도달하지 않기 때문에 좋습니다. 그러나 대부분의 서버 기반 방화벽만큼 구성 할 수는 없습니다.

불행히도 EC2 보안 그룹은 기본 거부 정책을 통해서만 서비스를 "허용"할 수 있습니다. 따라서 소규모 IP 범위에 대해 공개적으로 "허용 된"서비스에 대한 액세스를 차단하려는 경우 "인터넷 나머지 부분"에 대한 허용 규칙을 작성하는 것은 IP 범위를 차단하는 것보다 조금 더 복잡합니다. 멋진 큰 청크를 지정 했으므로 172.64.0.0/16을 포함하지 않는 네트워크 범위 목록이 너무 길지 않습니다.

0.0.0.0/1
128.0.0.0/3
160.0.0.0/5
168.0.0.0/6
172.0.0.0/10
173.0.0.0/8
174.0.0.0/7
176.0.0.0/4
192.0.0.0/3
224.0.0.0/3

포트에이 목록을 추가해야합니다. 그런 다음 해당 포트에 대한 '모두 허용'규칙을 삭제할 수 있습니다. 연속적이지 않은 포트를 여러 개 가지고 있다면, 목록은 여러 번 가야합니다. 보안 그룹이 여러 개인 경우 관리하기 어려운 그룹으로 빠르게 성장할 수 있습니다.

로컬 방화벽도 작동합니다. iptables기본 Amazon AMI 및 모든 Linux 배포판에서 사용할 수 있습니다.

sudo iptables -I INPUT -s 172.64.0.0/16 -j DROP

규칙을 추가 한 후에는 규칙을 저장하고 iptables부팅시 서비스가 시작 되는지 확인해야합니다 .

# For Amazon Linux
sudo service iptables save

# Other distributions might use one of these:
#sudo iptables-save > /etc/sysconfig/iptables-config
#sudo iptables-save > /etc/iptables/rules.4

저장할 구성 파일은 배포판에 따라 다릅니다.

VPC 사용

인스턴스에 VPC 를 사용하는 경우 서브넷에서 작동하는 "네트워크 ACLS"를 지정할 수 있습니다. 네트워크 ACL을 사용하면 허용 및 거부 규칙을 모두 작성할 수 있으므로이 방법으로 수행하는 것이 좋습니다.


이 더 이상 작동하지 않습니다
김정일 우에게

@KimJongWoo 작동하지 않는 것은 무엇입니까? iptables작동 하지 않는 것을 볼 수 없으므로 보안 그룹에서 큰 서브넷 허용을 참조하고 있습니까?
Matt

12

트래픽을 중지하는 가장 간단한 방법은 해당 인스턴스의 VPC 네트워크 ACL에 트래픽을 추가하고 해당 IP 주소의 모든 트래픽을 거부하는 것입니다 (VPC가 사용되고 있다고 가정).

기억해야 할 것은 거부 규칙 번호가 첫 번째 허용 규칙 번호보다 작아야한다는 것입니다.


4
거부 규칙 번호가 첫 번째 허용 규칙 번호 보다 작아야 합니까?
Dan Tenenbaum

네 맞습니다.
pg2286

1
ACL 규칙은 20 개로 제한됩니다. 그리고 이것은 짜증납니다. 아마존.
Alex

3

두 번 문제가 발생하여 EC2 상황이 약간 다르다는 것을 깨달았습니다. iptables서버가 ELB (Elastic Load Balancer) 뒤에있는 클러스터에있는 경우 작동하지 않습니다- 인스턴스 가 알고 있는 IP 주소 는 ELB.

ELB를 최신 구성으로 구성한 경우 다음 SO 답변을 참조하십시오. https : //.com/questions/20123308/how-to-configure-aws-elb-to-block-certain-ip-addresses-known -스팸 머

우리의 경우에는 설정이 잘되지 않았으므로 Apache를 사용해야했는데 X-FORWARDED-FOR헤더를 찾고 IP 주소를 차단할 수있었습니다.

이것을 아파치 구성에 추가하십시오 (아마도 VirtualHost 블록에 있음).

RewriteEngine On
RewriteCond %{HTTP:X-FORWARDED-FOR] ^46\.242\.69\.216
RewriteRule .* - [F]

ELB에서 설정 한 헤더를 확인합니다.

설정을 저장하고 apache2ctl -tdebian / ubuntu (또는 apachectl -tRHEL)로 테스트 한 다음 아파치를 다시 시작하십시오.

이것은 단지 403 Forbidden응답을 다시 보냅니다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.