본문 바로가기
카테고리 없음

iptables와 firewalld의 차이점과 사용법 예시 방화벽 설정, 관리 방법, 적용 사례

by jjinyjjuny 2025. 3. 1.

iptables 편집창 이미지

 

네트워크 보안은 서버 운영에서 가장 중요한 요소 중 하나입니다. Linux에서 방화벽을 설정하는 대표적인 두 가지 방법은 iptables와 firewalld입니다. 두 도구는 네트워크 트래픽을 필터링하고 보안을 강화하는 역할을 하지만, 사용 방식과 관리 방식에서 차이가 있습니다. 본 글에서는 iptables와 firewalld의 차이점을 비교하고, 각각의 사용법과 실무에서 적용할 수 있는 예제들을 살펴보겠습니다.

 

1. iptables와 firewalld의 개념 및 차이점

1.1 iptables란?

iptables는 Linux 커널의 netfilter 프레임워크를 이용해 네트워크 패킷을 필터링하는 방화벽 도구입니다. 규칙 기반의 테이블을 사용해 패킷의 흐름을 제어하며, 사용자가 직접 체인과 규칙을 설정해야 합니다.

주요 특징

  • 패킷 필터링을 위한 체인과 규칙을 직접 설정
  • INPUT, FORWARD, OUTPUT 체인을 사용해 트래픽 제어
  • 정적인 방화벽 설정으로, 변경 시마다 규칙을 다시 적용해야 함
  • IPv4용 iptables, IPv6용 ip6tables가 별도로 존재

1.2 firewalld란?

firewalld는 iptables를 대체하는 동적 방화벽 관리 도구로, 보다 쉽게 방화벽을 설정하고 관리할 수 있도록 설계되었습니다. XML 기반의 설정 파일과 D-Bus API를 이용해 동적으로 규칙을 변경할 수 있습니다.

주요 특징

  • zones(보안 영역) 개념을 사용하여 네트워크 인터페이스별 규칙 설정 가능
  • 서비스 단위로 포트 허용 설정이 가능 (예: firewall-cmd --add-service=http)
  • 동적 변경이 가능하여 방화벽 설정 변경 시 연결이 끊기지 않음
  • iptables보다 관리가 쉬운 GUI 도구(Firewalld-config) 제공

1.3 iptables vs firewalld 차이점 정리

항목 iptables firewalld
설정 방식 정적(규칙 변경 시 재적용 필요) 동적(즉시 적용 가능)
관리 도구 CLI 명령어 (iptables) firewall-cmd 또는 GUI
기본 개념 체인(INPUT, OUTPUT, FORWARD) 존(zones) 및 서비스 기반 관리
적용 대상 고급 네트워크 관리자 일반 사용자 및 서버 관리자
사용 편의성 설정이 복잡하고 수동 작업 필요 간편한 설정과 서비스 기반 관리
규칙 저장 iptables-save 및 iptables-restore 사용 자동 유지됨 (--permanent 옵션 사용)

 

2. iptables 사용법 예시

2.1 iptables 설치 및 확인


sudo apt install iptables  # Debian 계열
sudo yum install iptables-services  # RHEL/CentOS 계열
sudo iptables -L -v  # 현재 방화벽 규칙 확인

2.2 기본 규칙 설정

1) 모든 트래픽 차단 후 특정 포트만 허용


sudo iptables -P INPUT DROP  
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT ACCEPT
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT  
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT  
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT  

2) 특정 IP 주소 차단


sudo iptables -A INPUT -s 192.168.1.100 -j DROP

3) 설정 저장


sudo iptables-save > /etc/iptables/rules.v4  # Ubuntu 계열
sudo service iptables save  # CentOS 계열

 

3. firewalld 사용법 예시

3.1 firewalld 설치 및 활성화


sudo yum install firewalld  
sudo apt install firewalld  
sudo systemctl start firewalld
sudo systemctl enable firewalld

3.2 방화벽 규칙 확인


sudo firewall-cmd --list-all

3.3 서비스 및 포트 허용 설정

1) HTTP(80), HTTPS(443), SSH(22) 포트 허용


sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --reload  

2) 특정 포트(8080) 허용


sudo firewall-cmd --permanent --add-port=8080/tcp
sudo firewall-cmd --reload

3) 특정 IP 차단


sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" drop'
sudo firewall-cmd --reload

 

4. 결론

iptables와 firewalld는 모두 강력한 방화벽 도구지만, 관리 방식에서 차이가 있습니다. iptables는 직접 체인을 설정해야 하는 반면, firewalld는 zones과 services 개념을 사용하여 보다 쉽게 방화벽을 관리할 수 있습니다. 따라서 보안 정책을 자주 변경해야 하는 환경에서는 firewalld가 더 적합하며, 세밀한 제어가 필요한 경우 iptables를 사용하는 것이 좋습니다. 각자의 특성을 고려하여 서버 환경에 맞는 방화벽을 선택하여 보안을 강화하시기 바랍니다.