23.5. firewalld 사용 및 구성
방화벽은 외부에서 원하지 않는 트래픽으로부터 시스템을 보호하는 방법입니다. 사용자는 방화벽 규칙 집합을 정의하여 호스트 시스템에서 들어오는 네트워크 트래픽을 제어할 수 있습니다. 이러한 규칙은 들어오는 트래픽을 정렬하고 차단하거나 통과하는 데 사용됩니다.
firewalld
는 D-Bus 인터페이스를 사용하여 사용자 지정 가능한 동적 방화벽을 제공하는 방화벽 서비스 데몬입니다. 동적이므로 규칙이 변경될 때마다 방화벽 데몬을 다시 시작할 필요 없이 규칙을 생성, 변경 및 삭제할 수 있습니다.
firewalld
를 사용하여 대부분의 일반적인 경우에 필요한 패킷 필터링을 구성할 수 있습니다. firewalld
가 시나리오를 다루지 않거나 규칙을 완전히 제어하려면 nftables
프레임워크를 사용합니다.
firewalld
는 영역, 정책 및 서비스의 개념을 사용하여 트래픽 관리를 단순화합니다. 영역은 네트워크를 논리적으로 분리합니다. 네트워크 인터페이스 및 소스를 영역에 할당할 수 있습니다. 정책은 영역 간 트래픽 흐름을 거부하거나 허용하는 데 사용됩니다. 방화벽 서비스는 들어오는 트래픽을 특정 서비스에 대해 허용하는 데 필요한 모든 설정을 처리하는 사전 정의된 규칙이며 영역 내에 적용됩니다.
서비스는 네트워크 통신에 하나 이상의 포트 또는 주소를 사용합니다. 방화벽은 포트를 기반으로 통신을 필터링합니다. 서비스에 대한 네트워크 트래픽을 허용하려면 포트를 열어야 합니다. firewalld
는 명시적으로 open으로 설정되지 않은 포트의 모든 트래픽을 차단합니다. trusted와 같은 일부 영역에서 기본적으로 모든 트래픽을 허용합니다.
firewalld
는 별도의 런타임 및 영구 구성을 유지 관리합니다. 이를 통해 런타임 전용 변경 사항이 허용됩니다. firewalld
를 다시 로드하거나 다시 시작한 후에는 런타임 구성이 유지되지 않습니다. 시작 시 영구 구성에서 채워집니다.
nftables
백엔드가 있는 firewalld
는 --direct
옵션을 사용하여 사용자 정의 nftables
규칙을 firewalld
에 전달하는 것을 지원하지 않습니다.
23.5.1. firewalld, nftables 또는 iptables를 사용하는 경우 링크 복사링크가 클립보드에 복사되었습니다!
RHEL 8에서는 시나리오에 따라 다음 패킷 필터링 유틸리티를 사용할 수 있습니다.
-
firewalld
:firewalld
유틸리티는 일반적인 사용 사례에 대한 방화벽 구성을 간소화합니다. -
nftables
:nftables
유틸리티를 사용하여 전체 네트워크에 대해 과 같이 복잡하고 성능이 중요한 방화벽을 설정합니다. -
iptables
: Red Hat Enterprise Linux의iptables
유틸리티는기존 백엔드 대신
를 사용합니다.nf_tables
커널 APInf_tables
API는iptables
명령을 사용하는 스크립트가 Red Hat Enterprise Linux에서 계속 작동하도록 이전 버전과의 호환성을 제공합니다. 새 방화벽 스크립트의 경우nftables
를 사용합니다.
다른 방화벽 관련 서비스(firewalld
,nftables
또는 iptables
)가 서로 영향을 미치지 않도록 하려면 RHEL 호스트에서 해당 서비스 중 하나만 실행하고 다른 서비스를 비활성화합니다.
23.5.2. 방화벽 영역 링크 복사링크가 클립보드에 복사되었습니다!
firewalld
유틸리티를 사용하여 해당 네트워크 내의 인터페이스 및 트래픽과 함께 있는 신뢰 수준에 따라 네트워크를 다른 영역으로 분리할 수 있습니다. 연결은 하나의 영역의 일부일 수 있지만 많은 네트워크 연결에 해당 영역을 사용할 수 있습니다.
firewalld
는 영역과 관련하여 엄격한 원칙을 따릅니다.
- 트래픽 수신은 하나의 영역만 포함됩니다.
- 트래픽은 하나의 영역만 송신합니다.
- 영역은 신뢰 수준을 정의합니다.
- 기본적으로 Intrazone 트래픽(동일한 영역 내)이 허용됩니다.
- 영역 간 트래픽은 기본적으로 거부됩니다.
규칙 4와 5는 원칙 3의 결과입니다.
원칙 4는 영역 옵션 --remove-forward
를 통해 구성할 수 있습니다. 원칙 5는 새로운 정책을 추가하여 구성할 수 있습니다.
NetworkManager
는 인터페이스 영역의 firewalld
에 알립니다. 다음 유틸리티를 사용하여 인터페이스에 영역을 할당할 수 있습니다.
-
NetworkManager
-
firewall-config
utility -
firewall-cmd
utility - RHEL 웹 콘솔
RHEL 웹 콘솔, firewall-config
및 firewall-cmd
는 적절한 NetworkManager
구성 파일만 편집할 수 있습니다. 웹 콘솔, firewall-cmd
또는 firewall-config
를 사용하여 인터페이스 영역을 변경하면 요청이 NetworkManager
로 전달되고firewalld
에서 처리되지 않습니다.
/usr/lib/firewalld/zones/
디렉터리는 사전 정의된 영역을 저장하고 사용 가능한 네트워크 인터페이스에 즉시 적용할 수 있습니다. 이러한 파일은 수정된 후에만 /etc/firewalld/zones/
디렉토리에 복사됩니다. 사전 정의된 영역의 기본 설정은 다음과 같습니다.
블록
-
적합한 대상: 들어오는 네트워크 연결은
IPv4
및 IPv6-adm-prohibited에 대한 icmp-host-prohibited 메시지와 함께 거부됩니다. - 허용: 시스템 내에서 시작된 네트워크 연결만 수행합니다.
-
적합한 대상: 들어오는 네트워크 연결은
dmz
- 적합한 대상: DMZ의 컴퓨터는 내부 네트워크에 대한 액세스 제한으로 공개적으로 액세스할 수 있습니다.
- 허용: 선택한 연결만 제공됩니다.
drop
적합한 대상: 들어오는 네트워크 패킷은 알림 없이 삭제됩니다.
- 허용: 나가는 네트워크 연결만 가능합니다.
external
- 적합한 대상: 특히 라우터에 대해 마스커레이딩이 활성화된 외부 네트워크입니다. 네트워크에서 다른 컴퓨터를 신뢰하지 않는 경우입니다.
- 허용: 선택한 연결만 제공됩니다.
홈
- 적합한 대상: 네트워크상의 다른 컴퓨터를 주로 신뢰하는 홈 환경.
- 허용: 선택한 연결만 제공됩니다.
internal
- 적합한 대상: 네트워크에 있는 다른 컴퓨터를 주로 신뢰하는 내부 네트워크입니다.
- 허용: 선택한 연결만 제공됩니다.
public
- 적합한 대상: 네트워크에서 다른 컴퓨터를 신뢰하지 않는 공용 영역입니다.
- 허용: 선택한 연결만 제공됩니다.
신뢰할 수 있는
- 허용: 모든 네트워크 연결
작업
적합한 대상: 네트워크에 있는 다른 컴퓨터를 주로 신뢰하는 작업 환경.
- 허용: 선택한 연결만 제공됩니다.
이러한 영역 중 하나는 기본 영역으로 설정됩니다. NetworkManager
에 인터페이스 연결이 추가되면 기본 영역에 할당됩니다. 설치 시 firewalld
의 기본 영역은 퍼블릭
영역입니다. 기본 영역을 변경할 수 있습니다.
네트워크 영역 이름을 자체 설명하여 사용자가 신속하게 이해할 수 있도록 합니다.
보안 문제를 방지하려면 기본 영역 구성을 검토하고 요구 사항 및 위험 평가에 따라 불필요한 서비스를 비활성화합니다.
23.5.3. 방화벽 정책 링크 복사링크가 클립보드에 복사되었습니다!
방화벽 정책은 원하는 네트워크 보안 상태를 지정합니다. 다양한 유형의 트래픽에 대해 수행할 규칙과 작업을 간략하게 설명합니다. 일반적으로 정책에는 다음 유형의 트래픽에 대한 규칙이 포함됩니다.
- 들어오는 트래픽
- 나가는 트래픽
- 전송 트래픽
- 특정 서비스 및 애플리케이션
- NAT(네트워크 주소 변환)
방화벽 정책은 방화벽 영역의 개념을 사용합니다. 각 영역은 허용되는 트래픽을 결정하는 특정 방화벽 규칙 세트와 연결됩니다. 정책은 상태 저장되지 않은 방식으로 방화벽 규칙을 적용합니다. 즉, 트래픽의 한 방향만 고려합니다. firewalld
의 상태 저장 필터링으로 인해 트래픽 반환 경로는 암시적으로 허용됩니다.
정책은 Ingress 영역 및 송신 영역과 연결됩니다. Ingress 영역은 트래픽이 시작된 위치(received)입니다. 송신 영역은 트래픽이 떠나는 위치입니다(sent).
정책에 정의된 방화벽 규칙은 방화벽 영역을 참조하여 여러 네트워크 인터페이스에 일관된 구성을 적용할 수 있습니다.
23.5.4. 방화벽 규칙 링크 복사링크가 클립보드에 복사되었습니다!
방화벽 규칙을 사용하여 네트워크 트래픽을 허용하거나 차단하는 특정 구성을 구현할 수 있습니다. 따라서 네트워크 트래픽 흐름을 제어하여 시스템을 보안 위협으로부터 보호할 수 있습니다.
방화벽 규칙은 일반적으로 다양한 속성을 기반으로 특정 기준을 정의합니다. 속성은 다음과 같습니다.
- 소스 IP 주소
- 대상 IP 주소
- 전송 프로토콜 (TCP, UDP, …)
- 포트
- 네트워크 인터페이스
firewalld
유틸리티는 방화벽 규칙을 영역(예: 공용
,내부
및 기타) 및 정책으로 구성합니다. 각 영역에는 특정 영역과 연결된 네트워크 인터페이스에 대한 트래픽 자유 수준을 결정하는 자체 규칙 세트가 있습니다.
23.5.5. 방화벽 직접 규칙 링크 복사링크가 클립보드에 복사되었습니다!
firewalld
서비스는 다음을 포함하여 규칙을 구성하는 여러 방법을 제공합니다.
- 일반 규칙
- 직접 규칙
이러한 차이점 중 하나는 각 방법이 기본 백엔드(iptables
또는 nftables
)와 상호 작용하는 방법입니다.
직접 규칙은 iptables
와 직접 상호 작용을 허용하는 고급 하위 수준 규칙입니다. firewalld
의 구조화된 영역 기반 관리를 바이패스하여 더 많은 제어 권한을 부여합니다. raw iptables
구문을 사용하여 firewall-cmd
명령을 사용하여 직접 규칙을 수동으로 정의합니다. 예를 들어 firewall-cmd --direct --add-rule ipv4는 INPUT 0 -s 198.51.100.1 -j DROP
. 이 명령은 198.51.100.1 소스 IP 주소에서 트래픽을 삭제하는 iptables
규칙을 추가합니다.
그러나 직접 규칙을 사용하면 단점도 있습니다. 특히 nftables
가 기본 방화벽 백엔드인 경우입니다. 예를 들면 다음과 같습니다.
-
직접 규칙은 유지 관리하기가 더 어렵고
nftables
기반firewalld
구성과 충돌할 수 있습니다. -
직접 규칙은 원시 표현식 및 stateful 오브젝트와 같은
nftables
에서 찾을 수 있는 고급 기능을 지원하지 않습니다. -
직접적인 규칙은 미래 지향적인 것이 아닙니다.
iptables
구성 요소는 더 이상 사용되지 않으며 결국 RHEL에서 제거됩니다.
이전 이유로 firewalld
직접 규칙을 nftables
로 교체할 수 있습니다. 자세한 내용을 보려면 Knowledgebase 솔루션에서 firewalld 직접 규칙을 nftables로 교체하는 방법을 검토하십시오.
23.5.6. 사전 정의된 firewalld 서비스 링크 복사링크가 클립보드에 복사되었습니다!
사전 정의된 firewalld
서비스는 하위 수준 방화벽 규칙에 대해 기본 추상화 계층을 제공합니다. SSH 또는 HTTP와 같은 일반적으로 사용되는 네트워크 서비스를 해당 포트 및 프로토콜에 매핑하여 수행할 수 있습니다. 매번 수동으로 지정하는 대신 이름이 사전 정의된 서비스를 참조할 수 있습니다. 이를 통해 방화벽 관리가 간소화되고 오류가 발생하기 쉽고 직관적입니다.
사용 가능한 사전 정의된 서비스를 보려면 다음을 수행합니다.
firewall-cmd --get-services
# firewall-cmd --get-services RH-Satellite-6 RH-Satellite-6-capsule afp amanda-client amanda-k5-client amqp amqps apcupsd audit ausweisapp2 bacula bacula-client bareos-director bareos-filedaemon bareos-storage bb bgp bitcoin bitcoin-rpc bitcoin-testnet bitcoin-testnet-rpc bittorrent-lsd ceph ceph-exporter ceph-mon cfengine checkmk-agent cockpit collectd condor-collector cratedb ctdb dds...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 사전 정의된 특정 서비스를 추가로 검사하려면 다음을 수행합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 예제 출력은
RH-Satellite-6
사전 정의된 서비스가 포트 5000/tcp 5646-5647/tcp 5671/tcp 8000/tcp 8080/tcp 9090/tcp에서 수신 대기함을 보여줍니다. 또한RH-Satellite-6
는 사전 정의된 다른 서비스의 규칙을 상속합니다. 이 경우에는foreman입니다.
사전 정의된 각 서비스는 /usr/lib/firewalld/services/
디렉터리에 이름이 동일한 XML 파일로 저장됩니다.
23.5.7. firewalld 영역 작업 링크 복사링크가 클립보드에 복사되었습니다!
영역은 들어오는 트래픽을 보다 투명하게 관리하는 개념을 나타냅니다. 영역은 네트워킹 인터페이스에 연결되거나 다양한 소스 주소가 할당됩니다. 각 영역에 대해 개별적으로 방화벽 규칙을 관리하므로 복잡한 방화벽 설정을 정의하고 트래픽에 적용할 수 있습니다.
23.5.7.1. 보안을 강화하기 위해 특정 영역에 대한 방화벽 설정 사용자 정의 링크 복사링크가 클립보드에 복사되었습니다!
방화벽 설정을 수정하고 특정 네트워크 인터페이스 또는 특정 방화벽 영역과 연결하여 네트워크 보안을 강화할 수 있습니다. 영역에 대한 세분화된 규칙 및 제한을 정의하면 원하는 보안 수준에 따라 인바운드 및 아웃바운드 트래픽을 제어할 수 있습니다.
예를 들어 다음과 같은 이점을 얻을 수 있습니다.
- 민감한 데이터 보호
- 무단 액세스 방지
- 잠재적인 네트워크 위협 완화
사전 요구 사항
-
firewalld
서비스가 실행 중입니다.
프로세스
사용 가능한 방화벽 영역을 나열합니다.
firewall-cmd --get-zones
# firewall-cmd --get-zones
Copy to Clipboard Copied! Toggle word wrap Toggle overflow firewall-cmd --get-zones
명령은 시스템에서 사용 가능한 모든 영역을 표시하지만 특정 영역에 대한 세부 정보는 표시되지 않습니다. 모든 영역에 대한 자세한 정보를 보려면firewall-cmd --list-all-zones
명령을 사용합니다.- 이 구성에 사용할 영역을 선택합니다.
선택한 영역에 대한 방화벽 설정을 수정합니다. 예를 들어
SSH
서비스를 허용하고ftp
서비스를 제거하려면 다음을 수행합니다.firewall-cmd --add-service=ssh --zone=<your_chosen_zone> firewall-cmd --remove-service=ftp --zone=<same_chosen_zone>
# firewall-cmd --add-service=ssh --zone=<your_chosen_zone> # firewall-cmd --remove-service=ftp --zone=<same_chosen_zone>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 방화벽 영역에 네트워크 인터페이스를 할당합니다.
사용 가능한 네트워크 인터페이스를 나열합니다.
firewall-cmd --get-active-zones
# firewall-cmd --get-active-zones
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 영역의 작업은 해당 구성과 일치하는 네트워크 인터페이스 또는 소스 주소 범위가 있는지에 따라 결정됩니다. 기본 영역은 분류되지 않은 트래픽에 대해 활성 상태이지만 트래픽이 규칙과 일치하지 않는 경우 항상 활성 상태인 것은 아닙니다.
선택한 영역에 네트워크 인터페이스를 할당합니다.
firewall-cmd --zone=<your_chosen_zone> --change-interface=<interface_name> --permanent
# firewall-cmd --zone=<your_chosen_zone> --change-interface=<interface_name> --permanent
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 영역에 네트워크 인터페이스를 할당하는 것은 특정 인터페이스(물리적 또는 가상)의 모든 트래픽에 일관된 방화벽 설정을 적용하는 데 더 적합합니다.
firewall-cmd
명령을--permanent
옵션과 함께 사용하는 경우 종종 NetworkManager 연결 프로필을 업데이트하여 방화벽 구성을 영구적으로 변경해야 합니다.firewalld
와 NetworkManager 간의 통합은 일관된 네트워크 및 방화벽 설정을 보장합니다.
검증
선택한 영역에 대한 업데이트된 설정을 표시합니다.
firewall-cmd --zone=<your_chosen_zone> --list-all
# firewall-cmd --zone=<your_chosen_zone> --list-all
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 명령 출력은 할당된 서비스, 네트워크 인터페이스 및 네트워크 연결(소스)을 포함한 모든 영역 설정을 표시합니다.
23.5.7.2. 기본 영역 변경 링크 복사링크가 클립보드에 복사되었습니다!
시스템 관리자는 구성 파일의 네트워킹 인터페이스에 영역을 할당합니다. 인터페이스가 특정 영역에 할당되지 않은 경우 기본 영역에 할당됩니다. firewalld
서비스를 다시 시작할 때마다 firewalld
는 기본 영역의 설정을 로드하고 활성화합니다. 다른 모든 영역에 대한 설정은 유지되며 사용할 준비가 되어 있습니다.
일반적으로 영역은 NetworkManager 연결 프로필의 connection.zone
설정에 따라 NetworkManager에 의해 인터페이스에 할당됩니다. 또한 재부팅 후 NetworkManager는 해당 영역의 "활성화" 할당을 관리합니다.
사전 요구 사항
-
firewalld
서비스가 실행 중입니다.
프로세스
기본 영역을 설정하려면 다음을 수행합니다.
현재 기본 영역을 표시합니다.
firewall-cmd --get-default-zone
# firewall-cmd --get-default-zone
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 새 기본 영역을 설정합니다.
firewall-cmd --set-default-zone <zone_name>
# firewall-cmd --set-default-zone <zone_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고이 절차 후 설정은
--permanent
옵션 없이 영구적인 설정입니다.
23.5.7.3. 영역에 네트워크 인터페이스 할당 링크 복사링크가 클립보드에 복사되었습니다!
다양한 영역에 대한 다양한 규칙 세트를 정의한 다음, 사용 중인 인터페이스의 영역을 변경하여 설정을 빠르게 변경할 수 있습니다. 여러 인터페이스를 사용하면 각 인터페이스에 대해 특정 영역을 설정하여 통과하는 트래픽을 구분할 수 있습니다.
프로세스
특정 인터페이스에 영역을 할당하려면 다음을 수행합니다.
활성 영역과 연결된 인터페이스를 나열합니다.
firewall-cmd --get-active-zones
# firewall-cmd --get-active-zones
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 인터페이스를 다른 영역에 할당합니다.
firewall-cmd --zone=zone_name --change-interface=interface_name --permanent
# firewall-cmd --zone=zone_name --change-interface=interface_name --permanent
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
23.5.7.4. 소스 추가 링크 복사링크가 클립보드에 복사되었습니다!
들어오는 트래픽을 특정 영역으로 라우팅하려면 해당 영역에 소스를 추가합니다. 소스는 CIDR(Classless inter-domain routing) 표기법의 IP 주소 또는 IP 마스크일 수 있습니다.
네트워크 범위가 겹치는 여러 영역을 추가하는 경우 영역 이름으로 영숫자로 정렬되며 첫 번째 영역만 고려됩니다.
현재 영역에서 소스를 설정하려면 다음을 수행합니다.
firewall-cmd --add-source=<source>
# firewall-cmd --add-source=<source>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 특정 영역의 소스 IP 주소를 설정하려면 다음을 수행합니다.
firewall-cmd --zone=zone-name --add-source=<source>
# firewall-cmd --zone=zone-name --add-source=<source>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
다음 절차에서는 신뢰할 수 있는
영역의 192.168.2.15 에서 들어오는 모든 트래픽을 허용합니다.
프로세스
사용 가능한 모든 영역을 나열합니다.
firewall-cmd --get-zones
# firewall-cmd --get-zones
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 영구 모드에서 신뢰할 수 있는 영역에 소스 IP를 추가합니다.
firewall-cmd --zone=trusted --add-source=192.168.2.15
# firewall-cmd --zone=trusted --add-source=192.168.2.15
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 새 설정을 영구적으로 설정합니다.
firewall-cmd --runtime-to-permanent
# firewall-cmd --runtime-to-permanent
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
23.5.7.5. 소스 제거 링크 복사링크가 클립보드에 복사되었습니다!
영역에서 소스를 제거하면 소스에서 시작된 트래픽은 더 이상 해당 소스에 지정된 규칙을 통해 전달되지 않습니다. 대신 트래픽이 시작된 인터페이스와 연결된 영역의 규칙 및 설정으로 대체되거나 기본 영역으로 이동합니다.
프로세스
필수 영역에 허용되는 소스를 나열합니다.
firewall-cmd --zone=zone-name --list-sources
# firewall-cmd --zone=zone-name --list-sources
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 영역에서 소스를 영구적으로 제거합니다.
firewall-cmd --zone=zone-name --remove-source=<source>
# firewall-cmd --zone=zone-name --remove-source=<source>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 새 설정을 영구적으로 설정합니다.
firewall-cmd --runtime-to-permanent
# firewall-cmd --runtime-to-permanent
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
23.5.7.6. nmcli를 사용하여 연결에 영역 할당 링크 복사링크가 클립보드에 복사되었습니다!
nmcli
유틸리티를 사용하여 NetworkManager
연결에 firewalld
영역을 추가할 수 있습니다.
프로세스
NetworkManager
연결 프로필에 영역을 할당합니다.nmcli connection modify profile connection.zone zone_name
# nmcli connection modify profile connection.zone zone_name
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 연결을 활성화합니다.
nmcli connection up profile
# nmcli connection up profile
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
23.5.7.7. ifcfg 파일에서 네트워크 연결에 수동으로 영역을 할당 링크 복사링크가 클립보드에 복사되었습니다!
NetworkManager 에서 연결을 관리하는 경우 해당 연결을 사용하는 영역을 알고 있어야 합니다. 모든 네트워크 연결 프로필의 경우 이동식 장치가 있는 컴퓨터의 위치에 따라 다양한 방화벽 설정의 유연성을 제공하는 영역을 지정할 수 있습니다. 따라서 회사 또는 집과 같은 다른 위치에 대해 영역 및 설정을 지정할 수 있습니다.
프로세스
연결 영역을 설정하려면
/etc/sysconfig/network-scripts/ifcfg-connection_name
파일을 편집하고 이 연결에 영역을 할당하는 행을 추가합니다.ZONE=zone_name
ZONE=zone_name
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
23.5.7.8. 새 영역 생성 링크 복사링크가 클립보드에 복사되었습니다!
사용자 지정 영역을 사용하려면 새 영역을 생성하고 사전 정의된 영역과 마찬가지로 사용합니다. 새 영역에는 --permanent
옵션이 필요합니다. 그러지 않으면 명령이 작동하지 않습니다.
사전 요구 사항
-
firewalld
서비스가 실행 중입니다.
프로세스
새 영역을 생성합니다.
firewall-cmd --permanent --new-zone=zone-name
# firewall-cmd --permanent --new-zone=zone-name
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 새 영역을 사용할 수 있도록 설정합니다.
firewall-cmd --reload
# firewall-cmd --reload
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 명령은 이미 실행 중인 네트워크 서비스를 중단하지 않고 최근 방화벽 구성에 변경 사항을 적용합니다.
검증
새 영역이 영구 설정에 추가되었는지 확인합니다.
firewall-cmd --get-zones --permanent
# firewall-cmd --get-zones --permanent
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
23.5.7.9. 웹 콘솔을 사용하여 영역 활성화 링크 복사링크가 클립보드에 복사되었습니다!
RHEL 웹 콘솔을 통해 특정 인터페이스 또는 IP 주소 범위에 사전 정의된 기존 방화벽 영역을 적용할 수 있습니다.
사전 요구 사항
- RHEL 8 웹 콘솔을 설치했습니다.
- cockpit 서비스를 활성화했습니다.
사용자 계정이 웹 콘솔에 로그인할 수 있습니다.
자세한 내용은 웹 콘솔 설치 및 활성화를 참조하십시오.
프로세스
RHEL 8 웹 콘솔에 로그인합니다.
자세한 내용은 웹 콘솔에 로그인 을 참조하십시오.
- 네트워킹 을 클릭합니다.
- 방화벽 섹션에서 새 영역 추가 를 클릭합니다.
영역 추가 대화 상자의 신뢰 수준 옵션에서 영역을 선택합니다.
웹 콘솔은
firewalld
서비스에 사전 정의된 모든 영역을 표시합니다.- 인터페이스 부분에서 선택한 영역이 적용되는 인터페이스 또는 인터페이스를 선택합니다.
허용된 주소 부분에서 영역이 적용되는지 여부를 선택할 수 있습니다.
- 전체 서브넷
또는 다음 형식의 IP 주소 범위:
- 192.168.1.0
- 192.168.1.0/24
- 192.168.1.0/24, 192.168.1.0
검증
방화벽 섹션에서 구성을 확인합니다.
23.5.7.10. 웹 콘솔을 사용하여 영역 비활성화 링크 복사링크가 클립보드에 복사되었습니다!
웹 콘솔을 사용하여 방화벽 구성에서 방화벽 영역을 비활성화할 수 있습니다.
사전 요구 사항
- RHEL 8 웹 콘솔을 설치했습니다.
- cockpit 서비스를 활성화했습니다.
사용자 계정이 웹 콘솔에 로그인할 수 있습니다.
자세한 내용은 웹 콘솔 설치 및 활성화를 참조하십시오.
프로세스
RHEL 8 웹 콘솔에 로그인합니다.
자세한 내용은 웹 콘솔에 로그인 을 참조하십시오.
- 네트워킹 을 클릭합니다.
제거하려는 영역에서 옵션 아이콘을 클릭합니다.
- 삭제를 클릭합니다.
이제 영역이 비활성화되어 인터페이스에 영역에 구성된 열린 서비스 및 포트가 포함되지 않습니다.
23.5.7.11. 영역 대상을 사용하여 들어오는 트래픽에 대한 기본 동작 설정 링크 복사링크가 클립보드에 복사되었습니다!
모든 영역에 대해 추가로 지정되지 않은 들어오는 트래픽을 처리하는 기본 동작을 설정할 수 있습니다. 이러한 동작은 영역의 대상을 설정하여 정의됩니다. 4가지 옵션이 있습니다.
-
허용
: 특정 규칙에 의해 허용되지 않는 경우를 제외하고 들어오는 모든 패킷을 수락합니다. -
REJECT
: 특정 규칙에서 허용되는 패킷을 제외한 모든 들어오는 패킷을 거부합니다.firewalld
가 패킷을 거부하면 소스 시스템에 거부에 대한 정보가 표시됩니다. -
DROP
: 특정 규칙에서 허용되는 경우를 제외한 들어오는 모든 패킷을 삭제합니다.firewalld
가 패킷을 삭제하면 소스 시스템에 패킷 드롭에 대한 정보가 표시되지 않습니다. -
기본값
:REJECT
와 유사하지만 특정 시나리오에서 특별한 의미가 있습니다.
사전 요구 사항
-
firewalld
서비스가 실행 중입니다.
프로세스
영역의 대상을 설정하려면 다음을 수행합니다.
특정 영역에 대한 정보를 나열하여 기본 대상을 확인합니다.
firewall-cmd --zone=zone-name --list-all
# firewall-cmd --zone=zone-name --list-all
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 영역에 새 대상을 설정합니다.
firewall-cmd --permanent --zone=zone-name --set-target=<default|ACCEPT|REJECT|DROP>
# firewall-cmd --permanent --zone=zone-name --set-target=<default|ACCEPT|REJECT|DROP>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
23.5.7.12. IP 세트를 사용하여 허용 목록에 대한 동적 업데이트 구성 링크 복사링크가 클립보드에 복사되었습니다!
예측할 수 없는 조건에서도 IP 세트의 특정 IP 주소 또는 범위를 유연하게 허용하도록 거의 실시간 업데이트를 수행할 수 있습니다. 이러한 업데이트는 보안 위협 탐지 또는 네트워크 동작 변경과 같은 다양한 이벤트에 의해 트리거될 수 있습니다. 일반적으로 이러한 솔루션은 자동화를 활용하여 수동 작업을 줄이고 상황에 신속하게 대응하여 보안을 개선합니다.
사전 요구 사항
-
firewalld
서비스가 실행 중입니다.
절차
의미 있는 이름으로 IP 세트를 생성합니다.
firewall-cmd --permanent --new-ipset=allowlist --type=hash:ip
# firewall-cmd --permanent --new-ipset=allowlist --type=hash:ip
Copy to Clipboard Copied! Toggle word wrap Toggle overflow allowlist
라는 새 IP 세트에는 방화벽에서 허용할 IP 주소가 포함되어 있습니다.IP 세트에 동적 업데이트를 추가합니다.
firewall-cmd --permanent --ipset=allowlist --add-entry=198.51.100.10
# firewall-cmd --permanent --ipset=allowlist --add-entry=198.51.100.10
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 구성은 방화벽에서 네트워크 트래픽을 전달할 수 있는 새로 추가된 IP 주소로
허용 목록
IP 세트를 업데이트합니다.이전에 생성한 IP 세트를 참조하는 방화벽 규칙을 생성합니다.
firewall-cmd --permanent --zone=public --add-source=ipset:allowlist
# firewall-cmd --permanent --zone=public --add-source=ipset:allowlist
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 규칙이 없으면 IP 세트가 네트워크 트래픽에 영향을 미치지 않습니다. 기본 방화벽 정책이 우선합니다.
방화벽 구성을 다시 로드하여 변경 사항을 적용합니다.
firewall-cmd --reload
# firewall-cmd --reload
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
검증
모든 IP 세트를 나열합니다.
firewall-cmd --get-ipsets
# firewall-cmd --get-ipsets allowlist
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 활성 규칙을 나열합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 명령줄 출력의
소스
섹션에서는 특정 방화벽 영역에 대한 액세스 허용 또는 거부되는 트래픽(호스트, 인터페이스, IP 세트, 서브넷 등)에 대한 인사이트를 제공합니다. 이 경우허용 목록
IP 세트에 포함된 IP 주소는공용
영역의 방화벽을 통해 트래픽을 전달할 수 있습니다.IP 세트의 내용을 살펴봅니다.
cat /etc/firewalld/ipsets/allowlist.xml <?xml version="1.0" encoding="utf-8"?> <ipset type="hash:ip"> <entry>198.51.100.10</entry> </ipset>
# cat /etc/firewalld/ipsets/allowlist.xml <?xml version="1.0" encoding="utf-8"?> <ipset type="hash:ip"> <entry>198.51.100.10</entry> </ipset>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
다음 단계
-
스크립트 또는 보안 유틸리티를 사용하여 위협 정보 피드를 가져오고 이에 따라
허용 목록을
자동화된 방식으로 업데이트합니다.
23.5.8. firewalld를 사용하여 네트워크 트래픽 제어 링크 복사링크가 클립보드에 복사되었습니다!
firewalld
패키지는 사전 정의된 많은 서비스 파일을 설치하고 더 추가하거나 사용자 지정할 수 있습니다. 그런 다음 이러한 서비스 정의를 사용하여 사용하는 프로토콜과 포트 번호를 모르는 상태에서 서비스의 포트를 열거나 닫을 수 있습니다.
23.5.8.1. CLI를 사용하여 사전 정의된 서비스로 트래픽 제어 링크 복사링크가 클립보드에 복사되었습니다!
트래픽을 제어하는 가장 간단한 방법은 firewalld
에 사전 정의된 서비스를 추가하는 것입니다. 그러면 필요한 모든 포트가 열리고 서비스 정의 파일 에 따라 다른 설정을 수정합니다.
사전 요구 사항
-
firewalld
서비스가 실행 중입니다.
프로세스
firewalld
의 서비스가 아직 허용되지 않았는지 확인합니다.firewall-cmd --list-services
# firewall-cmd --list-services ssh dhcpv6-client
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 명령은 기본 영역에서 활성화된 서비스를 나열합니다.
firewalld
에서 사전 정의된 모든 서비스를 나열합니다.firewall-cmd --get-services
# firewall-cmd --get-services RH-Satellite-6 amanda-client amanda-k5-client bacula bacula-client bitcoin bitcoin-rpc bitcoin-testnet bitcoin-testnet-rpc ceph ceph-mon cfengine condor-collector ctdb dhcp dhcpv6 dhcpv6-client dns docker-registry ...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 명령은 기본 영역에 사용 가능한 서비스 목록을 표시합니다.
firewalld
에서 허용하는 서비스 목록에 서비스를 추가합니다.firewall-cmd --add-service=<service_name>
# firewall-cmd --add-service=<service_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 명령은 지정된 서비스를 기본 영역에 추가합니다.
새 설정을 영구적으로 설정합니다.
firewall-cmd --runtime-to-permanent
# firewall-cmd --runtime-to-permanent
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 명령은 이러한 런타임 변경 사항을 방화벽의 영구 구성에 적용합니다. 기본적으로 이러한 변경 사항은 기본 영역의 구성에 적용됩니다.
검증
모든 영구 방화벽 규칙을 나열합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 명령은 기본 방화벽 영역(
공용
)의 영구 방화벽 규칙을 사용하여 전체 구성을 표시합니다.firewalld
서비스의 영구 구성의 유효성을 확인합니다.firewall-cmd --check-config
# firewall-cmd --check-config success
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 영구 구성이 유효하지 않으면 명령에서 추가 세부 정보와 함께 오류를 반환합니다.
firewall-cmd --check-config
# firewall-cmd --check-config Error: INVALID_PROTOCOL: 'public.xml': 'tcpx' not from {'tcp'|'udp'|'sctp'|'dccp'}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 영구 구성 파일을 수동으로 검사하여 설정을 확인할 수도 있습니다. 기본 설정 파일은
/etc/firewalld/firewalld.conf
입니다. 영역별 구성 파일은/etc/firewalld/zones/
디렉터리에 있으며 정책은/etc/firewalld/policies/
디렉터리에 있습니다.
23.5.8.2. 웹 콘솔을 사용하여 방화벽에서 서비스 활성화 링크 복사링크가 클립보드에 복사되었습니다!
기본적으로 서비스는 기본 방화벽 영역에 추가됩니다. 더 많은 네트워크 인터페이스에서 방화벽 영역을 사용하는 경우 먼저 영역을 선택한 다음 포트로 서비스를 추가해야 합니다.
RHEL 8 웹 콘솔에는 사전 정의된 firewalld
서비스가 표시되고 활성 방화벽 영역에 추가할 수 있습니다.
RHEL 8 웹 콘솔은 firewalld 서비스를 구성합니다.
웹 콘솔은 웹 콘솔에 나열되지 않은 일반 firewalld
규칙을 허용하지 않습니다.
사전 요구 사항
- RHEL 8 웹 콘솔을 설치했습니다.
- cockpit 서비스를 활성화했습니다.
사용자 계정이 웹 콘솔에 로그인할 수 있습니다.
자세한 내용은 웹 콘솔 설치 및 활성화를 참조하십시오.
프로세스
RHEL 8 웹 콘솔에 로그인합니다.
자세한 내용은 웹 콘솔에 로그인 을 참조하십시오.
- 네트워킹 을 클릭합니다.
방화벽 섹션에서 서비스를 추가할 영역을 선택하고 서비스 추가 를 클릭합니다.
- 서비스 추가 대화 상자에서 방화벽에서 활성화할 서비스를 찾습니다.
시나리오에 따라 서비스를 활성화합니다.
- 서비스 추가를 클릭합니다.
이 시점에서 RHEL 8 웹 콘솔에 서비스가 영역의 서비스 목록에 표시됩니다.
23.5.8.3. 웹 콘솔을 사용하여 사용자 정의 포트 구성 링크 복사링크가 클립보드에 복사되었습니다!
RHEL 웹 콘솔을 통해 서비스에 대한 사용자 지정 포트를 구성할 수 있습니다.
사전 요구 사항
- RHEL 8 웹 콘솔을 설치했습니다.
- cockpit 서비스를 활성화했습니다.
사용자 계정이 웹 콘솔에 로그인할 수 있습니다.
자세한 내용은 웹 콘솔 설치 및 활성화를 참조하십시오.
-
firewalld
서비스가 실행 중입니다.
프로세스
RHEL 8 웹 콘솔에 로그인합니다.
자세한 내용은 웹 콘솔에 로그인 을 참조하십시오.
- 네트워킹 을 클릭합니다.
방화벽 섹션에서 사용자 지정 포트를 구성할 영역을 선택하고 서비스 추가 를 클릭합니다.
- 서비스 추가 대화 상자에서 라디오 버튼을 클릭합니다.
TCP 및 UDP 필드에서 예제에 따라 포트를 추가합니다. 다음 형식으로 포트를 추가할 수 있습니다.
- 22와 같은 포트 번호
- 5900-5910과 같은 포트 번호 범위
- nfs, rsync와 같은 별칭
참고각 필드에 여러 값을 추가할 수 있습니다. 값은 쉼표 없이 쉼표로 구분해야 합니다. 예를 들면 다음과 같습니다. 8080,8081,http
TCP filed에 포트 번호를 추가한 후, UDP 가 제출되었거나 둘 다되면 Name 필드에서 서비스 이름을 확인합니다.
Name 필드에는 이 포트가 예약된 서비스 이름이 표시됩니다. 이 포트를 자유롭게 사용할 수 있고 이 포트에서 서버가 통신할 필요가 없는 경우 이름을 다시 작성할 수 있습니다.
- 이름 필드에 정의된 포트를 포함한 서비스의 이름을 추가합니다.
설정을 확인하려면 방화벽 페이지로 이동하여 영역의 서비스 목록에서 서비스를 찾습니다.
23.5.9. 영역 간에 전달된 트래픽 필터링 링크 복사링크가 클립보드에 복사되었습니다!
firewalld
를 사용하면 서로 다른 firewalld
영역 간의 네트워크 데이터 흐름을 제어할 수 있습니다. 규칙과 정책을 정의하면 이러한 영역 간에 이동할 때 트래픽이 허용되거나 차단되는 방법을 관리할 수 있습니다.
정책 오브젝트 기능은 firewalld
에서 전달 및 출력 필터링 기능을 제공합니다. firewalld
를 사용하여 다른 영역 간 트래픽을 필터링하여 로컬 호스트 VM에 대한 액세스를 통해 호스트를 연결할 수 있습니다.
23.5.9.1. 정책 오브젝트와 영역 간의 관계 링크 복사링크가 클립보드에 복사되었습니다!
정책 오브젝트를 사용하면 사용자가 서비스, 포트 및 리치 규칙과 같은 firewalld 기본 기능을 정책에 연결할 수 있습니다. 상태 저장 및 단방향 방식으로 영역 간에 통과하는 트래픽에 정책 오브젝트를 적용할 수 있습니다.
firewall-cmd --permanent --new-policy myOutputPolicy firewall-cmd --permanent --policy myOutputPolicy --add-ingress-zone HOST firewall-cmd --permanent --policy myOutputPolicy --add-egress-zone ANY
# firewall-cmd --permanent --new-policy myOutputPolicy
# firewall-cmd --permanent --policy myOutputPolicy --add-ingress-zone HOST
# firewall-cmd --permanent --policy myOutputPolicy --add-egress-zone ANY
HOST
및 ANY
는 수신 및 송신 영역 목록에 사용되는 심볼릭 영역입니다.
-
HOST
심볼릭 영역을 사용하면 에서 시작되는 트래픽에 대한 정책이 허용되거나 firewalld를 실행하는 호스트의 대상이 있습니다. -
ANY
심볼릭 영역은 현재 및 향후 모든 영역에 정책을 적용합니다.ANY
심볼릭 영역은 모든 영역의 와일드카드 역할을 합니다.
23.5.9.2. 우선순위를 사용하여 정책 정렬 링크 복사링크가 클립보드에 복사되었습니다!
여러 정책을 동일한 트래픽 집합에 적용할 수 있으므로 적용할 수 있는 정책에 대한 우선 순위 순서를 생성하는 데 우선순위를 사용해야 합니다.
정책을 정렬할 우선 순위를 설정하려면 다음을 수행합니다.
firewall-cmd --permanent --policy mypolicy --set-priority -500
# firewall-cmd --permanent --policy mypolicy --set-priority -500
위의 예에서 -500 은 우선 순위가 낮지만 우선 순위가 높습니다. 따라서 -500은 -100 이전에 실행됩니다.
낮은 숫자 우선순위 값은 우선순위가 높고 먼저 적용됩니다.
23.5.9.3. 정책 오브젝트를 사용하여 로컬 호스트 컨테이너와 호스트에 물리적으로 연결된 네트워크 간의 트래픽을 필터링 링크 복사링크가 클립보드에 복사되었습니다!
정책 오브젝트 기능을 사용하면 사용자가 Podman과 firewalld 영역 간의 트래픽을 필터링할 수 있습니다.
Red Hat은 기본적으로 모든 트래픽을 차단하고 Podman 유틸리티에 필요한 선택적 서비스를 여는 것이 좋습니다.
절차
새 방화벽 정책을 생성합니다.
firewall-cmd --permanent --new-policy podmanToAny
# firewall-cmd --permanent --new-policy podmanToAny
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Podman에서 다른 영역으로의 모든 트래픽을 차단하고 Podman에서 필요한 서비스만 허용합니다.
firewall-cmd --permanent --policy podmanToAny --set-target REJECT firewall-cmd --permanent --policy podmanToAny --add-service dhcp firewall-cmd --permanent --policy podmanToAny --add-service dns firewall-cmd --permanent --policy podmanToAny --add-service https
# firewall-cmd --permanent --policy podmanToAny --set-target REJECT # firewall-cmd --permanent --policy podmanToAny --add-service dhcp # firewall-cmd --permanent --policy podmanToAny --add-service dns # firewall-cmd --permanent --policy podmanToAny --add-service https
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 새 Podman 영역을 생성합니다.
firewall-cmd --permanent --new-zone=podman
# firewall-cmd --permanent --new-zone=podman
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 정책의 수신 영역을 정의합니다.
firewall-cmd --permanent --policy podmanToHost --add-ingress-zone podman
# firewall-cmd --permanent --policy podmanToHost --add-ingress-zone podman
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다른 모든 영역에 대한 송신 영역을 정의합니다.
firewall-cmd --permanent --policy podmanToHost --add-egress-zone ANY
# firewall-cmd --permanent --policy podmanToHost --add-egress-zone ANY
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 송신 영역을 ANY로 설정하면 Podman에서 다른 영역으로 필터링합니다. 호스트에 필터링하려면 송신 영역을 HOST로 설정합니다.
firewalld 서비스를 다시 시작합니다.
systemctl restart firewalld
# systemctl restart firewalld
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
검증
Podman 방화벽 정책을 다른 영역에 확인합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
23.5.9.4. 정책 오브젝트의 기본 대상 설정 링크 복사링크가 클립보드에 복사되었습니다!
정책에 --set-target 옵션을 지정할 수 있습니다. 다음 대상을 사용할 수 있습니다.
-
ACCEPT
- 패킷을 수락 -
DROP
- 원하지 않는 패킷을 삭제합니다. -
REJECT
- ICMP 응답을 사용하여 원하지 않는 패킷을 거부 CONTINUE
(기본값) - 패킷에는 다음 정책 및 영역의 규칙이 적용됩니다.firewall-cmd --permanent --policy mypolicy --set-target CONTINUE
# firewall-cmd --permanent --policy mypolicy --set-target CONTINUE
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
검증
정책에 대한 정보 확인
firewall-cmd --info-policy mypolicy
# firewall-cmd --info-policy mypolicy
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
23.5.10. firewalld를 사용하여 NAT 구성 링크 복사링크가 클립보드에 복사되었습니다!
firewalld
를 사용하면 다음 NAT(네트워크 주소 변환) 유형을 구성할 수 있습니다.
- 마스커레이딩
- 대상 NAT(DNAT)
- 리디렉션
23.5.10.1. 네트워크 주소 변환 유형 링크 복사링크가 클립보드에 복사되었습니다!
다음은 다양한 NAT(네트워크 주소 변환) 유형입니다.
- 마스커레이딩
이러한 NAT 유형 중 하나를 사용하여 패킷의 소스 IP 주소를 변경합니다. 예를 들어, 인터넷 서비스 공급자(ISP)는
10.0.0.0/8
과 같은 개인 IP 범위를 라우팅하지 않습니다. 네트워크에서 개인 IP 범위를 사용하고 사용자가 인터넷의 서버에 연결할 수 있어야 하는 경우 이러한 범위의 패킷의 소스 IP 주소를 공용 IP 주소에 매핑합니다.마스커레이딩은 나가는 인터페이스의 IP 주소를 자동으로 사용합니다. 따라서 나가는 인터페이스에서 동적 IP 주소를 사용하는 경우 마스커레이딩을 사용합니다.
- 대상 NAT(DNAT)
- 이 NAT 유형을 사용하여 들어오는 패킷의 대상 주소와 포트를 다시 작성합니다. 예를 들어 웹 서버가 개인 IP 범위의 IP 주소를 사용하므로 인터넷에서 직접 액세스할 수 없는 경우 라우터에 DNAT 규칙을 설정하여 수신 트래픽을 이 서버로 리디렉션할 수 있습니다.
- 리디렉션
- 이 유형은 패킷을 로컬 시스템의 다른 포트로 리디렉션하는 특수한 DNAT의 경우입니다. 예를 들어 서비스가 표준 포트와 다른 포트에서 실행되는 경우 표준 포트에서 들어오는 트래픽을 이 특정 포트로 리디렉션할 수 있습니다.
23.5.10.2. IP 주소 마스커레이딩 구성 링크 복사링크가 클립보드에 복사되었습니다!
시스템에서 IP 마스커레이딩을 활성화할 수 있습니다. IP 마스커레이딩은 인터넷에 액세스할 때 게이트웨이 뒤에 있는 개별 머신을 숨깁니다.
절차
IP 마스커레이드가 활성화되어 있는지 확인하려면 (예:
외부
영역의 경우) 다음 명령을root
로 입력합니다.firewall-cmd --zone=external --query-masquerade
# firewall-cmd --zone=external --query-masquerade
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 명령은 활성화된 경우 종료 상태
0
으로yes
를 출력합니다. 그렇지 않으면 종료 상태1
로no
를 출력합니다.영역을
생략하면 기본 영역이 사용됩니다.IP 마스커레이딩을 사용하려면
root
로 다음 명령을 입력합니다.firewall-cmd --zone=external --add-masquerade
# firewall-cmd --zone=external --add-masquerade
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
이 설정을 영구적으로 설정하려면 명령에
--permanent
옵션을 전달합니다. IP 마스커레이딩을 비활성화하려면
root
로 다음 명령을 입력합니다.firewall-cmd --zone=external --remove-masquerade
# firewall-cmd --zone=external --remove-masquerade
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 설정을 영구적으로 설정하려면 명령에
--permanent
옵션을 전달합니다.
23.5.10.3. DNAT를 사용하여 들어오는 HTTP 트래픽 전달 링크 복사링크가 클립보드에 복사되었습니다!
대상 네트워크 주소 변환(DNAT)을 사용하여 들어오는 트래픽을 하나의 대상 주소 및 포트에서 다른 대상 주소로 보낼 수 있습니다. 일반적으로 외부 네트워크 인터페이스에서 특정 내부 서버 또는 서비스로 들어오는 요청을 리디렉션하는 데 유용합니다.
사전 요구 사항
-
firewalld
서비스가 실행 중입니다.
절차
들어오는 HTTP 트래픽을 전달합니다.
firewall-cmd --zone=public --add-forward-port=port=80:proto=tcp:toaddr=198.51.100.10:toport=8080 --permanent
# firewall-cmd --zone=public --add-forward-port=port=80:proto=tcp:toaddr=198.51.100.10:toport=8080 --permanent
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이전 명령은 다음 설정으로 DNAT 규칙을 정의합니다.
-
--zone=public
- DNAT 규칙을 구성하는 방화벽 영역입니다. 필요한 모든 영역에 맞게 조정할 수 있습니다. -
--add-forward-port
- 포트 전달 규칙을 추가 중임을 나타내는 옵션입니다. -
port=80
- 외부 대상 포트입니다. -
proto=tcp
- TCP 트래픽을 전달함을 나타내는 프로토콜입니다. -
toaddr=198.51.100.10
- 대상 IP 주소입니다. -
toport=8080
- 내부 서버의 대상 포트입니다. -
--permanent
- 재부팅 시 DNAT 규칙을 유지할 수 있는 옵션입니다.
-
방화벽 구성을 다시 로드하여 변경 사항을 적용합니다.
firewall-cmd --reload
# firewall-cmd --reload
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
검증
사용한 방화벽 영역에 대한 DNAT 규칙을 확인합니다.
firewall-cmd --list-forward-ports --zone=public
# firewall-cmd --list-forward-ports --zone=public port=80:proto=tcp:toport=8080:toaddr=198.51.100.10
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 또는 해당 XML 구성 파일을 확인합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
23.5.10.4. 비표준 포트에서 트래픽을 리디렉션하여 표준 포트에서 웹 서비스에 액세스하도록 설정 링크 복사링크가 클립보드에 복사되었습니다!
리디렉션 메커니즘을 사용하여 사용자가 URL에 포트를 지정할 필요 없이 내부적으로 비표준 포트에서 실행되는 웹 서비스를 만들 수 있습니다. 결과적으로 URL은 더 간단하며 더 나은 검색 환경을 제공하는 반면 비표준 포트는 여전히 내부적으로 또는 특정 요구 사항에 사용됩니다.
사전 요구 사항
-
firewalld
서비스가 실행 중입니다.
절차
NAT 리디렉션 규칙을 생성합니다.
firewall-cmd --zone=public --add-forward-port=port=<standard_port>:proto=tcp:toport=<non_standard_port> --permanent
# firewall-cmd --zone=public --add-forward-port=port=<standard_port>:proto=tcp:toport=<non_standard_port> --permanent
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이전 명령은 다음 설정으로 NAT 리디렉션 규칙을 정의합니다.
-
--zone=public
- 규칙을 구성하는 방화벽 영역입니다. 필요한 모든 영역에 맞게 조정할 수 있습니다. -
--add-forward-port=port= <non_standard_port
> - 들어오는 트래픽을 처음 수신하는 소스 포트를 사용하여 포트 전달(리렉션) 규칙을 추가 중임을 나타내는 옵션입니다. -
proto=tcp
- TCP 트래픽을 리디렉션함을 나타내는 프로토콜입니다. -
toport=<standard_port
> - 소스 포트에서 수신한 후 들어오는 트래픽을 리디렉션해야 하는 대상 포트입니다. -
--permanent
- 다시 부팅 시 규칙을 유지할 수 있는 옵션입니다.
-
방화벽 구성을 다시 로드하여 변경 사항을 적용합니다.
firewall-cmd --reload
# firewall-cmd --reload
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
검증
다음을 사용한 방화벽 영역의 리디렉션 규칙을 확인합니다.
firewall-cmd --list-forward-ports
# firewall-cmd --list-forward-ports port=8080:proto=tcp:toport=80:toaddr=
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 또는 해당 XML 구성 파일을 확인합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
23.5.11. 리치 규칙 우선순위 지정 링크 복사링크가 클립보드에 복사되었습니다!
리치 규칙은 방화벽 규칙을 정의하는 보다 고급적이고 유연한 방법을 제공합니다. 리치 규칙은 서비스, 포트 등이 복잡한 방화벽 규칙을 표현하기에 충분하지 않은 경우 특히 유용합니다.
리치 규칙의 개념:
- 세분성 및 유연성
- 보다 구체적인 기준에 따라 네트워크 트래픽에 대한 자세한 조건을 정의할 수 있습니다.
- 규칙 구조
리치 규칙은 제품군(IPv4 또는 IPv6)과 조건 및 작업으로 구성됩니다.
rule family="ipv4|ipv6" [conditions] [actions]
rule family="ipv4|ipv6" [conditions] [actions]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - conditions
- 이러한 규칙을 사용하면 특정 기준이 충족되는 경우에만 리치 규칙을 적용할 수 있습니다.
- 작업
- 조건과 일치하는 네트워크 트래픽에 발생하는 작업을 정의할 수 있습니다.
- 여러 조건 결합
- 보다 구체적이고 복잡한 필터링을 생성할 수 있습니다.
- 계층적 제어 및 재사용 가능
- 리치 규칙을 영역 또는 서비스와 같은 다른 방화벽 메커니즘과 결합할 수 있습니다.
기본적으로 리치 규칙은 규칙 동작을 기반으로 구성됩니다. 예를 들어 거부
규칙은 허용
규칙보다 우선합니다. 리치 규칙의 priority
매개 변수는 관리자가 리치 규칙과 실행 순서를 세부적으로 제어할 수 있습니다. priority
매개변수를 사용하는 경우 규칙은 우선 순위 값으로 오름차순으로 정렬됩니다. 더 많은 규칙에 동일한 우선 순위가
있는 경우 규칙 작업에 따라 순서가 결정되며, 작업이 동일한 경우 순서가 정의되지 않을 수 있습니다.
23.5.11.1. 우선순위 매개변수가 규칙을 다른 체인으로 구성하는 방법 링크 복사링크가 클립보드에 복사되었습니다!
리치 규칙의 priority
매개변수를 -32768
과 32767
사이의 임의의 숫자로 설정할 수 있으며 더 낮은 숫자 값은 우선 순위가 높습니다.
firewalld
서비스는 우선순위 값에 따라 규칙을 다른 체인으로 구성합니다.
-
0보다 낮은 우선 순위: 규칙이
_pre
접미사가 있는 체인으로 리디렉션됩니다. -
0보다 높은 우선 순위: 규칙이
_post
접미사가 있는 체인으로 리디렉션됩니다. -
priority equals 0: action에 따라 규칙이
_log
,_deny
, 또는_allow
the action이 있는 체인으로 리디렉션됩니다.
이러한 하위 체인 내에서 firewalld
는 우선 순위 값에 따라 규칙을 정렬합니다.
23.5.11.2. 리치 규칙의 우선 순위 설정 링크 복사링크가 클립보드에 복사되었습니다!
다음은 priority
매개변수를 사용하여 다른 규칙에서 허용하거나 거부하지 않는 모든 트래픽을 기록하는 리치 규칙을 생성하는 방법의 예입니다. 이 규칙을 사용하여 예기치 않은 트래픽에 플래그를 지정할 수 있습니다.
절차
우선 순위가 매우 낮은 리치 규칙을 추가하여 다른 규칙과 일치하지 않는 모든 트래픽을 기록합니다.
firewall-cmd --add-rich-rule='rule priority=32767 log prefix="UNEXPECTED: " limit value="5/m"'
# firewall-cmd --add-rich-rule='rule priority=32767 log prefix="UNEXPECTED: " limit value="5/m"'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 명령은 또한 로그 항목 수를 분당
5
개로 제한합니다.
검증
이전 단계에서 생성된 명령을 사용하여
nftables
규칙을 표시합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow
23.5.12. firewalld 영역에서 다양한 인터페이스 또는 소스 간 트래픽 전달 활성화 링크 복사링크가 클립보드에 복사되었습니다!
영역 내 전달은 firewalld
영역 내의 인터페이스 또는 소스 간 트래픽 전달을 활성화하는 firewalld
기능입니다.
23.5.12.1. 기본 타겟이 ACCEPT로 설정된 영역 내 전달과 영역의 차이점 링크 복사링크가 클립보드에 복사되었습니다!
영역 내 전달이 활성화된 경우 단일 firewalld
영역 내의 트래픽이 하나의 인터페이스 또는 소스에서 다른 인터페이스 또는 소스로 전달될 수 있습니다. zone은 인터페이스 및 소스의 신뢰 수준을 지정합니다. 신뢰 수준이 동일한 경우 트래픽은 동일한 영역 내에 유지됩니다.
firewalld
의 기본 영역에서 영역 내 전달을 활성화하면 현재 기본 영역에 추가된 인터페이스와 소스에만 적용됩니다.
firewalld
는 다른 영역을 사용하여 들어오고 나가는 트래픽을 관리합니다. 각 영역에는 고유한 규칙과 동작 세트가 있습니다. 예를 들어 신뢰할 수 있는
영역은 기본적으로 전달된 모든 트래픽을 허용합니다.
다른 영역에는 기본 동작이 다를 수 있습니다. 표준 영역에서 영역의 대상이 기본값으로 설정된 경우 전달된 트래픽은 일반적으로 기본적으로
삭제됩니다.
영역 내의 다양한 인터페이스 또는 소스 간에 트래픽이 전달되는 방법을 제어하려면 해당 영역의 대상을 적절하게 이해하고 구성해야 합니다.
23.5.12.2. 이더넷과 Wi-Fi 네트워크 간에 트래픽 전달을 위해 영역 내 전달 링크 복사링크가 클립보드에 복사되었습니다!
intra-zone 전달을 사용하여 동일한 firewalld
영역 내의 인터페이스와 소스 간에 트래픽을 전달할 수 있습니다. 이 기능은 다음과 같은 이점을 제공합니다.
-
유선 및 무선 장치 간의 원활한 연결(W
lp
에 연결된 이더넷 네트워크와 Wi-Fi 네트워크 간에 트래픽을 전달할 수 있음)0s
20 - 유연한 작업 환경 지원
- 프린터, 데이터베이스, 네트워크 연결 스토리지 등 여러 장치 또는 네트워크에서 액세스하고 사용하는 공유 리소스
- 효율적인 내부 네트워킹(예: 원활한 통신, 대기 시간 감소, 리소스 접근성 등)
개별 firewalld
영역에 대해 이 기능을 활성화할 수 있습니다.
절차
커널에서 패킷 전달을 활성화합니다.
echo "net.ipv4.ip_forward=1" > /etc/sysctl.d/95-IPv4-forwarding.conf sysctl -p /etc/sysctl.d/95-IPv4-forwarding.conf
# echo "net.ipv4.ip_forward=1" > /etc/sysctl.d/95-IPv4-forwarding.conf # sysctl -p /etc/sysctl.d/95-IPv4-forwarding.conf
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 영역 내 전달을 활성화할 인터페이스가
내부
영역에만 할당되도록 합니다.firewall-cmd --get-active-zones
# firewall-cmd --get-active-zones
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 인터페이스가 현재
내부
이외의 영역에 할당되면 이를 다시 할당합니다.firewall-cmd --zone=internal --change-interface=interface_name --permanent
# firewall-cmd --zone=internal --change-interface=interface_name --permanent
Copy to Clipboard Copied! Toggle word wrap Toggle overflow enp1s0
및wlp0s20
인터페이스를내부
영역에 추가합니다.firewall-cmd --zone=internal --add-interface=enp1s0 --add-interface=wlp0s20
# firewall-cmd --zone=internal --add-interface=enp1s0 --add-interface=wlp0s20
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 영역 내 전달을 활성화합니다.
firewall-cmd --zone=internal --add-forward
# firewall-cmd --zone=internal --add-forward
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
검증
다음 확인에서는 nmap-ncat
패키지가 두 호스트 모두에 설치되어 있어야 합니다.
-
영역 전달을 활성화한 호스트의
enp1s0
인터페이스와 동일한 네트워크에 있는 호스트에 로그인합니다. ncat
을 사용하여 echo 서비스를 시작하여 연결을 테스트합니다.ncat -e /usr/bin/cat -l 12345
# ncat -e /usr/bin/cat -l 12345
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
wlp0s20
인터페이스와 동일한 네트워크에 있는 호스트에 로그인합니다. enp1s0
과 동일한 네트워크에 있는 호스트에서 실행 중인 에코 서버에 연결합니다.ncat <other_host> 12345
# ncat <other_host> 12345
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 어떤 것을 입력하고 키를 누릅니다. 텍스트가 다시 전송되었는지 확인합니다.
23.5.13. RHEL 시스템 역할을 사용하여 firewalld 구성 링크 복사링크가 클립보드에 복사되었습니다!
RHEL 시스템 역할은 Ansible 자동화 유틸리티의 콘텐츠 집합입니다. 이 콘텐츠는 Ansible 자동화 유틸리티와 함께 여러 시스템을 한 번에 원격으로 관리할 수 있는 일관된 구성 인터페이스를 제공합니다.
rhel-system-roles
패키지에는 rhel-system-roles.firewall
RHEL 시스템 역할이 포함되어 있습니다. 이 역할은 firewalld
서비스의 자동 구성을 위해 도입되었습니다.
방화벽
RHEL 시스템 역할을 사용하면 다양한 firewalld
매개변수를 구성할 수 있습니다. 예를 들면 다음과 같습니다.
- 영역
- 패킷을 허용해야 하는 서비스
- 포트에 대한 트래픽 액세스 권한 부여, 거부 또는 삭제
- 영역의 포트 또는 포트 범위 전달
23.5.13.1. 방화벽 RHEL 시스템 역할을 사용하여 firewalld 설정 재설정 링크 복사링크가 클립보드에 복사되었습니다!
시간이 지남에 따라 방화벽 구성을 업데이트하면 의도하지 않은 보안 위험이 발생할 수 있습니다. 방화벽
RHEL 시스템 역할을 사용하면 firewalld
설정을 자동으로 기본 상태로 재설정할 수 있습니다. 이렇게 하면 의도하지 않거나 안전하지 않은 방화벽 규칙을 효율적으로 제거하고 관리를 단순화할 수 있습니다.
사전 요구 사항
- 컨트롤 노드 및 관리형 노드를 준비했습니다.
- 관리 노드에서 플레이북을 실행할 수 있는 사용자로 제어 노드에 로그인되어 있습니다.
-
관리 노드에 연결하는 데 사용하는 계정에는
sudo
권한이 있습니다.
절차
다음 콘텐츠를 사용하여 플레이북 파일(예:
~/playbook.yml
)을 생성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 예제 플레이북에 지정된 설정은 다음과 같습니다.
이전: 교체
기존 사용자 정의 설정을 모두 제거하고
firewalld
설정을 기본값으로 재설정합니다.이전:replaced
매개변수를 다른 설정과 결합하면firewall
역할은 새 설정을 적용하기 전에 기존 설정을 모두 제거합니다.플레이북에 사용되는 모든 변수에 대한 자세한 내용은 제어 노드의
/usr/share/ansible/roles/rhel-system-roles.firewall/README.md
파일을 참조하십시오.
플레이북 구문을 확인합니다.
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 명령은 구문만 검증하고 잘못되었지만 유효한 구성으로부터 보호하지 않습니다.
플레이북을 실행합니다.
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
검증
제어 노드에서 이 명령을 실행하여 관리 노드의 모든 방화벽 구성이 기본값으로 재설정되었는지 원격으로 확인합니다.
ansible managed-node-01.example.com -m ansible.builtin.command -a 'firewall-cmd --list-all-zones'
# ansible managed-node-01.example.com -m ansible.builtin.command -a 'firewall-cmd --list-all-zones'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
23.5.13.2. 방화벽 RHEL 시스템 역할을 사용하여 하나의 로컬 포트에서 다른 로컬 포트로 firewalld 에서 들어오는 트래픽 전달 링크 복사링크가 클립보드에 복사되었습니다!
방화벽
RHEL 시스템 역할을 사용하여 하나의 로컬 포트에서 다른 로컬 포트로 들어오는 트래픽 전달을 원격으로 구성할 수 있습니다.
예를 들어 여러 서비스가 동일한 시스템에 공존하고 동일한 기본 포트가 필요한 환경이 있는 경우 포트 충돌이 발생할 수 있습니다. 이러한 충돌로 인해 서비스가 중단되고 다운타임이 발생할 수 있습니다. 방화벽
RHEL 시스템 역할을 사용하면 트래픽을 대체 포트로 효율적으로 전달하여 구성을 수정하지 않고도 서비스를 동시에 실행할 수 있습니다.
사전 요구 사항
- 컨트롤 노드 및 관리형 노드를 준비했습니다.
- 관리 노드에서 플레이북을 실행할 수 있는 사용자로 제어 노드에 로그인되어 있습니다.
-
관리 노드에 연결하는 데 사용하는 계정에는
sudo
권한이 있습니다.
절차
다음 콘텐츠를 사용하여 플레이북 파일(예:
~/playbook.yml
)을 생성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 예제 플레이북에 지정된 설정은 다음과 같습니다.
forward_port: 8080/tcp;443
- TCP 프로토콜을 사용하여 로컬 포트 8080으로 들어오는 트래픽은 포트 443으로 전달됩니다.
runtime: true
런타임 구성에서 변경 사항을 활성화합니다. 기본값은
true
로 설정됩니다.플레이북에 사용되는 모든 변수에 대한 자세한 내용은 제어 노드의
/usr/share/ansible/roles/rhel-system-roles.firewall/README.md
파일을 참조하십시오.
플레이북 구문을 확인합니다.
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 명령은 구문만 검증하고 잘못되었지만 유효한 구성으로부터 보호하지 않습니다.
플레이북을 실행합니다.
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
검증
제어 노드에서 다음 명령을 실행하여 관리 노드에서 forwarded-ports를 원격으로 확인합니다.
ansible managed-node-01.example.com -m ansible.builtin.command -a 'firewall-cmd --list-forward-ports'
# ansible managed-node-01.example.com -m ansible.builtin.command -a 'firewall-cmd --list-forward-ports' managed-node-01.example.com | CHANGED | rc=0 >> port=8080:proto=tcp:toport=443:toaddr=
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
23.5.13.3. 방화벽 RHEL 시스템 역할을 사용하여 firewalld DMZ 영역 구성 링크 복사링크가 클립보드에 복사되었습니다!
시스템 관리자는 방화벽
RHEL 시스템 역할을 사용하여 enp1s0 인터페이스에서 dmz
영역을 구성하여 HTTPS
트래픽을 영역에 허용할 수 있습니다. 이렇게 하면 외부 사용자가 웹 서버에 액세스할 수 있습니다.
사전 요구 사항
- 컨트롤 노드 및 관리형 노드를 준비했습니다.
- 관리 노드에서 플레이북을 실행할 수 있는 사용자로 제어 노드에 로그인되어 있습니다.
-
관리 노드에 연결하는 데 사용하는 계정에는
sudo
권한이 있습니다.
절차
다음 콘텐츠를 사용하여 플레이북 파일(예:
~/playbook.yml
)을 생성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 플레이북에 사용되는 모든 변수에 대한 자세한 내용은 제어 노드의
/usr/share/ansible/roles/rhel-system-roles.firewall/README.md
파일을 참조하십시오.플레이북 구문을 확인합니다.
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 명령은 구문만 검증하고 잘못되었지만 유효한 구성으로부터 보호하지 않습니다.
플레이북을 실행합니다.
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
검증
제어 노드에서 다음 명령을 실행하여 관리 노드의
dmz
영역에 대한 정보를 원격으로 확인합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow