40.17. RHEL 시스템 역할을 사용하여 firewalld 구성
방화벽
RHEL 시스템 역할을 사용하여 한 번에 여러 클라이언트에서 firewalld
서비스 설정을 구성할 수 있습니다. 이 해결책:
- 효율적인 입력 설정을 제공하는 인터페이스를 제공합니다.
-
원하는 모든
firewalld
매개변수를 한 곳에 보관합니다.
제어 노드에서 방화벽
역할을 실행한 후 RHEL 시스템 역할은 firewalld
매개변수를 관리 노드에 즉시 적용하여 재부팅 시에도 지속됩니다.
40.17.1. 방화벽
RHEL 시스템 역할 소개
RHEL 시스템 역할은 Ansible 자동화 유틸리티의 콘텐츠 집합입니다. Ansible 자동화 유틸리티와 함께 이 콘텐츠는 여러 시스템을 원격으로 관리할 수 있는 일관된 구성 인터페이스를 제공합니다.
RHEL 시스템 역할의 rhel-system-roles.firewall
역할은 firewalld
서비스의 자동화된 구성을 위해 도입되었습니다. rhel-system-roles
패키지에는 이 RHEL 시스템 역할과 참조 문서가 포함되어 있습니다.
하나 이상의 시스템에 firewalld
매개변수를 자동화된 방식으로 적용하려면 플레이북에서 방화벽
RHEL 시스템 역할 변수를 사용합니다. 플레이북은 텍스트 기반 YAML 형식으로 작성된 하나 이상의 플레이 목록입니다.
인벤토리 파일을 사용하여 Ansible에서 구성할 시스템 세트를 정의할 수 있습니다.
firewall
역할을 사용하면 다음과 같이 다양한 firewalld
매개변수를 구성할 수 있습니다.
- 영역.
- 패킷을 허용해야 하는 서비스입니다.
- 포트에 대한 트래픽 액세스 권한 부여, 거부 또는 삭제.
- 영역의 포트 또는 포트 범위 전달.
추가 리소스
-
/usr/share/ansible/roles/rhel-system-roles.firewall/README.md
파일 -
/usr/share/doc/rhel-system-roles/firewall/
디렉터리 - 플레이북 작업
- 인벤토리 빌드 방법
40.17.2. 방화벽
RHEL 시스템 역할을 사용하여 firewalld
설정 재설정
방화벽
RHEL 시스템 역할을 사용하면 firewalld
설정을 기본 상태로 재설정할 수 있습니다. 이전:replaced
매개변수를 변수 목록에 추가하면 RHEL 시스템 역할은 기존 사용자 정의 설정을 모두 제거하고 firewalld
를 기본값으로 재설정합니다. 이전:replaced
매개변수를 다른 설정과 결합하면 방화벽
역할은 새 설정을 적용하기 전에 기존 설정을 모두 제거합니다.
Ansible 제어 노드에서 다음 절차를 수행합니다.
사전 요구 사항
- 제어 노드와 관리형 노드가 준비되어 있습니다.
- 관리 노드에서 플레이북을 실행할 수 있는 사용자로 제어 노드에 로그인되어 있습니다.
-
관리형 노드에 연결하는 데 사용하는 계정에는
sudo
권한이 있습니다.
절차
다음 콘텐츠를 사용하여 플레이북 파일(예:
~/playbook.yml
)을 생성합니다.--- - name: Reset firewalld example hosts: managed-node-01.example.com tasks: - name: Reset firewalld ansible.builtin.include_role: name: rhel-system-roles.firewall vars: firewall: - previous: replaced
플레이북 구문을 확인합니다.
$ ansible-playbook --syntax-check ~/playbook.yml
이 명령은 구문만 검증하고 잘못되었지만 유효한 구성으로부터 보호하지 않습니다.
플레이북을 실행합니다.
$ ansible-playbook ~/playbook.yml
검증
이 명령을 관리 노드에서
root
로 실행하여 모든 영역을 확인합니다.# firewall-cmd --list-all-zones
추가 리소스
-
/usr/share/ansible/roles/rhel-system-roles.firewall/README.md
파일 -
/usr/share/doc/rhel-system-roles/firewall/
디렉터리
40.17.3. 방화벽
RHEL 시스템 역할을 사용하여 하나의 로컬 포트에서 다른 로컬 포트로 firewalld
에서 들어오는 트래픽 전달
firewall
역할을 사용하면 여러 관리 호스트에 지속적인 영향을 적용하여 firewalld
매개변수를 원격으로 구성할 수 있습니다.
Ansible 제어 노드에서 다음 절차를 수행합니다.
사전 요구 사항
- 제어 노드와 관리형 노드가 준비되어 있습니다.
- 관리 노드에서 플레이북을 실행할 수 있는 사용자로 제어 노드에 로그인되어 있습니다.
-
관리형 노드에 연결하는 데 사용하는 계정에는
sudo
권한이 있습니다.
절차
다음 콘텐츠를 사용하여 플레이북 파일(예:
~/playbook.yml
)을 생성합니다.--- - name: Configure firewalld hosts: managed-node-01.example.com tasks: - name: Forward incoming traffic on port 8080 to 443 ansible.builtin.include_role: name: rhel-system-roles.firewall vars: firewall: - { forward_port: 8080/tcp;443;, state: enabled, runtime: true, permanent: true }
플레이북 구문을 확인합니다.
$ ansible-playbook --syntax-check ~/playbook.yml
이 명령은 구문만 검증하고 잘못되었지만 유효한 구성으로부터 보호하지 않습니다.
플레이북을 실행합니다.
$ ansible-playbook ~/playbook.yml
검증
관리 호스트에서
firewalld
설정을 표시합니다.# firewall-cmd --list-forward-ports
추가 리소스
-
/usr/share/ansible/roles/rhel-system-roles.firewall/README.md
파일 -
/usr/share/doc/rhel-system-roles/firewall/
디렉터리
40.17.4. 방화벽
RHEL 시스템 역할을 사용하여 firewalld
에서 포트 관리
방화벽
RHEL 시스템 역할을 사용하여 수신 트래픽을 위해 로컬 방화벽의 포트를 열거나 종료하고 재부팅 시 새 구성을 유지할 수 있습니다. 예를 들어 HTTPS 서비스에 대한 들어오는 트래픽을 허용하도록 기본 영역을 구성할 수 있습니다.
Ansible 제어 노드에서 다음 절차를 수행합니다.
사전 요구 사항
- 제어 노드와 관리형 노드가 준비되어 있습니다.
- 관리 노드에서 플레이북을 실행할 수 있는 사용자로 제어 노드에 로그인되어 있습니다.
-
관리형 노드에 연결하는 데 사용하는 계정에는
sudo
권한이 있습니다.
절차
다음 콘텐츠를 사용하여 플레이북 파일(예:
~/playbook.yml
)을 생성합니다.--- - name: Configure firewalld hosts: managed-node-01.example.com tasks: - name: Allow incoming HTTPS traffic to the local host ansible.builtin.include_role: name: rhel-system-roles.firewall vars: firewall: - port: 443/tcp service: http state: enabled runtime: true permanent: true
permanent: true
옵션을 사용하면 재부팅해도 새 설정이 유지됩니다.플레이북 구문을 확인합니다.
$ ansible-playbook --syntax-check ~/playbook.yml
이 명령은 구문만 검증하고 잘못되었지만 유효한 구성으로부터 보호하지 않습니다.
플레이북을 실행합니다.
$ ansible-playbook ~/playbook.yml
검증
관리형 노드에서
HTTPS
서비스와 연결된443/tcp
포트가 열려 있는지 확인합니다.# firewall-cmd --list-ports 443/tcp
추가 리소스
-
/usr/share/ansible/roles/rhel-system-roles.firewall/README.md
파일 -
/usr/share/doc/rhel-system-roles/firewall/
디렉터리
40.17.5. 방화벽
RHEL 시스템 역할을 사용하여 firewalld
DMZ 영역 구성
시스템 관리자는 방화벽
RHEL 시스템 역할을 사용하여 enp1s0 인터페이스에서 dmz
영역을 구성하여 HTTPS
트래픽을 영역에 허용할 수 있습니다. 이렇게 하면 외부 사용자가 웹 서버에 액세스할 수 있습니다.
Ansible 제어 노드에서 다음 절차를 수행합니다.
사전 요구 사항
- 제어 노드와 관리형 노드가 준비되어 있습니다.
- 관리 노드에서 플레이북을 실행할 수 있는 사용자로 제어 노드에 로그인되어 있습니다.
-
관리형 노드에 연결하는 데 사용하는 계정에는
sudo
권한이 있습니다.
절차
다음 콘텐츠를 사용하여 플레이북 파일(예:
~/playbook.yml
)을 생성합니다.--- - name: Configure firewalld hosts: managed-node-01.example.com tasks: - name: Creating a DMZ with access to HTTPS port and masquerading for hosts in DMZ ansible.builtin.include_role: name: rhel-system-roles.firewall vars: firewall: - zone: dmz interface: enp1s0 service: https state: enabled runtime: true permanent: true
플레이북 구문을 확인합니다.
$ ansible-playbook --syntax-check ~/playbook.yml
이 명령은 구문만 검증하고 잘못되었지만 유효한 구성으로부터 보호하지 않습니다.
플레이북을 실행합니다.
$ ansible-playbook ~/playbook.yml
검증
관리 노드에서
dmz
영역에 대한 자세한 정보를 확인합니다.# firewall-cmd --zone=dmz --list-all dmz (active) target: default icmp-block-inversion: no interfaces: enp1s0 sources: services: https ssh ports: protocols: forward: no masquerade: no forward-ports: source-ports: icmp-blocks:
추가 리소스
-
/usr/share/ansible/roles/rhel-system-roles.firewall/README.md
파일 -
/usr/share/doc/rhel-system-roles/firewall/
디렉터리