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 |
---|
댓글 영역