firewalld
1. firewalld란?
firewalld는 방화벽(firewall) + 데몬(deamon)의 합성어로, 주로 RHEL1 기반의 운영체제에서 기본적으로 채용하고 있는 방화벽 소프트웨어다. firewalld의 주요 특징은 다음과 같다.
- 동적 방화벽 관리: 서비스 중단 없이 규칙을 변경 가능
- 존(Zone) 개념 지원: 네트워크 인터페이스별로 다른 보안 수준을 적용 가능
- 서비스 기반 규칙 설정: 특정 포트가 아닌 서비스 단위로 방화벽 규칙 적용 가능
- D-Bus API 지원: GUI 및 명령줄 도구를 통해 쉽게 관리 가능
동적 방화벽 관리 및 유연한 보안 수준 적용이 가능하며 iptables에 비해 설정이 쉽다보니 다양한 리눅스 배포판에서 지원하고 있다. 특히 서버로 많이 사용되는 RHEL 기반의 운영체제를 사용한다면 firewalld의 사용법을 숙지해 두는 것이 좋다.
2. Zone(영역)이란?
은 무엇일까?
firewalld에서 Zone(이하 영역)은 네트워크 인터페이스와 연결된 신뢰 수준을 정의하는 역할을 한다. 각 영역은 특정한 보안 정책을 가지며, 네트워크 인터페이스에 맞춰 적절한 영역을 설정할 수 있다. 예를들어 외부에 공개된 네트워크의 경우에는 최소한의 접근만 허용하거나 아웃바운드 트래픽만 허용하는 영역으로 설정한다거나, 신뢰할 수 있는 내부 네트워크를 사용하는 경우에는 모든 트래픽을 허용하는 영역으로 설정하는 방식으로 여러 개의 네트워크 인터페이스에 서로 다른 방화벽 규칙을 간편하게 적용할 수 있다. firewalld에서 기본적으로 생성되어 있는 영역의 종류는 다음과 같다.
| 영역 명 | 네트워크 위치 | 설명 |
|---|---|---|
| drop | 외부 | 모든 인바운드 트래픽을 차단하고 아웃바운드 트래픽만 허용. |
| block | 외부 | 모든 인바운드 트래픽을 차단하고 거부 메시지를 반환함. 단, 시스템 내에서 시작된 네트워크 연결은 모두 허용. |
| public | 외부 | 최소한의 접근만 허용. (기본 영역) |
| external | 외부 | 공유기와 같이 라우터의 마스커레이딩이 활성화 된 외부 네트워크에서 사용. 최소한의 접근만 허용. |
| dmz | 외부 | DMZ 영역에서 사용하는 영역. 내부 네트워크에 대한 최소한의 접근만 허용. |
| work | 내부 | 업무용 네트워크 영역. 최소한의 접근만 허용. |
| home | 내부 | 가정용 네트워크 영역. 최소한의 접근만 허용. |
| internal | 내부 | 내부 네트워크 영역. 최소한의 접근만 허용. |
| trusted | 내부 | 모든 접근 허용. |
위의 영역은 자주 쓰이는 영역을 프리셋화 한 것이고, 필요에 따라 새로운 영역을 생성할 수도 있다. 또한, 어플리케이션이 설치되는 과정에서 자동으로 영역이 생성되는 경우도 있다. (EX. 도커)
3. firewalld 명령어
3-1. 기본 명령어
firewalld 상태 확인
현재 firewalld가 동작중인지 확인합니다:
# firewall-cmd --state
방화벽 규칙 즉시 적용 후 저장
변경된 규칙이 있을 경우 즉시 저장하고 적용합니다:
# firewall-cmd --reload
firewalld3-2. 영역 관련 명령어
사용 가능한 영역 확인
현재 firewalld에서 사용 가능한 모든 영역을 확인합니다:
# firewall-cmd --get-zones
현재 활성화된 영역 확인
모든 네트워크 인터페이스가 어떤 영역에 존재하는지 확인합니다 (사용되지 않는 영역은 표시되지 않음):
# firewall-cmd --get-active-zones
기본 영역 확인
지정된 기본 영역을 확인합니다:
# firewall-cmd --get-default-zone
특정 영역의 설정 확인
지정한 영역의 상세 설정을 확인합니다 (지정된 영역이 없는 경우 기본 영역의 상세 설정이 표시됨):
# firewall-cmd --zone=public --list-all
특정 인터페이스의 영역 설정 확인
지정한 인터페이스의 영역을 조회합니다.
# firewall-cmd --get-zone-of-interface=eth0
기본 영역 변경
지정한 영역을 기본 영역으로 변경합니다.
# firewall-cmd --set-default-zone=internal
특정 인터페이스의 영역 변경
지정한 인터페이스의 영역을 지정한 영역으로 변경합니다. --permanent 옵션을 사용하면 영구적으로 변경합니다.
# firewall-cmd --zone=internal --change-interface=eth1 --permanent
3-3. 포트 열기 및 닫기
1. RHEL 7 이상만 해당한다.