웹사이트 검색

Iptables 방화벽 작동 방식


소개

방화벽 설정은 최신 운영 체제를 보호하기 위한 필수 단계입니다. 대부분의 Linux 배포판에는 방화벽을 구성하는 데 사용할 수 있는 몇 가지 다른 방화벽 도구가 함께 제공됩니다. 이 가이드에서는 iptables 방화벽을 다룰 것입니다.

Iptables는 기본적으로 대부분의 Linux 배포판에 포함된 표준 방화벽입니다. Linux 네트워크 스택을 조작할 수 있는 커널 수준 netfilter 후크에 대한 명령줄 인터페이스입니다. 네트워킹 인터페이스를 통과하는 각 패킷을 일련의 규칙에 대해 일치시켜 수행할 작업을 결정하는 방식으로 작동합니다.

이 가이드에서는 Iptables의 작동 방식을 검토합니다. 보다 심층적인 접근 방식은 A Deep Dive into Iptables and Netfilter Architecture를 참조하세요.

Iptables 작동 방식

먼저 몇 가지 용어를 검토하고 iptables의 작동 방식에 대해 논의해 봅시다.

iptables 방화벽은 네트워크 트래픽을 일련의 규칙과 비교하여 작동합니다. 규칙은 네트워크 패킷이 일치해야 하는 특성과 패킷 일치를 위해 취해야 하는 조치를 정의합니다.

특정 규칙과 일치하는 패킷을 설정하는 많은 옵션이 있습니다. 패킷 프로토콜 유형, 소스 또는 대상 주소 또는 포트, 사용 중인 인터페이스, 이전 패킷과의 관계 등을 일치시킬 수 있습니다.

정의된 패턴이 일치하면 수행되는 작업을 대상이라고 합니다. 대상은 ACCEPT 또는 DROP과 같은 패킷에 대한 최종 정책 결정일 수 있습니다. 또한 처리를 위해 패킷을 다른 체인으로 이동하거나 만남을 기록할 수 있습니다. 많은 옵션이 있습니다.

이러한 규칙은 체인이라는 그룹으로 구성됩니다. 체인은 패킷을 순차적으로 확인하는 규칙 집합입니다. 패킷이 규칙 중 하나와 일치하면 연결된 작업을 실행하고 체인의 나머지 규칙을 건너뜁니다.

사용자는 필요에 따라 체인을 만들 수 있습니다. 기본적으로 세 개의 체인이 정의되어 있습니다. 그들은:

  • INPUT: 이 체인은 서버 주소가 지정된 모든 패킷을 처리합니다.
  • OUTPUT: 이 체인에는 서버에서 생성한 트래픽에 대한 규칙이 포함됩니다.
  • FORWARD: 이 체인은 서버에서 생성되지 않은 다른 서버로 향하는 트래픽을 처리하는 데 사용됩니다. 이 체인은 요청을 다른 시스템으로 라우팅하도록 서버를 구성하는 방법입니다.

각 체인에는 0개 이상의 규칙이 포함될 수 있으며 기본 정책이 있습니다. 정책은 패킷이 체인의 모든 규칙을 통과하고 어떤 규칙과도 일치하지 않을 때 발생하는 상황을 결정합니다. 일치하는 규칙이 없으면 패킷을 삭제하거나 수락할 수 있습니다.

iptables는 또한 연결을 추적할 수 있습니다. 즉, 이전 패킷과의 관계를 기반으로 패킷에 발생하는 상황을 정의하는 규칙을 만들 수 있습니다. 기능은 \상태 추적, \연결 추적 또는 \상태 머신 구성입니다.

IPv4 대 IPv6

Linux 커널에 포함된 netfilter 방화벽은 IPv4 및 IPv6 트래픽을 완전히 분리하여 유지합니다. 방화벽 규칙 집합을 포함하는 테이블을 조작하는 데 사용되는 Iptables 도구도 고유합니다. 서버에서 IPv6를 활성화한 경우 서버의 트래픽을 처리하도록 두 테이블을 모두 구성해야 합니다.

참고: Iptables의 후속 제품인 Nftables는 IPv4 및 IPv6 처리를 보다 긴밀하게 통합합니다. iptables-translate 명령을 사용하여 Iptables 규칙을 Nftables로 마이그레이션할 수 있습니다.

일반 iptables 명령은 IPv4 트래픽을 제어하는 규칙이 포함된 테이블을 조작하는 데 사용됩니다. IPv6 트래픽의 경우 ip6tables라는 동반 명령이 사용됩니다. iptables로 설정한 모든 규칙은 IPv4 주소 지정을 사용하는 패킷에만 영향을 주지만 이러한 명령 간의 구문은 동일합니다. iptables 명령은 IPv4 트래픽에 적용되는 규칙을 만들고 ip6tables 명령은 IPv6 트래픽에 적용되는 규칙을 만듭니다. 서버의 IPv6 주소를 사용하여 ip6tables 규칙을 만드는 것을 잊지 마십시오.

명심해야 할 사항

이제 iptables가 인터페이스를 통해 들어오는 패킷을 어떻게 지시하는지 알았습니다. 패킷을 적절한 체인으로 보내고, 하나가 일치할 때까지 각 규칙에 대해 확인하고, 일치하는 항목이 없으면 체인의 기본 정책을 발행합니다. 규칙을 만들 수 있습니다. .

먼저 기본 삭제 정책을 구현하는 경우 현재 연결을 활성 상태로 유지하는 규칙이 있는지 확인해야 합니다. 이는 SSH를 통해 서버에 연결된 경우 특히 중요합니다. 실수로 현재 연결을 끊는 규칙이나 정책을 구현한 경우 브라우저 기반 복구 콘솔을 사용하여 서버에 로그인해야 할 수 있습니다.

명심해야 할 또 다른 사항은 각 체인의 규칙 순서가 중요하다는 것입니다. 패킷은 보다 구체적인 규칙과 일치하도록 의도된 경우 일치하는 보다 일반적인 규칙을 만나지 않아야 합니다.

이 때문에 체인의 맨 위에 있는 규칙은 맨 아래에 있는 규칙보다 더 높은 수준의 특이성을 가져야 합니다. 특정 사례를 먼저 일치시킨 다음 더 광범위한 패턴을 일치시키기 위해 더 일반적인 규칙을 제공해야 합니다. 패킷이 전체 체인을 통과하는 경우(규칙과 일치하지 않는 경우) 가장 일반적인 규칙, 즉 기본 정책을 따릅니다.

이러한 이유로 체인의 기본 정책은 체인에 포함될 규칙 유형을 강력하게 지시합니다. 기본 정책이 ACCEPT인 체인에는 명시적으로 패킷을 삭제하는 규칙이 포함됩니다. 기본값이 DROP인 체인에는 특별히 허용되어야 하는 패킷에 대한 예외가 포함됩니다.

결론

이제 자체 방화벽을 구현할 준비가 되었습니다. 이를 위해서는 DigitalOcean의 Cloud Firewalls를 읽어야 합니다.