반응형

Linux Netfilter, iptables

  • Linux안에 있는 Netfilter Framework를 분석하고 Netfilter를 이용하는 iptables tool을 분석한다.

1. Netfilter

  • Netfilter는 Linux를 위한 Network Packet Filtering Framework이다. Linux Application은 Netfilter를 통해서 Linux Kernel로 전달되는 Packet을 변환 및 조작할 수 있다.

1.1 Hooks

    1. NF_IP_PRE_ROUTING: 외부에서 온 Packet이 Linux Kernel의 Network Stack을 통과하기 전에 발생하는 Hook이다. Packet을 Routing하기 전에 발생
    1. NF_IP_LOCAL_IN: Packet이 Routing된 후 목적지가 자신일 경우, Packet을 Process에 전달하기 전에 발생
    1. NF_IP_FORWARD: Packet이 Routing된 후 목적지가 자신이 아닐 경우, Packet을 다른 곳으로 Forwarding하는 경우 발생
    1. NF_IP_LOCAL_OUT: Packet이 Process에서 나와 Network Stack을 통과하기 전 발생
    1. NF_IP_POST_ROUTING: Packet이 Network Stack을 통과한 후 밖으로 보내기 전 발생

1.2 시나리오

    1. 목적지가 자신일 경우: NF_IP_PRE_ROUTING -> NF_IP_LOCAL_IN -> Process
    1. 목적지가 자신이 아닌경우: NF_IP_PRE_ROUTING -> NF_IP_FORWARD -> NF_IP_POST_ROUTING -> Network Interface
    1. Process에서 전송하는 Packet: NF_IP_LOCAL_OUT -> NF_IP_POST_ROUTING -> Network Interface

2. iptables

  • iptables는 Netfilter Framework를 이용하는 대표 Tool이다.
  • iptables를 이용하여 Packet을 제어하거나 조작할 수 잇다.

2.1 tables

  • fileter Table: packet을 drop할지 전달할지 결정
  • NAT table: Packet NAT(Network Address Translation)을 위한 table. packet의 source/destination address를 변경
  • Mangle Table: Packet의 IP header를 바꿈. Packet의 TTL 변경, Marking하여 다른 iptables의 Table이나 Network tool에서 Packet을 구분 할 수 있도록 함
  • Raw Table: Netfilter Framework는 Hook 뿐만 아니라 Connection Tracking 기능을 제공한다. 이전에 도착한 Packet들을 바탕으로 방금 도착한 Packet의 Connection을 추적한다. Raw Table은 특정 Packet이 Connection Tracking에서 제외되도록 설정한다.
  • Security Table: SELinux에서 Packet을 어떻게 처리할지 결정하기 위한 Tableimg
반응형

+ Recent posts