[Linux] iptables 기초 설정법

리눅스에서 네트워크 방화벽을 직접 제어하려면 iptables를 사용할 줄 알아야 합니다.
iptables는 네트워크 패킷을 필터링하고 제어할 수 있는 강력한 도구로,
UFW나 firewalld 같은 방화벽 프론트엔드도 내부적으로 iptables를 사용합니다.

iptables의 기초적인 구조와 간단한 규칙 설정 방법을 알아보겠습니다.

 

 

1. iptables 기본 체인 이해하기

iptables는 기본적으로 세 가지 체인(Chains)으로 작동합니다:

  • INPUT: 서버로 들어오는 패킷 처리
  • OUTPUT: 서버에서 나가는 패킷 처리
  • FORWARD: 서버를 거쳐 다른 호스트로 전달되는 패킷 처리(라우터용)

기본 정책을 먼저 설정할 수 있습니다:

sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT ACCEPT

위 설정은 들어오는 모든 패킷을 기본적으로 차단하고, 나가는 것은 허용합니다.

 

 

2. 포트 열기/허용 규칙 추가

서비스 포트를 열려면 ACCEPT 규칙을 추가합니다.

✔ SSH(22번 포트) 허용

sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT

✔ 웹 서비스 포트(80, 443) 허용

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

 

 

3. 특정 IP만 허용하기

예를 들어, 192.168.0.10에서만 SSH 접속을 허용하고 싶다면:

sudo iptables -A INPUT -p tcp -s 192.168.0.10 --dport 22 -j ACCEPT

 

 

4. 기존 규칙 확인 및 삭제

✔ 규칙 목록 보기

sudo iptables -L -n -v

✔ 특정 규칙 삭제

규칙 번호를 확인하고 삭제합니다:

sudo iptables -L --line-numbers

예: INPUT 체인의 3번 규칙을 삭제

sudo iptables -D INPUT 3

 

 

5. 규칙 저장 및 복원

서버를 재부팅하면 iptables 규칙은 초기화됩니다.
설정한 규칙을 영구적으로 유지하려면 배포판별 방법을 사용해야 합니다.

✔ Debian/Ubuntu

sudo apt install iptables-persistent
sudo netfilter-persistent save

✔ CentOS/RHEL

sudo service iptables save

 

 

iptables로 방화벽 기초 다지기

iptables는 리눅스 방화벽의 핵심입니다.
기본 정책과 허용 규칙만으로도 서버를 훨씬 안전하게 보호할 수 있습니다.

iptables는 사용이 어려워 보이지만, 기초부터 규칙 추가/삭제를 연습하면 금방 익숙해집니다.