IPTABLES의 대해 알아보기


     

     

     

    CentOS에는 패킷을 필터링 기능을 가지고 있는 netfiler가 존재합니다 IPTABLES는 netfilter를 관리하기 위한 툴입니다.





     

     NETFILTER란?


    iptables의 대한 설명에 앞서 netfilter의 대한 설명부터 하겠습니다.


    만은 분들이 iptables이 패킷 필터링하는 기능이라고 일고 있으시분들이 종종 있습니다 하지만 iptables는 패킷을 필터링하는 것이 아닙니다 패킷 필터링은 커널에 탑제된 netfilter 기능으로 하며 iptables는 단지 netfilter는 정책의 룰셋을 구축하는 툴이라고 생각하시면 됩니다.



      



     

     IPTABLES란?



    Netfilter 프로젝트에서 개발되었으며 2.4.x 커널 배포 시점 부터 리눅스 일부분으로 제공하고 있습니다


    Netfilter에서 제공하는 프레임 워크를 이용한 패킷에 대한 연산(필터링 등)을 수행하게 설계된 함수를 네트워크 스택으로 후킹하는데 사용하는 명령어 입니다.


    iptables 정책은 정렬된 규칙집합으로 생성됩니다 규칙은 특정 분류의 패킷에 대해 취해야 조치를 커널에 알려주며 하나의 iptables의 규칙은 테이블 내에 있는 하나의 체인에 적용되게 됩니다.


    iptables 정책은 정렬된 규칙집합으로 생성되며, 규칙은 특정 분류의 패킷에 대해 취해야 할 조치를 커널에게 알려주며 하나의 iptables 규칙은 테이블 내에 있는 하나의 체인이 적용됩니다.




     

     IPTABLES의 기능


     

    상태추적 기능 :


    1.방화벽을 지나가는 모든 패킷에 대한 상태를 추적하여 메모리에 기억 기능


    2.기존의 연결을 가정하여 접근할 경우 메모리에 저장된 목록과 비교하여 차단시키는 지능화된 공격 차단 기능


    3.특정 패킷을 차단 또는 허용하는 기능, 서버의 접근제어, 방화벽기능 구현 기능




    향상된 매칭 기능 :


    1.방화벽의 기본적인 매칭 정보인 패킷의 IP주소와 포트 번호 뿐만아니라 다양한 매칭 기능


    2.현재의 연결 상태, 포트 목록, 하드웨어 MAC 주소, 패킷 발신자의 유저나 그룹 프로세스, IP 헤더의 TOS등 여러가지 조건을 이용한 세부적인 필터링 기능




    포트 포워딩 기능 내장 :


    1. NAT(Network Address Translation - 사설IP와 공인IP를 변환해주거나 포트 변환 ) 기능을 자체적으로 포함하고 있어 사용 가능


    2.브리지 등의 다양한 네트워크 구조를 지원하여 원하는 방식대로 네트워크 구성이 가능

     

     


     

     

     

     

     IPTABLES의 동작 원리

     

      


    위 그림은 IPTALBES의 동작과정을 보다 쉽게 이해하기 위한 그림 입니다.

    위 과정은 처음 PREROUTING(입력패킷) 기능을 통해 POSTROUNTING(출력 패킷)으로 진행되며, 이과정중 INPUT, OUTPUT, FORWARD의 대한 필터링을 거치게 되며, 이러한 패킷의 대한 필터링으로 IPTABLES을 차단/허용 부분은 하게됩니다.



    PREROUNTING : 외부 네트워크에서 방화벽으로 들어올때 필터링하며 사설(내부)망으로 들어가기전 입니다


    INPUT : 인터페이스를 통해 로컬 프로세스로 들어오는 패킷의 처리(패킷을 받아 프로세스가 내시스템에서 동작하는 경우) INPUT에서 패킷 처리(차단/허용) 후 사용자에게 프로세스로 전달


    OUTPUT : 패킷이 보내지기 전에 로컬에서 생성된 네트워크 패킷 변경 방화벽 내에서 실행 됩니다


    FORWARD : 다른 호스트로 통과시켜 보낼 패킷에 대한 처리(차단/허용) 방화벽이나 IPS 등과 같이 지나가는 패킷을 처리


    POSTROUTING : 방화벽에서 외부로 나갈때 필터링하며 방화벽에서 외부로 나가기 전입니다



      

     

     

     IPTABLES의 Table과 Chain의 관계

     

     

     

    IPTABLES는 필터링을 적용하는 테이블로서 규칙에 따라 패킷을 차단하거나 허용하는 역할을 합니다 또한 filer table은 INPUT, OUTPUT, FORWORD 3개의 다음과 같이 chain이 존재합니다. 

     

     

    NAT Table - 필터링기능은 없지만 NAT(주소 변환)용으로 사용하며 외부에서 내부로 오는 패킷 포워딩과 내부에서 외부로 나갈때 다른 IP주소로 나가게 하는게 가능합니다.


    MAGLE Table - TTL이나 TOS(type of service)같은 특수규칙을 적용하기 위해 사용된다 즉 패킷안에 데이터를 변환 또는 조작은 위한 테이블 입니다.



    raw table - 필터 테이블 Conection Tracking(연격추적) 기능을 좀더 자세히 다를때 사용된다 특정 네트워크는 연결 추적에서 제외하는등의 추적에서 제외하는 등의 추가 설정이 가능하며 conntrack 모듈보다 우선순위를 가집니다.

     

     

     


    iptables에는 테이블 안에 체인들이 IP 패킷을 정해진 규칙에 수행하게 되며 들어오는 패킷(INPUT), 허용(ACCEPT), 거부(REJECT), 버림(DROP)을 결정하게 됩니다.

     

     

    지금까지는 IPTABLES의 기본개념인 동작과정의 대해서 알아보았습니다 다음포스팅에서는 직접 IPTABLES을 사용해보도록하겠습니다.


    Posted by 서버이야기