본문 바로가기

개발이야기

[Linux] 리눅스 명령어 - iptables

1-1. iptables 기본 명령어 목록

    * -L : 적용 되어 있는 정책 목록을 출력한다.

    * -A : 새로운 정책을 추가한다.

    * -I  : 위치를 선택하여 정책을 삽입한다.

    * -R : 위치를 선택하여 정책을 교환한다.

    * -D : 위치를 선택하여 정책을 제거한다.

   

    * -N : 새로운 체인을 만든다.(INPUT, OUTPUT, FORWARD 외에)

    * -P : 체인에 미리 정의되어 있는 정책을 수정한다.

    * -F : 체인으로 부터 규칙들을 지운다.

    * -Z : 체인의 모든 규칙들의 패킷과 바이트 카운트를 0으로 만든다.

    * -X : 비어있는 체인을 제거한다.

 

1-2. iptables 기본 명령어 사용 예제

    * iptables -L : 적용 시킨 정책 목록 출력

    * iptables -D INPUT 1 : INPUT 체인 첫번째 줄에 있는 정책을 삭제한다.

 

 

2. iptables 제어 옵션 명령어

 

 2-1. iptables 제어 옵션 명령어 목록

    * -s : 패킷의 송신지를 제어한다.

    * -d : 패킷의 수신지를 제어한다.

    * -j  : 방화벽을 지난 후 패킷의 상태를 제어한다.

    * -p : 프로토콜을 제어한다.

    * --sport : 송신지 포트를 제어한다.

    * --dport : 수신지 포트를 제어한다.

 

 2-2. iptables 제어 옵션 명령어 사용 예제

    * iptables -A INPUT -s 192.168.0.5 -j DROP : 192.168.0.5로 부터 오는 패킷을 모두 차단한다.

    * iptables -A INPUT -d ! 192.168.0.10 -j ACCEPT : 192.168.0.10를 향해 가는 패킷이 아니라면 허용한다.

    * iptables -A INPUT -p TCP -j ACCEPT : TCP 프로토콜 패킷을 모두 허용한다.

    * iptables -A INPUT -p TCP --dport 80 -j DROP : 80번 포트를 향해가는 TCP 패킷을 차단한다.

 

3. 패킷 상세 내역에 따른 제어 옵션 명령어

 

3-1. iptables 패킷의 상세 내역에 따른 제어 옵션 목록

    * --tcp-flags : TCP 플래그에 따라 패킷을 제어한다.(첫 번째 인자를 검사하고 두 번째 인자는 설정이 되어야 함)

    * -m state --state : 패킷의 상태와 목적에 따라 제어한다.

       

        ※ -m state 명령어 상태 리스트 ( -m state --state [상태] )

          - NEW : 새로 접속을 시도하는 패킷

          - ESTABLISHED : 접속을 한 상태에 있는 패킷

          - INVALID : 유효하지 않은 패킷 (보통 DROP된다.)

          - RELATED : 접속에 연관성을 가지는 패킷 ( e.g. FTP 접속 패킷, ICMP 에러 메세지)

      

 3-2. iptables 패킷의 상세 내역 제어옵션 예제

    * iptables -A INPUT -p TCP --tcp-flags SYN,RST,ACK SYN -j DROP : SYN패킷의 set 1이면 DROP시킨다.

    * iptables -A INPUT -p TCP -m state --state NEW -j DROP : 접속을 시도하는 SYN, ACK 플래그 패킷을 차단한다.