iptables 알아보기

목차

리눅스의 방화벽 관리를 담당하는 iptables는 커널 레벨의 네트워크 패킷 필터링 프레임워크인 Netfilter를 제어하는 사용자 공간 도구이다.

iptables의 핵심 개념 3가지

테이블 (Table)

패킷을 어떻게 처리할지 목적에 따라 분류한 큰 범주이다.

  • filter (기본값): 패킷의 허용/차단을 결정합니다. 가장 많이 사용된다.
  • nat: Network Address Translation. 패킷의 출발지나 목적지 IP/포트를 변환할 때 사용한다.
  • mangle: 패킷의 헤더(TTL, TOS 등)를 조작할 때 사용한다.
  • raw: 연결 추적(Connection tracking)을 우회할 때 사용한다.

체인 (Chain)

패킷이 이동하는 경로를 의미한다.

  • INPUT: 외부에서 서버(Local)로 들어오는 패킷
  • OUTPUT: 서버(Local)에서 외부로 나가는 패킷
  • FORWARD: 서버를 거쳐 다른 네트워크로 통과하는 패킷
  • PREROUTING: 라우팅 경로가 결정되기 전 (주로 DNAT에 사용)
  • POSTROUTING: 라우팅 경로가 결정된 후 나갈 때 (주로 SNAT에 사용)

타겟 (Target)

규칙에 일치하는 패킷을 어떻게 처리할지를 정의한다.

  • ACCEPT: 패킷 통과 허용
  • DROP: 패킷 차단 (응답 없이 무시하여 상대방은 타임아웃 발생)
  • REJECT: 패킷 차단 (상대방에게 연결 거부 메시지 전송)
  • LOG: 패킷 정보를 syslog에 기록 (차단/허용 액션은 취하지 않고 기록만 함)

 

iptables 기본 문법

iptables -t [테이블] [액션] [체인] [매치조건] -j [타겟]
  • -t 옵션을 생략하면 기본적으로 filter 테이블이 적용된다.
  • 주요 액션: -A (규칙 추가), -I (규칙 최상단 삽입), -D (규칙 삭제), -L (규칙 조회), -P (기본 정책 설정), -F (모든 규칙 초기화)

iptables 사례 및 예시

특정 IP의 접근을 차단하고 싶을 때

# -I를 써서 최상단 규칙으로 올려 즉시 적용
iptables -I INPUT -s 203.0.113.50 -j DROP

특정 포트 접근을 내부망만 허용할 때

iptables -A INPUT -p tcp -s 10.0.0.0/8 --dport 3306 -j ACCEPT

Dos 공격 방어를 위해 초당 접속 횟수 제한

iptables -A INPUT -p tcp --dport 80 -m limit --limit 25/minute --limit-burst 100 -j ACCEPT

포트 포워딩 (80포트로 오면 8080포트로 전달하기)

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080

3번째 규칙만 삭제하고 싶을 때

iptables -D INPUT 3

기존 방화벽 규칙 확인 할 때

iptables -L -n -v

특정 IP에서만 SSH 허용할 때

# 특정 IP (192.168.1.100) 에서만 SSH 허용할 경우
iptables -A INPUT -p tcp -s 192.168.1.100 --dport 22 -j ACCEPT

웹 서버를 운영하기 위해 80(HTTP)번과 443(HTTPS)번 포트를 열 때

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

레드햇 계열에서 설정 저장하기

service iptables save
# 또는
iptables-save > /etc/sysconfig/iptables

💬 댓글 0

💬 댓글을 남기려면?
첫 댓글을 남겨보세요 ✨

이 콘텐츠가 도움이 됐나요?

누스쿨 커뮤니티에서 더 많은 커리어 전략을 나눠요