SSH를 차단하지 않고 EC2에서 나가는 트래픽을 차단하는 방법

SSH를 차단하지 않고 EC2에서 나가는 트래픽을 차단하는 방법

퍼블릭 서브넷이 있는 EC2가 있고 트래픽이 인터넷 게이트웨이를 통해 흐르고 있습니다.

이제 EC2에서 나가는 모든 트래픽을 차단해야 한다는 요구 사항이 생겼습니다.

네트워크 ACL의 트래픽을 제한하려고 했습니다.

SSH 포트는 22, 규칙 번호는 100으로 허용했습니다.

그런 다음 거부 옵션과 규칙 번호 200을 사용하여 모든 트래픽을 차단했습니다.

VPC에 연결된 네트워크 ACL의 아웃바운드 규칙을 위와 같이 변경했습니다.

하지만 이것을 EC2에 적용한 후에는 ssh도 할 수 없습니다. 로그인이 되지 않습니다.

어떻게 해야 하나요? 나가는 모든 트래픽을 차단하고 싶지만 SSH가 발생해야 합니다.

답변1

AWS의 네트워크 ACL은 상태 저장이 아니므로 내부 및 외부 트래픽을 모두 관리해야 합니다. 22 이외의 모든 트래픽을 차단하면 SSH 클라이언트가 포트 22 아웃바운드를 사용하지 않는 한(가능성은 낮음) 모든 아웃바운드 연결이 차단됩니다.

에서https://docs.aws.amazon.com/vpc/latest/userguide/vpc-network-acls.html#nacl-basics:

NACL은 상태 비저장입니다. 즉, 이전에 보내거나 받은 트래픽에 대한 정보는 저장되지 않습니다. 예를 들어, 서브넷에 대한 특정 인바운드 트래픽을 허용하는 NACL 규칙을 생성하는 경우 해당 트래픽에 대한 응답은 자동으로 허용되지 않습니다. 이는 보안 그룹의 작동 방식과 대조됩니다. 보안 그룹은 상태 저장되어 있습니다. 즉, 이전에 보내거나 받은 트래픽에 대한 정보가 저장됩니다. 예를 들어 보안 그룹이 EC2 인스턴스에 대한 인바운드 트래픽을 허용하는 경우 아웃바운드 보안 그룹 규칙에 관계없이 응답이 자동으로 허용됩니다.

대신 상태 저장형이므로 인바운드 연결의 아웃바운드 응답 구간을 허용하는 보안 그룹을 살펴봐야 합니다. 이를 사용하여 22개의 인바운드와 모든 아웃바운드(EC2에서 시작된 경우)를 제외한 모든 것을 차단할 수 있습니다.

또한: 이 EC2에 SSH만 필요하고 다른 인바운드 트래픽은 필요하지 않은 경우 다음을 수행해야 합니다.정말Session Manager(Systems Manager의 일부)를 살펴보세요. 이는 EC2의 에이전트를 사용하여 인터넷에 트래픽을 노출하지 않고 NAT를 통한 AWS 서비스만 셸 액세스를 제공합니다. 따라서 인바운드 포트가 필요하지 않습니다!https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager.html

관련 정보