> 네트워크 관리 > firewall-cmd

firewall-cmd: Firewalld 방화벽 관리

firewall-cmd는 firewalld 데몬의 명령줄 클라이언트입니다. 이를 통해 시스템의 방화벽 규칙을 동적으로 관리할 수 있습니다. 포트 개방, 서비스 추가, 네트워크 존 설정 등 다양한 방화벽 작업을 수행하며, 런타임 규칙과 영구 규칙을 구분하여 적용할 수 있습니다.

개요

firewall-cmd는 firewalld 서비스와 상호작용하여 시스템의 네트워크 트래픽을 제어합니다. 영구적인 규칙과 런타임 규칙을 구분하여 적용할 수 있으며, 다양한 네트워크 존(zone)을 통해 유연한 보안 정책을 제공합니다. 이를 통해 서버의 보안을 강화하고 특정 서비스에 대한 접근을 허용하거나 차단할 수 있습니다.

주요 기능

  • 포트 및 서비스 관리 (추가/제거)
  • 네트워크 존(Zone) 설정 및 관리
  • IP 주소 및 네트워크 기반 규칙 (Rich Rules)
  • 런타임 및 영구 규칙 적용
  • 마스커레이딩(Masquerading) 및 포트 포워딩 설정

주요 옵션

firewall-cmd는 다양한 옵션을 통해 방화벽 규칙을 조회하고 설정할 수 있습니다.

규칙 적용 및 관리

정보 조회

생성된 명령어:

명령어를 조합해 보세요.

설명:

`firewall-cmd` 명령어를 실행합니다.

위 옵션들을 조합하여 AI와 함께 가상으로 명령어를 실행해 보세요.

사용 예시

firewall-cmd를 사용하여 방화벽 규칙을 설정하고 관리하는 다양한 예시입니다.

현재 활성 존 및 규칙 확인

firewall-cmd --list-all

기본 존(public)의 현재 런타임 설정을 모두 확인합니다.

특정 존의 모든 설정 확인

firewall-cmd --zone=internal --list-all

지정된 존(예: internal)의 모든 설정을 확인합니다.

HTTP 서비스 추가 (런타임)

sudo firewall-cmd --zone=public --add-service=http

public 존에 HTTP 서비스를 일시적으로 허용합니다. 재부팅 시 사라집니다.

HTTP 서비스 추가 (영구적)

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

public 존에 HTTP 서비스를 영구적으로 허용합니다. 변경 사항을 적용하려면 --reload가 필요합니다.

방화벽 규칙 재로드

sudo firewall-cmd --reload

영구적으로 설정된 모든 규칙을 현재 런타임 방화벽에 적용합니다.

포트 8080/tcp 추가 (영구적)

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

public 존에 TCP 8080 포트를 영구적으로 허용합니다. 적용 후 재로드해야 합니다.

SSH 서비스 제거 (영구적)

sudo firewall-cmd --zone=public --remove-service=ssh --permanent

public 존에서 SSH 서비스를 영구적으로 제거합니다. 적용 후 재로드해야 합니다.

모든 영구 규칙 적용

sudo firewall-cmd --reload

영구적으로 변경된 모든 규칙을 즉시 적용합니다.

설치

firewall-cmd는 firewalld 패키지의 일부입니다. 대부분의 최신 Linux 배포판에 기본으로 설치되어 있거나 쉽게 설치할 수 있습니다.

CentOS/RHEL/Fedora

sudo dnf install firewalld

Red Hat 계열 리눅스에서 firewalld를 설치합니다.

Ubuntu/Debian

sudo apt install firewalld

Debian 계열 리눅스에서 firewalld를 설치합니다.

서비스 시작 및 활성화

sudo systemctl start firewalld
sudo systemctl enable firewalld

설치 후 firewalld 서비스를 시작하고 시스템 부팅 시 자동 실행되도록 활성화합니다.

팁 & 주의사항

firewall-cmd 사용 시 유의할 점과 유용한 팁입니다.

런타임 vs 영구 규칙

  • `--permanent` 옵션 없이는 현재 세션에만 규칙이 적용되며, 재부팅 시 사라집니다.
  • 영구적으로 적용하려면 `--permanent`를 사용한 후 `firewall-cmd --reload` 명령으로 변경 사항을 적용해야 합니다.

존(Zone) 이해

  • firewalld는 네트워크 인터페이스를 여러 보안 존에 할당하여 관리합니다. 각 존은 다른 보안 수준을 가질 수 있습니다.
  • 기본 존은 `public`이며, 대부분의 외부 연결에 사용됩니다. `home`, `internal`, `trusted` 등 다양한 존이 있습니다.

서비스 이름 사용

  • 포트 번호(예: 80/tcp) 대신 `http`, `https`, `ssh`와 같은 미리 정의된 서비스 이름을 사용하는 것이 가독성과 관리 편의성 면에서 좋습니다.
  • `firewall-cmd --get-services` 명령으로 사용 가능한 서비스 목록을 확인할 수 있습니다.

백업 및 테스트

  • 중요한 변경을 하기 전에 `firewall-cmd --list-all --zone=<zone>` 명령으로 현재 설정을 기록해두는 것이 좋습니다.
  • 변경 사항 적용 후에는 해당 서비스가 정상적으로 작동하는지 반드시 테스트해야 합니다.


동일 카테고리 명령어