리눅스 커널에 들어오고/나가는 패킷을 필터링, 제어, 변환(NAT) 하는 방화벽
리눅스 서버는 기본적으로
👉 그런데 아무 제어 없이 둔다면
가장 많이 사용되는 기본 테이블로, 패킷이 목적지에 도달하도록 할지 아니면 차단할건지 결정
패킷의 IP 주소나 포트 번호를 변환하는데 사용, 주소 사설 IP와 공인 IP 간의 통신이나 포트 포워딩에 사용
패킷의 내용을 수정하거나 서비스 품질 설정을 위해 IP 헤더의 특정 필드를 변경할 때 사용
(모든 체인을 지원한다)
ex) TTL 64 => TTL 128
패킷이 이동하는 통로에 위치한 체크포인트 같은 개념 패킷이 이 체크 포인트를 지날 때마다 우리가 설정한 규칙에 부합한지 검사하고, 그에 맞는 조치를 취합니다.
즉 iptables가 Packet을 컨트롤할 때 시점
체인의 각 규칙 끝에는 이 패킷을 어떻게 처리할지 결정하는 타겟(Target)이 붙습니다.
생성 시 제어할 대상을 그룹화해서 호율성을 높이기 위해 사용
특정 체인에 정의된 모든 규칙에 해당하지 않는 패킷이 도착했을 때 적용되는 '기본 처리 방식' 을 의미합니다.
즉 내가 정해둔 조건에 맞는게 없다면 해당 패킷을 어떻게 할지 최종 결정을 하는것이라고 보면 됩니다.
기본 설정권장 방식iptables [테이블] [체인] [조건] -j [동작]

# 기본적인 테이블 확인
iptables -L -n -v
# 전체 초기화
iptables -F
# 기본 정책 설정
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
#정책 전체 삭제
iptables -t filter -F
SSH 허용
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
| 부분 | 의미 |
|---|---|
| -A INPUT | INPUT 체인에 추가 |
| -p tcp | TCP 패킷 |
| --dport 22 | 목적지 포트 22 |
| -j ACCEPT | 허용 |
웹 서버 허용
iptables -A INPUT -p icmp -j ACCEPT
내부 네트워크 인터넷 공유
iptables -t nat -A POSTROUTING -s 192.168.9.0/24 -o ens32 -j MASQUERADE
ICMP 정책 삭제
iptables -t filter -L --line : icmp의 행 번호 확인
iptables -t filter -D INPUT (행 번호)
Interface 기준 정책
iptables -t filter -A INPUT -i (Interface 이름) -j DROP/ACCEPT
규칙은 위에서부터 순서대로 검사
먼저 매칭되면 종료
재부팅하면 사라짐
iptables-save
iptables-restore