Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

5장. 방화벽 사용

5.1. firewalld시작하기

방화벽 은 원치 않는 트래픽으로부터 컴퓨터를 외부로부터 보호하는 방법입니다. 사용자가 방화벽 규칙 세트를 정의하여 호스트 시스템에서 들어오는 네트워크 트래픽을 제어할 수 있습니다. 이러한 규칙은 들어오는 트래픽을 정렬하고 차단하거나 를 허용하는 데 사용됩니다.
firewalldD-Bus 인터페이스를 사용하여 동적 사용자 지정 가능 호스트 기반 방화벽을 제공하는 방화벽 서비스 데몬입니다. 동적이므로 규칙이 변경될 때마다 방화벽 데몬을 재시작할 필요 없이 규칙을 생성, 변경 및 삭제할 수 있습니다.
firewalld 는 트래픽 관리를 간소화하는 영역서비스 의 개념을 사용합니다. 영역은 사전 정의된 규칙 집합입니다. 네트워크 인터페이스와 소스를 영역에 할당할 수 있습니다. 허용된 트래픽은 컴퓨터가 연결된 네트워크에 따라 다르며 이 네트워크가 할당된 보안 수준에 따라 달라집니다. 방화벽 서비스는 특정 서비스에 대한 들어오는 트래픽을 허용하고 영역 내에서 적용됩니다.
서비스는 네트워크 통신에 대해 하나 이상의 포트 또는 주소를 사용합니다. 방화벽은 포트를 기반으로 통신을 필터링합니다. 서비스에 대한 네트워크 트래픽을 허용하려면 해당 포트를 열어야 합니다.firewalld 는 명시적으로 열려 있지 않은 포트의 모든 트래픽을 차단합니다. 신뢰할 수 있는 것과 같은 일부 영역에서는 기본적으로 모든 트래픽을 허용합니다.

그림 5.1. 방화벽 스택

방화벽 스택

5.1.1. 영역

firewalld 는 사용자가 해당 네트워크 내의 인터페이스와 트래픽에 배치하기로 결정한 신뢰 수준에 따라 네트워크를 다른 영역으로 분리하는 데 사용할 수 있습니다. 연결은 하나의 영역에만 속할 수 있지만, 여러 네트워크 연결에 영역을 사용할 수 있습니다.
NetworkManager 는 인터페이스 영역을 firewalld 에 알립니다. NetworkManager, firewall-config 툴 또는 firewall-cmd 명령줄 도구를 사용하여 인터페이스에 영역을 할당할 수 있습니다. 두 번째는 적절한 NetworkManager 구성 파일만 편집합니다. firewall-cmd 또는 firewall-config 를 사용하여 인터페이스의 영역을 변경하는 경우 요청은 NetworkManager 로 전달되며,firewalld 에서는 처리되지 않습니다.
사전 정의된 영역은 /usr/lib/firewalld/zones/ 디렉터리에 저장되며 사용 가능한 모든 네트워크 인터페이스에 즉시 적용할 수 있습니다. 이러한 파일은 수정된 후에만 /etc/firewalld/zones/ 디렉토리에 복사됩니다. 다음 표에서는 사전 정의된 영역의 기본 설정을 설명합니다.
블록
들어오는 네트워크 연결은 IPv4IPv6 용으로 icmp6-adm-prohibited 에 대한 icmp-host-prohibited 메시지와 함께 거부됩니다. 시스템 내에서 시작된 네트워크 연결만 가능합니다.
dmz
내부 네트워크에 대한 제한된 액세스 권한으로 공개적으로 액세스할 수 있는 내구성 있는 영역의 컴퓨터의 경우. 선택한 들어오는 연결만 허용됩니다.
drop
들어오는 모든 네트워크 패킷은 알림 없이 삭제됩니다. 발신 네트워크 연결만 가능합니다.
external
특히 라우터의 경우 마스커레이딩이 활성화된 외부 네트워크에서 사용합니다. 네트워크의 다른 컴퓨터를 신뢰하지 않고 컴퓨터를 손상시키지 않습니다. 선택한 들어오는 연결만 허용됩니다.
대부분 네트워크에있는 다른 컴퓨터를 신뢰할 때 집에서 사용하기 위해. 선택한 들어오는 연결만 허용됩니다.
internal
내부 네트워크에서 사용되는 경우 네트워크의 다른 컴퓨터를 대부분 신뢰할 수 있습니다. 선택한 들어오는 연결만 허용됩니다.
공개
네트워크의 다른 컴퓨터를 신뢰하지 않는 공공 영역에서 사용하기 위해. 선택한 들어오는 연결만 허용됩니다.
trusted
모든 네트워크 연결이 허용됩니다.
work
네트워크의 다른 컴퓨터를 대부분 신뢰할 수 있는 작업에서 사용하기 위해 선택한 들어오는 연결만 허용됩니다.
이러한 영역 중 하나는 기본 영역으로 설정됩니다. NetworkManager 에 인터페이스 연결이 추가되면 기본 영역에 할당됩니다. 설치 시 firewalld 의 기본 영역이 공개 영역으로 설정됩니다. 기본 영역을 변경할 수 있습니다.
참고
네트워크 영역 이름은 자체 설명으로 선택되었으며 사용자가 합리적인 결정을 신속하게 내릴 수 있도록 선택되었습니다. 보안 문제를 방지하려면 기본 영역 구성을 검토하고 요구 사항 및 위험 평가에 따라 불필요한 서비스를 비활성화합니다.

5.1.2. 사전 정의된 서비스

서비스는 로컬 포트, 프로토콜, 소스 포트 및 대상 목록 및 서비스가 활성화된 경우 방화벽 도우미 모듈 목록일 수 있습니다. 서비스를 사용하면 모든 것을 하나씩 설정하는 대신 단일 단계에서 포트 열기, 프로토콜 정의, 패킷 전달 활성화 등의 여러 작업을 수행할 수 있으므로 사용자가 시간을 절약할 수 있습니다.
서비스 구성 옵션 및 일반 파일 정보는 firewalld.service(5) 도움말 페이지에 설명되어 있습니다. 서비스는 service-name.xml 형식으로 이름이 지정된 개별 XML 구성 파일을 통해 지정됩니다. 프로토콜 이름은 firewalld 에서 서비스 또는 애플리케이션 이름보다 우선합니다.

5.1.3. 런타임 및 영구 설정

런타임 모드에서 커밋된 모든 변경 사항은 firewalld 가 실행되는 동안만 적용됩니다. firewalld 를 다시 시작하면 설정이 영구 값으로 되돌아갑니다.
재부팅 후에도 변경 사항을 적용하려면 --permanent 옵션을 사용하여 다시 적용합니다. 또는 firewalld 가 실행되는 동안 변경 사항을 영구적으로 만들려면 --runtime-to-permanent firewall-cmd 옵션을 사용합니다.
firewalld--permanent 옵션만 사용하여 실행되는 동안 규칙을 설정하는 경우 firewalld 를 다시 시작하기 전에 적용되지 않습니다. 그러나 firewalld 를 다시 시작하면 모든 열려 있는 포트를 종료하고 네트워킹 트래픽을 중지합니다.

5.1.4. CLI를 사용하여 런타임 및 영구 구성에서 설정 수정

CLI를 사용하면 두 모드에서 동시에 방화벽 설정을 수정하지 않습니다. 런타임 또는 영구 모드만 수정합니다. 영구 모드에서 방화벽 설정을 수정하려면 firewall-cmd 명령과 함께 --permanent 옵션을 사용합니다.
~]# firewall-cmd --permanent <other options>
이 옵션이 없으면 명령은 런타임 모드를 수정합니다.
두 모드의 설정을 변경하려면 다음 두 가지 방법을 사용할 수 있습니다.
  1. 런타임 설정을 변경한 후 다음과 같이 영구적으로 설정합니다.
    ~]# firewall-cmd <other options>
    ~]# firewall-cmd --runtime-to-permanent
  2. 영구 설정을 설정하고 설정을 런타임 모드로 다시 로드합니다.
    ~]# firewall-cmd --permanent <other options>
    ~]# firewall-cmd --reload
첫 번째 방법을 사용하면 영구 모드로 적용하기 전에 설정을 테스트할 수 있습니다.
참고
특히 원격 시스템에서는 잘못된 설정으로 인해 사용자가 시스템에서 잠길 수 없습니다. 이러한 상황을 방지하려면 --timeout 옵션을 사용합니다. 지정된 시간 후에 모든 변경 사항이 이전 상태로 되돌아갑니다. 이 옵션을 사용하면 --permanent 옵션이 제외됩니다.
예를 들어 SSH 서비스를 15분 동안 추가하려면 다음을 수행합니다.
~]# firewall-cmd --add-service=ssh --timeout 15m