Firewalld 이해 및 사용법 가이드

Linux에서 네트워크 보안을 위해 자주 사용되는 방화벽 서비스 중 하나가 firewalld입니다. firewalld는 동적 방화벽 관리 도구로, 실시간으로 방화벽 설정을 적용할 수 있으며 iptables의 대체 도구로 많이 사용됩니다. 이번 포스팅에서는 firewalld의 기본 개념, 주요 기능, 설치 방법, 사용법 등에 대해 알아보겠습니다.


1. Firewalld란?

firewalld는 Linux에서 방화벽 설정을 관리하기 위한 유틸리티로, iptables와는 다르게 동적이며 더 유연한 설정 변경을 지원합니다. firewalld를 사용하면 네트워크 영역(zone)별로 접근 정책을 정의하고 관리할 수 있습니다.

주요 특징

  • 영역(Zones): 트래픽 유형에 따라 네트워크를 여러 영역으로 분리하여 설정할 수 있습니다.
  • 서비스 기반 규칙: 포트나 프로토콜을 직접 지정하는 대신 서비스 기반으로 규칙을 설정할 수 있습니다.
  • 동적 변경: 방화벽 규칙을 재시작 없이 실시간으로 적용할 수 있습니다.
  • D-Bus 인터페이스: 다른 애플리케이션에서 firewalld 설정을 제어할 수 있도록 D-Bus 인터페이스를 제공합니다.

2. Firewalld 설치

firewalld는 대부분의 Linux 배포판에 기본적으로 설치되어 있습니다. 설치가 필요한 경우 아래 명령어로 설치할 수 있습니다.

# CentOS/RHEL
sudo yum install firewalld

# Ubuntu/Debian
sudo apt-get install firewalld

설치 후 firewalld 서비스를 시작하고, 부팅 시 자동으로 시작되도록 설정할 수 있습니다.

sudo systemctl start firewalld
sudo systemctl enable firewalld

3. Firewalld 기본 사용법

서비스 상태 확인

firewalld의 현재 상태를 확인하는 명령어는 다음과 같습니다.

sudo firewall-cmd --state

running으로 출력되면 firewalld가 정상적으로 실행 중인 것입니다.

영역(Zones) 관리

firewalld에서는 네트워크를 영역(zone)으로 구분하여 트래픽을 제어할 수 있습니다. 기본적으로 제공되는 영역은 다음과 같습니다.

  • public : 외부 네트워크에 노출된 영역. 기본적으로 신뢰할 수 없는 네트워크.
  • work : 사무실과 같이 신뢰할 수 있는 네트워크.
  • home : 가정용 네트워크로 신뢰할 수 있는 네트워크.
  • internal : 매우 신뢰할 수 있는 네트워크.
  • dmz : 최소한의 접근만 허용하는 비무장지대(DMZ).

활성화된 영역 확인

현재 설정된 기본 영역과 활성화된 영역을 확인할 수 있습니다.

sudo firewall-cmd --get-default-zone
sudo firewall-cmd --get-active-zones

서비스 추가 및 제거

특정 포트나 서비스를 허용하거나 제거하는 방법입니다. 예를 들어, HTTP 서비스를 public 영역에서 허용하려면 아래와 같이 실행합니다.

# 서비스 허용
sudo firewall-cmd --zone=public --add-service=http --permanent

# 서비스 제거
sudo firewall-cmd --zone=public --remove-service=http --permanent
  • --permanent 옵션을 사용하면 방화벽 규칙이 영구적으로 적용됩니다. 옵션을 생략하면 일시적으롬나 적용됩니다.

변경 사항을 적용하려면 다음 명령어를 실행합니다.

sudo firewall-cmd --reload

포트 추가 및 제거

특정 포트를 허용하거나 제거할 수도 있습니다. 예를 들어, 8080 포트를 허용하려면 다음과 같이 실행합니다.

# 포트 허용
sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent

# 포트 제거
sudo firewall-cmd --zone=public --remove-port=8080/tcp --permanent

방화벽 규칙 확인

현재 설정된 방화벽 규칙을 확인하려면 다음 명령어를 사용합니다.

sudo firewall-cmd --list-all

이 명령어를 사용하면 설정된 영역, 허용된 서비스, 포트 등을 한눈에 확인할 수 있습니다.


4. 방화벽 규칙 예시

아래는 몇 가지 방화벽 규칙 예시입니다.

HTTP/HPPTS 허용

sudo firewall-cmd --zone=public --add-service=http --permanent
sudo firewall-cmd --zone=public --add-service=https --permanent
sudo firewall-cmd --reload

SSH 포트 변경 및 허용

만약 SSH 포트를 기본 22에서 2222로 변경했다면 다음과 같이 허용할 수 있습니다.

sudo firewall-cmd --zone=public --add-port=2222/tcp --permanent
sudo firewall-cmd --reload

5. Firewalld 비활성화 및 재설정

firewalld를 일시적으로 비활성화하고 싶을 때는 다음 명령어를 사용할 수 있습니다.

# 비활성화
sudo systemctl stop firewalld

# 영구 비활성화
sudo systemctl disable firewalld

규칙을 초기화하고 싶다면 --complete-reload 옵션을 사용할 수 있습니다.

sudo firewall-cmd --complete-reload

결론

firewalld는 Linux에서 방화벽을 유연하고 간편하게 관리할 수 있게 해주는 도구입니다. 네트워크 보안은 시스템 운영에서 매우 중요한 부분이므로 firewalld의 기본 사용법을 이해하고 이를 적용하는 것이 중요합니다.