블로그로 돌아가기

CentOS 7에서 FirewallD로 방화벽 설정하기

CentOS 7에서 FirewallD로 방화벽 설정하기

소개

Firewalld는 많은 Linux 배포판에서 사용할 수 있는 방화벽 관리 솔루션입니다. Linux 커널이 제공하는 iptables 패킷 필터 시스템의 인터페이스 역할을 합니다. 이 가이드에서는 서버용 방화벽을 구성하는 방법을 배웁니다. 또한 firewall-cmd 관리 도구를 사용하여 방화벽을 관리하는 기본 방법도 보여줍니다.

Firewalld 기본 사항

FirewallD는 iptables의 체인 및 규칙 대신 영역(zone)과 서비스(service) 개념을 사용합니다. 구성하는 영역과 서비스에 따라 시스템으로 들어오고 나가는 트래픽의 허용 여부를 제어할 수 있습니다. FirewallD는 명령줄 유틸리티인 firewall-cmd를 사용하여 구성하고 관리할 수 있습니다.

부팅 시 방화벽 설치 및 활성화

대부분의 Linux 배포판에는 firewallD가 이미 설치되어 있습니다. 하지만 직접 설치해야 하는 경우 아래 구문을 입력하세요:

firewalld가 설치되면 서비스를 활성화하고 서버를 재부팅할 수 있습니다:

다음으로 서버를 재시작합니다. 서버가 성공적으로 재시작되면 방화벽이 활성화됩니다. 그 후, 아래 명령어를 사용하여 서비스가 활성화되었는지 확인합니다:

check firewall state FirewallD

출력 결과는 기본 방화벽 설정이 작동 중임을 보여줍니다.

기본 설정 확인

이 명령어를 사용하여 서버에서 선택한 영역을 확인할 수 있습니다:

check firewall default zone

다음을 입력하여 활성 영역을 확인합니다:

firewall active zones

이 구문을 사용하여 public 영역에 연결된 규칙을 확인하기 위해 기본 영역의 구성을 출력합니다:

list all rules FirewallD

출력 결과는 이 영역이 기본 영역이자 활성 영역임을 나타냅니다. 또한 eth0 및 eth1 인터페이스가 이 영역에 할당되어 있음을 보여줍니다.

대체 영역 확인

기본 및 활성 영역 외에도 탐색할 수 있는 다른 영역이 있습니다. 사용 가능한 모든 영역을 보려면 이 명령어를 입력하세요:

firewall check other zones

–list-all 명령어에 –zone= 매개변수를 추가하여 특정 영역에 할당된 구성을 확인합니다:

check zone configuration FirewallD

 인터페이스 영역 변경

–change-interface 옵션을 사용하여 인터페이스 영역을 쉽게 변경할 수 있습니다. 다음 명령어는 eth1 인터페이스를 work 영역에 할당합니다:

다음을 입력하여 변경 사항을 확인할 수 있습니다:

changing firewall interface zones FirewallD

기본 영역 변경

기본 영역을 변경하려면 –set-default-zone 뒤에 기본값으로 설정할 영역의 이름을 사용합니다. 예를 들어, 기본 영역을 변경하려면 다음 명령어를 실행해야 합니다:

다음으로, 다음 명령어로 변경 사항을 확인할 수 있습니다:

firewall change default zone

애플리케이션에 대한 규칙 설정

서비스에 대한 방화벽 예외를 정의하는 데 필요한 기본 사항을 살펴보겠습니다:

영역에 서비스 추가

가장 간단한 방법은 필요한 포트나 서비스를 사용 중인 영역에 추가하는 것입니다. 마찬가지로, –get-services 옵션을 사용하여 사용 가능한 모든 서비스를 볼 수 있습니다:

firewall get services FirewallD

–add-service = 매개변수를 사용하여 영역에 대한 서비스를 활성화할 수 있습니다. 이 작업은 기본 영역 또는 –zone = 매개변수로 정의된 모든 영역을 대상으로 합니다. 기본적으로 현재 방화벽 세션만 구성됩니다. –permanent 플래그를 활성화하여 영구적인 방화벽 구성을 설정할 수 있습니다. 예를 들어, 일반 HTTP 트래픽을 제공하는 웹 서버를 실행 중인 경우 다음을 입력하여 이번 세션 동안 “public” 영역의 인터페이스에 대해 이 트래픽을 허용할 수 있습니다:

기본 영역을 변경하려는 경우 –zone =을 생략할 수 있습니다. –list-all 또는 –list-services 작업을 통해 작업이 성공했는지 확인할 수 있습니다:

add service to zone

모든 것이 예상대로 작동하는지 확인한 후에는 재시작 후에도 서비스를 계속 사용할 수 있도록 영구 방화벽 규칙을 변경하고 싶을 것입니다. 다음 구문을 입력하여 “public” 영역을 영구적으로 변경할 수 있습니다:

–list-services 작업에 –permanent 플래그를 추가하여 이 작업이 성공했는지 확인할 수 있습니다. 모든 영구 작업을 수행하려면 sudo를 사용해야 합니다:

이제 “public” 영역에서 80번 포트의 HTTP 트래픽을 허용합니다. 아래 명령을 사용하여 이를 현재 세션 및 영구 규칙 세트에 추가할 수 있습니다:

요구 사항에 맞는 서비스가 없는 경우, 이 상황을 해결할 수 있는 두 가지 좋은 방법이 있습니다:

  1. 영역에 대한 포트 열기

특정 애플리케이션에 대한 지원을 추가하는 가장 간단한 방법은 각 영역에서 사용하는 포트를 여는 것입니다. 열어야 하는 포트에 대해 포트 또는 포트 범위와 해당 프로토콜을 지정하기만 하면 됩니다. 예를 들어, 애플리케이션이 5000번 포트에서 실행되고 TCP를 사용하는 경우, –add-port = 매개변수를 사용하여 이번 세션 동안 “public” 영역에 추가할 수 있습니다. 프로토콜은 TCP 또는 UDP일 수 있습니다:

작업이 성공했는지 확인하려면 –list-ports 작업을 사용하십시오:

범위의 시작 포트와 끝 포트를 하이픈으로 구분하여 연속된 포트 범위를 지정할 수도 있습니다. 예를 들어, 애플리케이션이 UDP 포트 4990에서 4999까지 사용하는 경우, 다음과 같이 작성하여 “public” 영역에서 열 수 있습니다:

테스트 후에는 이를 영구 방화벽에 추가하고 싶을 것입니다. 다음과 같이 입력하여 추가할 수 있습니다:

adding ports to permanent firewall

  1. 서비스 정의

서비스는 관련 이름 및 설명이 포함된 포트의 모음입니다. 서비스는 포트보다 관리하기 쉽지만, 약간의 초기 작업이 필요합니다. 시작하는 가장 간단한 방법은 기존 스크립트(/ usr / lib / firewalld / services에 있음)를 /etc/firewalld/services 디렉터리로 복사하는 것입니다. 예를 들어, 다음과 같이 SSH 서비스 정의를 복사하여 “example” 서비스 정의에 사용할 수 있습니다. XML 접미사를 제외한 파일 이름이 방화벽 서비스 목록의 서비스 이름을 결정합니다:

이 시점에서 복사한 파일의 정의를 조정할 수 있습니다:

먼저, 파일에는 복사한 SSH 정의가 포함되어 있습니다:

이 정의의 대부분은 메타데이터로 구성됩니다. <short> 태그에서 서비스 단축 이름을 변경해야 합니다. 이것은 알아보기 쉬운 서비스 이름입니다. “example” 서비스의 경우, TCP용 포트 7777과 UDP용 포트 8888을 열어야 한다고 가정해 보겠습니다. i를 눌러 INSERT 모드로 진입하여 기존 정의를 변경할 수 있습니다:

다음으로, ESC를 누르고 :x를 입력하여 파일을 저장하고 닫습니다. 그런 다음, 아래 명령어를 입력하여 방화벽을 재시작하면 새 서비스에 액세스할 수 있습니다.

그 후, 아래 명령어를 사용하여 사용 가능한 서비스 목록을 확인합니다:

get services

이 서비스는 이제 해당 영역(zone)에서 사용할 수 있습니다.

사용자 정의 영역(Zone) 만들기

대부분의 사용자에게는 사전 정의된 영역으로도 충분하겠지만, 해당 기능을 더 자세히 설명하는 사용자 정의 영역을 정의하는 것이 유용할 수 있습니다.

영역을 추가할 때는 영구(permanent) 방화벽 설정에 추가하십시오. 그런 다음 다시 로드하여 설정을 세션에 적용할 수 있습니다. 예를 들어, 다음과 같이 입력하여 앞서 논의한 두 개의 영역을 생성할 수 있습니다:

다음 명령어를 사용하여 영구 구성에 해당 영역들이 존재하는지 확인할 수 있습니다:

firewall zones

방화벽을 다시 로드하여 이러한 새 영역을 활성 구성에 적용합니다:

이제 영역(zone)에 적절한 서비스와 포트를 할당할 수 있습니다. 예를 들어, “publicweb” 영역에 SSH, HTTP, HTTPS 서비스를 추가하려면 다음과 같이 합니다:

list public web zone

 

또한, 다음 명령을 사용하여 “privateDNS” 영역에 DNS 서비스를 추가할 수 있습니다:

list privateDNS zone FirewallD

다음으로, 테스트를 위해 인터페이스를 이 새로운 영역으로 변경할 수 있습니다:

구성이 제대로 작동하는지 테스트합니다. 이 값들이 제대로 작동한다면 영구(permanent) 구성에 동일한 규칙을 추가해야 합니다. —permanent 표시자를 사용하여 규칙을 다시 적용하면 됩니다:

 

이 규칙들을 영구적으로 적용한 후, 네트워크를 재시작하고 방화벽 서비스를 다시 로드할 수 있습니다:

영역이 올바르게 할당되었는지 확인합니다:

check active zones FirewallD

또한, 두 영역 모두에 올바른 서비스가 있는지 확인하십시오:

영역 중 하나를 다른 인터페이스의 기본값으로 설정하려면 다음 명령을 사용하여 –set-default-zone= 매개변수로 이 동작을 구성해야 합니다:

결론

이제 자신만의 영역을 성공적으로 생성했습니다. 일상적인 사용을 위해 CentOS 시스템에서 firewalld 서비스를 관리하는 기본적인 방법을 이해하셨을 것입니다. firewalld 서비스를 잘 파악하면 그 강력함과 유연성을 최대한 활용할 수 있습니다.

즐거운 컴퓨팅 되세요!

 

author

Akshay Nagpal

작성자 · CloudSigma

Preslav Dobrev는 CloudSigma의 크리에이티브 디자이너로서, 전통적이고 혁신적인 마케팅 채널을 활용하여 일관된 비즈니스 정체성을 구축하는 데 중점을 두고 있습니다. 그는 영향력 있는 브랜드 내러티브를 창출하기 위해 예술적 비전과 전략적 마케팅을 결합하는 데 능숙합니다.

댓글

아직 댓글이 없습니다. 첫 번째로 작성해 보세요.