320x100
320x100

chapter 11. iptables (방화벽)

 

iptables

: 방화벽이나 NAT에 사용되는 패킷 필터링 도구

: TCP Wrapper ipfw ipfwadm ipchains iptables

: 4계층의 테이블에 사슬을 확장한 형태

 

 

 

iptables의 사슬

INPUT

: 패킷 필터링 및 방화벽 관련 정책 설정. 실제적인 접근통제

: 커널 내부에서 라우팅을 마친 후 로컬 소켓이 목적지인 패킷에 적용

 

FORWARD

: 리눅스 시스템을 통과하는 패킷 관리

: iptables 방화벽을 이용하여 두 네트워크 간 패킷이 통과되는 경우에 적용

: NAT 기반에 사용할 경우 사설 IP를 사용하는 시스템의 접근 제어 정책을 설정할 때 사용

 

OUTPUT

: 다른 시스템으로의 접근을 차단

: 리눅스 시스템 자체가 생성하는 패킷을 제어

 

PREROUTING / POSTROUTING : 커널 내부에서 IP 라우팅 계산을 수행하기 전 후 의 패킷 헤더 수정

 

INPUT_ESTABLISHEDDMZ_NETWORK와 같은 공통태그 관련 규칙집합을 만들기 위한

사용자 정의 사슬 생성 가능

 

 

 

iptables의 테이블

filter (INPUT / FORWARD / OUTPUT)

: iptables의 기본 테이블. 패킷 필터링 담당 (ipchains이전 프로그램들의 기능)

 

nat (INPUT / OUTPUT / PREROUTING / POSTROUTING)

: IP주소 변환 (FORWARD사슬의 역할을 확장)

 

mangle (INPUT / FORWARD / OUTPUT / PREROUTING / POSTROUTING)

: 패킷 데이터를 변경하는 특수 규칙 적용

: 성능향상을 위한 TOS (Type Of Service)를 설정

 

raw (OUTPUT / PREROUTING)

: 커널에서 필터링을 수행하는 넷 필터의 연결추적 하위 시스템과 독립적으로 동작 해야하는 규칙 설정

 

 

 

iptables의 응용

ㆍ패킷 필터링 및 방화벽 구성 : Filter3개 사슬을 이용해 설정

ㆍ다수의 서버 관리 : Filter NAT 테이블을 연동하여 사용

 

 

 

iptables 명령어

ㆍ타겟 : 패킷이 규칙과 일치할 때 취하는 동작

ㆍ매치 : 규칙 타겟에 의해 명시되는 동작에 따라 패킷을 처리하기 위해서 만족해야 하는 조건

 

 

 

iptables [-t table] action chain match [-j target]

table : 기본 값은 Filter. 다른 테이블 지정시 t 옵션 사용

action : 사슬의 지정, 설정, 제어

chain : 사슬 명시

match : 실질적인 규칙

target : 규칙이 일치할때의 동작

 

 

 

iptables action

-N : 새로운 사용자 정의 사슬 생성 (--new-chain)

-X : 비어있는 사슬 제거. 기본 사슬은 제거 불가 (--delete-chain)

-P : 사슬의 기본 정책 변경 (--policy)

-L : 현재 사슬의 규칙 나열 (--list)

-F : 사슬로부터 규칙 제거 (--flush)

-Z : 사슬 내의 모든 규칙들의 패킷과 바이트의 카운트 0 설정 (--zero)

-A : 사슬에 새로운 규칙 추가. 맨 마지막 규칙으로 등록 (--append)

-I : 사슬의 규칙을 맨 첫 부분에 삽입. 룰 넘버를 이용하여 특정 부분 삽입 가능. (--insert)

-R : 사슬의 규칙 순서 교환 (--replace)

-D : 사슬의 규칙 제거 (--delete)

 

 

 

iptables match

-s : 출발지 IP주소나 네트워크와 매칭. 도메인, IP주소, 넷마스크 값을 이용하여 표기 (--source, --src)

-d : 목적지 IP주소나 네트워크와 매칭. 도메인, IP주소, 넷마스크 값을 이용하여 표기 (--destination, --dst)

-p : 특정 프로토콜과 매칭. 미기재시 모든 프로토콜을 대상으로 작동 (--protocol)

-i : 입력 인터페이스와 매칭 (--in-interface)

-o : 출력 인터페이스와 매칭 (--out-interface)

! : NOT 조건

-m : 세밀한 매칭 옵션 (--match)

--state : 연결 상태와 매칭. INVALID, ESTABLISHED, NEW, RELATED

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

매칭 = 조건으로 삼는 것

 

 

 

iptables 기타옵션

-n : 다른 옵션의 출력정보를 숫자값으로 표현 (--numeric)

-v : 다른옵션의 패킷, 바이트수 등을 추가하여 자세히 출력 (--verbose)

--line-number : 정책 앞에 번호를 붙여 출력

 

 

 

iptables target (-j, --jump)

: ACCEPT (패킷 허가. 본래 라우팅 대로 진행)

: DROP (패킷 거부. 더 이상의 처리 수행 없음)

: LOG (패킷을 syslog에 기록. /var/log/messages에 저장)

: REJECT (패킷을 버리고 동시에 적당한 응답)

: RETURN (호출 사슬 내에서 패킷 처리 계속 진행)

 

ex)

iptables A OUTPUT p tcp d www.comeve.com --dport 80 o eth0 j DROP

iptables 확장 사용 옵션

--sport : 발신지의 포트 또는 범위 지정. /etc/services에 기록된 포트이름이나 번호 지정. ‘:’을 사용하여 표기 (--source-port)

--dport : 도착지의 포트 지정. --sport와 동일

--tcp-flags : TCP flag를 지정. SYN, ACK, FIN, RST, URG, ALL, NONE

--syn : SYN, RST, ACK, FIN, SYN

 

 

 

iptables 확장

-p tcp (모든옵션)

-p udp (--sport / --dport)

-p icmp (--icmp-type / iptables p icmp h를 통해 옵션확인)

 

 

 

iptables-save [option]

: iptables로 설정한 정책을 부팅 후에도 지속적으로 반영하기 위해 저장

: 리다이렉션 ‘>’ 기호와 조합하여 파일로 저장

-t : 특정 테이블에 설정된 정책만 출력 (--table)

-c : 출력되는 정책 앞부분에 패킷수와 바이트 표시 (--counters)

 

 

 

iptables-restore [option] : ‘<’ 기호를 통해 저장된 정책을 반영.

-c : 기록된 패킷수와 바이트를 그대로 반영 (--counters)

-n : 현재 설정된 정책에 추가하는 형식으로 반영 (--noflush)

 

 

 

300x250
728x90