네트워크 보안은 서버 운영에서 가장 중요한 요소 중 하나입니다. 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를 사용하는 것이 좋습니다. 각자의 특성을 고려하여 서버 환경에 맞는 방화벽을 선택하여 보안을 강화하시기 바랍니다.