커널 방화벽이 네트워크 액세스 계층과 인터넷 계층 사이에 있습니까?

커널 방화벽이 네트워크 액세스 계층과 인터넷 계층 사이에 있습니까?

이 질문은 내 후속 질문입니다.이전 질문.

내 논리는 커널 방화벽이 네트워크 액세스 계층과 인터넷 계층 사이에 있다는 것입니다. 왜냐하면 대상이 호스트인지 결정하기 전에 패킷을 필터링하기 위해 소스 및 대상 IP 주소를 읽으려면 IP 패킷 헤더에 액세스해야 하기 때문입니다. 또는 패킷이 다른 곳으로 향하는 경우 다음 홉으로 전달되어야 합니다.

방화벽이 인터넷 계층의 일부라고 말하는 것도 논리적인 것 같습니다. 인터넷 계층에는 라우팅 테이블이 있고 방화벽은 어떤 면에서는 라우팅 테이블 규칙과 유사하기 때문입니다.

답변1

방화벽이 존재하지 않습니다.장소커널 네트워크 스택에서. 예를 들어 Linux에서는 방화벽 기능을 지원하는 기본 인프라가 다음에서 제공됩니다.웹 필터패킷 필터링 프레임워크. netfilter 프레임워크 자체는커널 프로토콜 스택의 다양한 지점에 대한 후크 세트.

Netfilter는 다섯 가지 후크를 제공합니다.

  • NF_IP_PRE_ROUTING

    NF_IP_PRE_ROUTING초기 온전성 검사를 통과한 패킷은 후크 로 전달됩니다 . 이는 라우팅 결정이 내려지기 전에 발생합니다.

  • NF_IP_LOCAL_IN

    호스트 자체로 향하는 패킷은 NF_IP_LOCAL_IN후크로 전달됩니다.

  • NF_IP_FORWARD

    NF_IP_FORWARD다른 인터페이스로 향하는 패킷은 후크 로 전달됩니다 .

  • NF_IP_LOCAL_OUT

    NF_IP_LOCAL_OUT후크로 인해 라우팅이 변경될 수 있지만 로컬에서 생성된 패킷은 라우팅 결정이 이루어진 후에 전달됩니다 .

  • NF_IP_POST_ROUTING

    후크는 NF_IP_POST_ROUTING패킷이 네트워크에서 전송되기 전에 전달될 수 있는 최종 후크입니다.

방화벽은 netfilter 프레임워크에서 제공하는 각 후크에 대한 콜백 기능을 등록하는 커널 모듈과 방화벽 구성을 위한 사용자 공간 도구로 구성됩니다. 패킷이 후크로 전달될 때마다 해당 콜백 함수가 호출됩니다. 콜백 함수는 콜백을 트리거한 패킷에서 자유롭게 작동할 수 있습니다. 콜백 함수는 또한 패킷을 추가로 처리해야 하는지, 일반적으로 사용자 공간 처리를 위해 콜백 자체에 의해 처리되는지 또는 패킷에 대해 동일한 후크를 호출해야 하는지 여부를 결정합니다.

Netfilter는 일반적으로 다음과 연관됩니다.iptables패킷 필터. ~처럼Gnouc는 이전 질문에서 이미 지적했습니다.iptables에는 netfilter와 인터페이스하는 커널 모듈 과 커널에서 패킷 필터를 구성하는 ip_tables사용자 공간 프로그램이 있습니다. iptables실제로 iptables 패킷 필터는 각각 다양한 유형의 패킷 처리와 관련된 다양한 도구를 제공합니다.

  • 사용자 공간 도구 iptablesip_tables커널 모듈이 관심을 갖는 부분은 다음과 같습니다.IPv4패킷 필터링.

  • 사용자 공간 도구 ip6tablesip6_tables커널 모듈이 관심을 갖는 부분은 다음과 같습니다.IPv6패킷 필터링.

  • 사용자 공간 도구 arptablesarp_tables커널 모듈이 관심을 갖는 부분은 다음과 같습니다.ARP패킷 필터링.

iptables 패킷 필터 외에도ebtables사용자 공간 도구와 eb_tables커널 모듈은 링크 계층을 관리합니다.이더넷프레임 필터링. 이러한 도구를 통칭하여 다음과 같이 부르는 경우도 있습니다.확장 테이블, 유사한 테이블 기반 아키텍처 때문입니다.

아키텍처는 다음을 기반으로 패킷 선택 추상화를 제공합니다.테이블함께 패킷. 각 테이블에는 패킷 필터가 포함되어 있습니다.규칙에서 조직체인. 사전 정의된 5개의 체인인 PREROUTING, INPUT, FORWARD, OUTPUT 및 POSTROUTING은 netfilter가 제공하는 5개의 커널 후크에 해당합니다. 규칙이 속한 테이블에 따라 규칙이 특정 netfilter 후크에 적용되는 상대적 순서가 결정됩니다.

  • raw테이블은 다른 테이블보다 먼저 패킷을 필터링합니다.
  • mangle테이블은 패킷을 변경하는 데 사용됩니다.
  • nat테이블은 다음 용도로 사용됩니다.네트워크 주소 해석(예: 포트 포워딩)
  • filter테이블은 패킷 필터링에 사용되며 패킷을 변경해서는 안 됩니다.
  • security테이블은 SELinux와 같은 LSM(Linux 보안 모듈)에 의해 구현된 MAC(필수 액세스 제어) 네트워크 규칙에 사용됩니다.

Jan Engelhardt의 다음 다이어그램은 테이블과 체인이 OSI 모델의 다양한 계층에 어떻게 대응하는지 보여줍니다.

Linux 네트워크와 xtable을 통한 패킷 흐름 경로의 개략도

올해 초에는 다음과 같은 새로운 패킷 필터링 프레임워크가 출시되었습니다.nftables메인라인 Linux 커널 버전 3.13에 병합되었습니다. nftables 프레임워크는 기존 xtables 도구를 대체하도록 설계되었습니다. 또한 netfilter 인프라를 기반으로 합니다.

Unix 계열 운영 체제의 다른 커널 기반 방화벽에는 다음이 포함됩니다.IP 필터(멀티 플랫폼),PF(OpenBSD, 다양한 다른 BSD 변형 및 Mac OS X로 포팅됨)NPF(넷BSD),IP 방화벽(FreeBSD, 다양한 운영 체제로 포팅됨)

관련 정보