ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 리눅스 iptables 설정
    리눅스 2014. 6. 2. 20:44

    체인 (chain)


    - 패킷이 이동하는 경로를 나타냄

    - 각각의 table은 각각의 다른 chain을 가지고 있음

    ex) filter 테이블은 INPUT, FORWARD, OUTPUT chain이 있음

    - rule은 각각의 chain에 설정하는 일련의 방화벽 정책을 뜻함

    - 패킷은 어떠한 경로, 즉 어떤 chain을 통해 이동하는가?, 방화벽 자체로 향하는 패킷, 방화벽을 통과하여

      방화벽 내부에 위치한 다른 서버를 향하는 패킷



    iptable 정의


    - 강력한 패킷필터링 툴 중 하나로 설정할 때 사용되는 패킷이다.



    * 패킷 : 헤더와 데이터를 묶어논 것을 패킷이라고 한다. 헤더에는 출발지 ip, 도착지 ip, checksum, 프로토콜

               옵셋 등을 가지며 데이터에는 전송 데이터 정보가 들어간다.



    명령어(commond)


    - A : 새로운 규칙을 추가한다


    - D : 규칙을 삭제한다.


    - C : 패킷을 테스트한다.


    - R : 새로운 규칙을 삽입한다.


    - I : 새로운 규칙을 삽입한다.


    - L : 규칙을 출력한다


    - F : chain으로부터 규칙을 모두 삭제한다.


    - Z : 모든 chain의 패킷과 바이트 카운터 값을 0으로 만든다.

      

    - N : 새로운 chain을 만든다


    - X : chain을 삭제한다


    - P : 기본정책을 변경한다.


    - E : 체인의 이름을 변경한다.


    iptables 체인 종류


    - INPUT : 로컬로 들어오는 패킷(입력 패킷)


    - FOWARD : INPUT와 OUTPUT 역할, 라우터에 바와벽을 적용할 때 쓰임

    - OUTPUT : 외부로 나가는 패킷 (출력 패킷)


    INPUT 체인에 사용자 정의로 체인을 추가하여 INPUT 체인 대신에 사용할 수 이슨데, 페도라 코어의 경우는

    RH-Firewall-1-INPUT라는 사용자 정의 체인을 사용한다. 3개의 기본 체인은 수정이나 삭제가 불가능하다.


    옵션(option)

    -s : 출발지 IP 주소나 네트워크와 매칭


    -p : 특정 프로토콜과 매칭


    -d : 목적지 IP 주소나 네트워크와 매칭


    -i : 입력 인터페이스와 매칭


    -j : 어떻게 처리할것인가


    -y : syn허용 안함


    -f : 두번째 이후조각에 대해서 규칙명시


    -o : 출력 인터페이스와 매칭


    --state : 연결 상태와 매칭


    --string : 특정한 패턴과 매칭


    --comment : 커널 메모리 내의 규칙과 연계되는 최대 256바이트의 주석



    ① DNS 포트 허용

     iptables -A INPUT -p udp -m udp --sport 53 -j ACCEPT

     iptalbes -A OUTPUT -p udp -m udp --dport 53 -j ACCEPT


    ② SSH 포트 허용 (192.168.0.1 -> 172.16.1.20)

     iptables -A INPUT -s 172.16.1.20 -p tcp -m tcp --sport 22 -j ACCEPT

     iptables -A OUTPUT -d 172.16.1.20 -p tcp -m tcp --dport 22 -j ACCEPT



    ③ HTTP 포트 허용


     iptables -A INPUT -i eh0 -p tcp -m tcp --sport 80 --dport 1024:65535 -j ACCEPT

     iptables -D INPUT -o eh0 -p tcp -m tcp --sport 1024:65535 -dport 80 -j ACCEPT


    ④ FTP 포트 허용

    + 명령(제어) 포트()


    예제 : 

    - 중국발 해킹을 통하여 웹서버를 공격하고 있다는 사실을 알았다.

      찾아낸 IP는 10.10.1.1 ~ 10.10.1.255, 10.10.2.3, 10.10.3.5 와 같으며 접근 통제 정책을 통하여

      위의 IP에 대하여 WEB 접속을 거부하라, 단, 10.10.1.33 IP는 web 접속을 허락하여야 한다.


    - A INPUT -s 10.10.1.33 -p tcp --dport 80 -j ACCEPT

    - A INPUT -s 10.10.1.1/10.10.1.255 -p tcp --dport 80 -j DROP

    - A INPUT -s 10.10.2.3 -p tcp --dport 80 -j DROP

    - A INPUT -s 10.10.3.5 -p tcp --dport 80 -j DROP

      


    - PING 명령어는 서버 내부에서는 사용가능해야 하며, 192.168.1.13, 192.168.1.11 IP를 제외하고는 

      모두 거부하라.


    - A INPUT -s 192.168.1.13 -p icmp --icmp-type echo-request -j ACCEPT

    - A INPUT -s 192.168.1.11 -p icmp --icmp-type echo-request -j ACCEPT

    - A INPUT -p imcp --icmp-type echo-request -j DROP


    - 110포트와 143포트는 locallhost와 192.168.1.13, 192.168.1.11 애서는 허용하고

      외부에서는 차단하라.


    - A INPUT -s 192.168.1.13 -p tcp --dport 110 -j ACCEPT

    - A INPUT -s 192.168.1.11 -p tcp --dport 110 -j ACCEPT

    - A INPUT -p tcp -m tcp --dport 110 -j DROP


    - A INPUT -s 192.168.1.13 -p tcp --dport 143 -j ACCEPT

    - A INPUT -s 192.168.1.11 -p tcp --dport 143 -j ACCEPT

    - A INPUT -p tcp -m tcp --dport 143 -j DROP








Designed by Tistory.