상세 컨텐츠

본문 제목

iptables 이론

데비안 리눅스/이론

by 연매출300억 2020. 1. 2. 15:32

본문

iptables의 개념

 

iptables ? 

- iptables란 쉽게 말해 리눅스상에서 방화벽을 설정하는 도구이다.

- 패킷 필터링 기능을 제공한다.

 

패킷필터링 ?

- 패킷 필터링은 패킷의 헤더를 보고 그 패킷 전체를 어떻게 처리할지 결정하는 것이다.

- 패킷에는 일반적으로 헤더와 데이터를 가지고 있다.

- 헤더에는 필터링할 정보인 출발지, 도착지, checksum, 프로토콜 등을 가지며 데이터에는 각각의 정보가 들어가있다.

- 특정 조건을 가지고있는 패킷에 대해 허용(ACCEPT), 차단(DROP) 등을 지정할 수 있다.

 

iptables에서 중요한 Chain이라는 것이 존재한다. Chain은 패킷이 어떻게 조작될지 상태를 지정한다. iptables에는

기본적인 Chain이 내장되어있다. 물론 -N 옵션을 이용해 사용자 정의 체인을 만들 수 있다.

 

- INPUT : 서버로 들어오는 패킷에 대한 기본 정책

- FORWARD : 서버를 거쳐 나가는 패킷에 대한 기본 정책

- OUTPUT : 서버에서 나가는 패킷에 대한 기본 정책

 

--------> INPUT --------> My server ---------> OUTPUT

( <---------------------------FORWARD-------------------------> )

 

가운데에 있는 내 서버를 기준으로 내 서버를 목적지로 삼는 패킷은 INPUT Chain을 통과한다.

내 서버에서 생성되어 외부로 나가는 패킷은 OUTPUT Chain을 통과하게 된다.

내 서버를 통과해 다른 서버가 목적지인 패킷은 FORWARD Chain을 통과하는 것이다.

 

- PREROUTING : NAT 관련 설정을 위해 주로 사용된다. 들어오는 패킷에 대해 처리하는 지점.

- POSTROUTING : 나가는 패킷에 대해 처리하는 지점.

 

마스커레이드 (Masquerade) ?

- 내부의 사설 IP들이 외부 인터넷에 연결되도록 해주는 기능

 

NAT (Network Address Translation) ?

- SNAT (Source NAT) : 내부 사설 IP들이 외부로 나갈 때 공인 IP로 변환되는 것. 마스커레이드와 유사함.

(내부 --> 외부)

- DNAT (Destination NAT) : 외부에서 요청이 들어오는 IP주소를 내부 사설 IP주소로 변환한다.

(외부 --> 내부)

 

 

iptables 명령어 및 옵션

 

체인 옵션 설명
-N 새로운 체인을 생성한다.
-X 비어있는 체인을 제거한다. 기본 (INPUT, OUTPUT, FORWARD)는 제거 X
-P 체인에 어떤 정책을 적용할 지 설정한다. (ACCEPT, DROP)
-L 현재 구성되어 있는 체인의 정책을 본다
-F 체인의 규칙을 제거
-Z  체인 내 모든 규칙들의 패킷 & 바이트를 0으로 설정
-C 패킷 테스트
체인 내부 규칙 옵션 설명
-A 체인에 새로운 규칙을 추가한다. 자동으로 맨 뒤에 추가된다.
-I 체인에 규칙을 맨 앞에 추가한다.
-R 체인의 규칙을 교환한다.
-D 체인의 규칙을 제거한다.
옵션 설명
-s (--source), -d (--destination) 각각 출발지와 목적지를 지정하는 옵션
-j (--jump) 특정한 정책 설정 (규칙에 맞는 패킷을 어떻게 처리할지 지정)
-p (--protocol) 프로토콜을 지정하는 옵션
-t (--table) 테이블을 선택할 때 사용하는 옵션

--sport [source port]

--dport [destination port]

각각 출발지 포트번호, 도착지 포트번호 설정 옵션

-i (--in-interface)

-o (--out-interface)

각각 패킷이 들어오고, 나가는 인터페이스 관련 설정 옵션

-m (--match)

특정 모듈과의 매칭

 

 

 

명령어 예시

 

웹 포트포워딩

iptables -t nat -A PREROUTING -s 210.0.0.0/24 -d 210.0.0.2/24 -p tcp --dport 80 -j DNAT --to 192.168.0.1

(80번 포트에 대해 210.0.0.0 대역에서 출발해 목적지가 210.0.0.2인 패킷은 DNAT로 변환하여 192.168.0.1로 보내라)

 

 

 

 

'데비안 리눅스 > 이론' 카테고리의 다른 글

NFS (Network File System)  (1) 2020.01.22

관련글 더보기

댓글 영역