Branding, UI Design Linux security / 2025-05-21 / by 이주환

 IPTABLES 구조

📦 iptables 완전 정복 가이드

📖 개요

iptables는 리눅스 커널에서 제공하는 패킷 필터링방화벽 기능을 제어하는 명령어입니다. 이는 네트워크 트래픽을 제어하고 시스템 보안을 강화하는 데 매우 유용합니다.

  • 작동 계층: OSI 4계층 (전송 계층, TCP/UDP)
  • 주요 기능:
    • 패킷 허용/거부/드롭
    • NAT(Network Address Translation)
    • 포트 포워딩

🔗 기본 용어

용어 설명
패킷(Packet) 네트워크를 통해 전송되는 데이터의 단위
테이블(Table) 규칙들의 집합이며, 서로 다른 목적에 따라 나뉨
체인(Chain) 테이블 안에 정의된 규칙들의 목록
규칙(Rule) 특정 조건의 패킷에 대한 행동(ACCEPT, DROP 등)을 정의

🧱 테이블 구조

iptables는 4가지 주요 테이블을 제공합니다.

테이블 이름 설명
filter 기본 테이블, 패킷 필터링에 사용
nat NAT(Network Address Translation) 관련
mangle 패킷 수정에 사용 (TTL 변경 등)
raw 연결 추적 전 필터링에 사용

📂 주요 체인(Chains)

체인 이름 동작 시점 설명
INPUT 로컬로 들어오는 패킷  
OUTPUT 로컬에서 나가는 패킷  
FORWARD 라우팅되는 패킷 (호스트를 거쳐 가는 패킷)  
PREROUTING 라우팅 결정 전에 처리  
POSTROUTING 라우팅 결정 후 처리  

⚙️ 기본 명령어

모든 규칙 보기

iptables -L -n -v

규칙 추가 (예: 80 포트를 허용)

iptables -A INPUT -p tcp --dport 80 -j ACCEPT

규칙 삭제 (위 규칙 제거)

iptables -D INPUT -p tcp --dport 80 -j ACCEPT

기본 정책 변경 (모든 입력 차단)

iptables -P INPUT DROP

설정 초기화

iptables -F


📌 규칙 작성 예시

21번 포트 (FTP) 차단

iptables -A INPUT -p tcp --dport 21 -j DROP

443번 포트 (HTTPS) 허용

iptables -A INPUT -p tcp --dport 443 -j ACCEPT

모든 UDP 포트 차단

iptables -A INPUT -p udp -j DROP

🌐 IP 및 대역 필터링

특정 IP 허용

iptables -A INPUT -s 203.0.113.50 -j ACCEPT

특정 IP 차단

iptables -A INPUT -s 203.0.113.51 -j DROP

특정 IP 대역 허용 (예: 사내 네트워크)

iptables -A INPUT -s 192.168.0.0/16 -j ACCEPT

🧱 제한 정책 및 보호

Ping flood 방지 (초당 1개 ICMP 패킷 허용)

iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/second -j ACCEPT

SSH 접속 시도 3회 초과시 차단 (fail2ban 없이 간단한 제한)

iptables -A INPUT -p tcp --dport 22 -m recent --name ssh --set iptables -A INPUT -p tcp --dport 22 -m recent --name ssh --update --seconds 60 --hitcount 4 -j DROP

💾 설정 저장 및 복원

iptables는 기본적으로 재부팅 시 설정이 유지되지 않으므로, 설정을 저장해야 합니다.

Ubuntu/Debian

sudo apt install iptables-persistent sudo netfilter-persistent save sudo netfilter-persistent reload

🔐 보안 팁

기본 정책은 DROP, 필요한 트래픽만 ACCEPT 하도록 구성

불필요한 포트는 반드시 차단

관리 포트(예: SSH)는 IP 제한 또는 VPN과 함께 사용

로그 기록 추가로 감시 가능

sudo iptables -A INPUT -j LOG --log-prefix "iptables-dropped:"

📚 참고 자료

공식문서 https://netfilter.org/documentation/

Tags:
Comments