Red Hat Training

A Red Hat training course is available for RHEL 8

9장. firewalld 사용 및 구성

방화벽 은 시스템을 외부로부터 원하지 않는 트래픽으로부터 보호하는 방법입니다. 사용자가 방화벽 규칙 집합을 정의하여 호스트 시스템에서 들어오는 네트워크 트래픽을 제어할 수 있습니다. 이러한 규칙은 들어오는 트래픽을 정렬하고 차단하거나 을 통해 허용하는 데 사용됩니다.

firewalld 는 D-Bus 인터페이스와 함께 동적 사용자 지정 호스트 기반 방화벽을 제공하는 방화벽 서비스 데몬입니다. 동적이기 때문에 규칙이 변경될 때마다 방화벽 데몬을 다시 시작할 필요 없이 규칙을 생성, 변경 및 삭제할 수 있습니다.

firewalld 는 트래픽 관리를 간소화하는 영역과 서비스의 개념을 사용합니다. 영역은 사전 정의된 규칙 세트입니다. 네트워크 인터페이스 및 소스를 영역에 할당할 수 있습니다. 허용되는 트래픽은 컴퓨터가 연결된 네트워크에 따라 달라지며 이 네트워크가 할당된 보안 수준입니다. 방화벽 서비스는 특정 서비스에 대해 들어오는 트래픽을 허용하기 위해 필요한 모든 설정을 포괄하고 영역 내에서 적용되는 사전 정의된 규칙입니다.

서비스는 네트워크 통신에 하나 이상의 포트 또는 주소를 사용합니다. 방화벽은 포트를 기반으로 통신을 필터링합니다. 서비스에 대한 네트워크 트래픽을 허용하려면 포트를 열어야 합니다. firewalld 는 명시적으로 open으로 설정되지 않은 포트의 모든 트래픽을 차단합니다. trusted와 같은 일부 영역에서 기본적으로 모든 트래픽을 허용합니다.

nftables 백엔드가 있는 firewalld--direct 옵션을 사용하여 사용자 지정 nftables 규칙을 firewalld 에 전달하는 것을 지원하지 않습니다.

9.1. firewalld시작하기

다음은 서비스 및 영역과 같은 firewalld 기능과 firewalld systemd 서비스를 관리하는 방법을 소개합니다.

9.1.1. firewalld, nftables 또는 iptables를 사용하는 경우

다음은 다음 유틸리티 중 하나를 사용해야 하는 시나리오에 대한 간략한 개요입니다.

  • firewalld: 간단한 방화벽 사용 사례에 firewalld 유틸리티를 사용합니다. 유틸리티는 사용하기 쉽고 이러한 시나리오의 일반적인 사용 사례를 다룹니다.
  • nftables: nftables 유틸리티를 사용하여 전체 네트워크에 대해 과 같이 복잡하고 성능이 중요한 방화벽을 설정합니다.
  • iptables: Red Hat Enterprise Linux의 iptables 유틸리티는 레거시 백엔드 대신 nf_tables 커널 API를 사용합니다. nf_tables API는 이전 버전과의 호환성을 제공하므로 iptables 명령을 사용하는 스크립트가 여전히 Red Hat Enterprise Linux에서 작동합니다. 새 방화벽 스크립트의 경우 Red Hat은 nftables 를 사용하도록 권장합니다.
중요

다른 방화벽 서비스가 서로 영향을 주지 않도록 하려면 RHEL 호스트에서 해당 서비스 중 하나만 실행하고 다른 서비스를 비활성화합니다.

9.1.2. 영역

방화벽 사용자가 해당 네트워크 내의 인터페이스와 트래픽에 배치하기로 결정한 신뢰 수준에 따라 네트워크를 다른 영역으로 분리하는 데 사용할 수 있습니다. 연결은 하나의 영역에만 포함될 수 있지만 영역은 많은 네트워크 연결에 사용할 수 있습니다.

NetworkManager 는 인터페이스의 영역을 firewalld 에 알립니다. 다음을 사용하여 인터페이스에 영역을 할당할 수 있습니다.

  • NetworkManager
  • firewall-config 도구
  • firewall-cmd 명령줄 도구
  • RHEL 웹 콘솔

후자의 3개는 적절한 NetworkManager 구성 파일만 편집할 수 있습니다. 웹 콘솔, firewall-cmd 또는 firewall-config 를 사용하여 인터페이스의 영역을 변경하면 요청이 NetworkManager 로 전달되고 CrashLoopBackOfffirewalld 가 처리되지 않습니다.

사전 정의된 영역은 /usr/lib/firewalld/zones/ 디렉터리에 저장되며 사용 가능한 네트워크 인터페이스에 즉시 적용할 수 있습니다. 이러한 파일은 수정된 경우에만 /etc/firewalld/zones/ 디렉토리에 복사됩니다. 사전 정의된 영역의 기본 설정은 다음과 같습니다.

블록
들어오는 네트워크 연결은 IPv4 에 대한 icmp-host-prohibited 메시지와 icmp6-adm-adm-prohibited IPv6 로 거부됩니다. 시스템 내에서 시작된 네트워크 연결만 가능합니다.
dmz
내부 네트워크에 대한 제한된 액세스 권한으로 공개적으로 액세스할 수 있는 비유형 영역에 있는 컴퓨터. 선택한 연결만 허용됩니다.
drop
들어오는 네트워크 패킷은 알림 없이 삭제됩니다. 나가는 네트워크 연결만 가능합니다.
external
특히 라우터의 경우 마스커레이딩이 활성화된 외부 네트워크에서 사용합니다. 네트워크의 다른 컴퓨터는 컴퓨터가 손상되지 않도록 신뢰하지 않습니다. 선택한 연결만 허용됩니다.
주로 네트워크의 다른 컴퓨터를 신뢰하는 가정에서 사용할 수 있습니다. 선택한 연결만 허용됩니다.
internal
네트워크의 다른 컴퓨터를 대부분 신뢰하는 경우 내부 네트워크에서 사용할 수 있습니다. 선택한 연결만 허용됩니다.
public
네트워크의 다른 컴퓨터를 신뢰하지 않는 공공 부문의 경우. 선택한 연결만 허용됩니다.
trusted
모든 네트워크 연결이 허용됩니다.
작업
네트워크의 다른 컴퓨터를 대부분 신뢰하는 직장에서 사용할 수 있습니다. 선택한 연결만 허용됩니다.

이러한 영역 중 하나는 기본 영역으로 설정됩니다. 인터페이스 연결이 NetworkManager 에 추가되면 기본 영역에 할당됩니다. 설치할 때 firewalld 의 기본 영역은 public 영역으로 설정됩니다. 기본 영역은 변경할 수 있습니다.

참고

네트워크 영역 이름은 쉽게 설명해야 하며 사용자가 합리적인 결정을 신속하게 내릴 수 있도록 해야 합니다. 보안 문제를 방지하려면 기본 영역 구성을 검토하고 요구 사항 및 위험 평가에 따라 불필요한 서비스를 비활성화합니다.

추가 리소스

  • firewalld.zone(5) 도움말 페이지.

9.1.3. 사전 정의된 서비스

서비스는 로컬 포트, 프로토콜, 소스 포트 및 대상의 목록일 뿐만 아니라 서비스가 활성화된 경우 자동으로 로드되는 방화벽 도우미 모듈 목록입니다. 서비스를 사용하면 사용자는 포트 열기, 프로토콜 정의, 패킷 전달 활성화 등의 여러 작업을 한 단계로 수행할 수 있으므로 사용자는 시간을 절약할 수 있습니다.

서비스 구성 옵션 및 일반 파일 정보는 firewalld.service(5) 도움말 페이지에 설명되어 있습니다. 서비스는 다음과 같은 형식으로 이름이 지정된 개별 XML 구성 파일인 service-name.xml 을 통해 지정됩니다. 프로토콜 이름은 firewalld 에서 서비스 또는 애플리케이션 이름보다 우선합니다.

그래픽 firewall-config 도구, firewall-cmdfirewall-offline-cmd 를 사용하여 서비스를 추가하고 제거할 수 있습니다.

또는 /etc/firewalld/services/ 디렉터리에서 XML 파일을 편집할 수 있습니다. 사용자가 서비스를 추가하거나 변경하지 않으면 /etc/firewalld/services/ 에서 해당 XML 파일을 찾을 수 없습니다. 서비스를 추가하거나 변경하려면 /usr/lib/firewalld/services/ 디렉토리의 파일을 템플릿으로 사용할 수 있습니다.

추가 리소스

  • firewalld.service(5) 도움말 페이지

9.1.4. firewalld 시작

절차

  1. firewalld 를 시작하려면 root 로 다음 명령을 입력합니다.

    # systemctl unmask firewalld
    # systemctl start firewalld
  2. 시스템을 시작할 때 firewalld 가 자동으로 시작되도록 하려면 root 로 다음 명령을 입력합니다.

    # systemctl enable firewalld

9.1.5. firewalld 중지

절차

  1. firewalld 를 중지하려면 root 로 다음 명령을 입력합니다.

    # systemctl stop firewalld
  2. 시스템을 시작할 때 firewalld 가 자동으로 시작되지 않도록 하려면 다음을 수행합니다.

    # systemctl disable firewalld
  3. firewalld D-Bus 인터페이스에 액세스하고 다른 서비스에 firewalld 가 필요한 경우에도 firewalld 를 시작하지 않도록하려면 다음을 수행하십시오.

    # systemctl mask firewalld

9.1.6. 영구 firewalld 구성 확인

예를 들어 firewalld 구성 파일을 수동으로 편집한 후 관리자가 변경 사항이 올바른지 확인하려고 합니다. firewall-cmd 유틸리티를 사용하여 구성을 확인할 수 있습니다.

사전 요구 사항

  • firewalld 서비스가 실행 중입니다.

절차

  1. firewalld 서비스의 영구 구성을 확인합니다.

    # firewall-cmd --check-config
    success

    영구 구성이 유효한 경우 명령에서 success 를 반환합니다. 그렇지 않으면 명령에서 다음과 같은 추가 세부 정보가 있는 오류를 반환합니다.

    # firewall-cmd --check-config
    Error: INVALID_PROTOCOL: 'public.xml': 'tcpx' not from {'tcp'|'udp'|'sctp'|'dccp'}