Filter Rule
Linux 서버가 목적지인 패킷 (패킷이 서버로 들어옴)
Linux 서버에서 외부 목적지로 나가는 패킷 (서버의 패킷이 외부로 나감)
Source or Destination도 아닌 거쳐가는 경우
(NAT 네트워크 공유 기능을 위해 사용됨)
NAT Rule
Table | Description | Use Example |
---|---|---|
filter | 기본 방화벽 역할 수행 | INPUT, OUTPUT, FORWARD |
nat | 패킷 주소 변환 (NAT) | PREROUING, POSTROUING, OUTPUT |
mangle | 패킷 수정 | PREROUING, INPUT, FORWARD, OUTPUT, POSTROUTING |
raw | 키넥션 추적을 우회할 수 있도록 설정 | PREROUING, OUTPUT |
security | SELinux 정책 사용 | INPUT, OUTPUT, FORWARD |
Chain | Description |
---|---|
PREROUING | 패킷이 목적지에 도달하기 전에 변경 |
INPUT | 로컬 시스템으로 들어오는 패킷 필터링 |
FORWARD | 다른 인터페이스로 전달되는 패킷 필터링 |
OUTPUT | 로컬에서 생성한 패킷 필터링 |
POSTROUTING | 패킷이 인터페이스를 통해 나가기 직전 변경 |
iptables 구조도
Install Package
apt install -y iptables iptables-persistent
systemctl enable --now iptables
Basic Structure
iptables [Access_Option] INPUT -s [Soure] --sport [Source_Port] -d [Destination] --dport [Destination_Port] -j [Policy]
Iptables Default Policy Access Option
Option | Description |
---|---|
-L (--list) | 적용 되어 있는 정책 목록 출력 |
-A (--append) | 새로운 정책 추가(가장 낮은 순위로 추가됨) |
-I (--insert) | 새로운 정책 삽입(가장 높은 순위로 삽입됨) |
-R (--replace) | 새로운 정책 교체(기존의 정책을 교체) |
-D (--delete) | 해당 정책을 삭제 |
-N (--new-chain) | 새로운 체인 생성(INPUT,OUTPUT,FORWARD 제외) |
-P (--policy) | 기본 정책 변경 |
-F (--flush) | 체인에 설정된 규칙 초기화 |
-Z | 체인의 모든 규칙들의 패킷과 바이트 카운터를 0 으로 만든다. |
-X (--delete-chain) | 비어있는 체인을 삭제 |
-E | 체인 이름 변경 |
Iptables Access Option
Option | Description |
---|---|
-s (--source) | 출발지 주소 |
-d (--destination) | 목적지 주소 |
--sport | 출발지 포트 |
--dport | 목적지 포트 |
-p (--protocol) | 프로토콜 (tcp, udp...) |
-i (--in-interface) | 패킷이 들어오는 네트워크 인터페이스 (inbound interface) |
-o (--out-interface) | 패킷이 나가는 네트워크 인터페이스 (outbound interface) |
-f (--fragment) | 나뉜 패킷 |
-j (--jump) | 패킷 상태 제어 |
Target
Option | Description |
---|---|
ACCEPT | 패킷 허용 |
DROP | 패킷 버림 |
REJECT | 패킷을 버리고 이와 동시에 적절한 응답 패킷을 전송 |
LOG | 패킷을 syslog에 기록 |
RETURN | 호출 체인 내에서 패킷 처리를 지속함 |