Linux에서 firewalld를 시작하는 방법

게시 됨: 2022-07-08
Linux 명령줄을 보여주는 노트북 화면.
Fatmawati achmad zaenuri/Shutterstock.com

명령줄이나 GUI 인터페이스에서 쉽게 구성할 수 있는 강력한 최신 Linux용 방화벽을 찾고 있다면 firewalld 가 바로 당신일 것입니다.

방화벽의 필요성

네트워크 연결에는 출발지와 목적지가 있습니다. 원본의 소프트웨어는 연결을 요청하고 대상의 소프트웨어는 연결을 수락하거나 거부합니다. 이를 수락하면 일반적으로 네트워크 트래픽이라고 하는 데이터 패킷이 연결을 통해 양방향으로 전달할 수 있습니다. 집에 있는 방 전체에서 공유하든, 집에서 사무실에 원격으로 연결하든, 멀리 떨어져 있는 클라우드 기반 리소스를 사용하든 마찬가지입니다.

방화벽은 실제로 무엇을 합니까?
관련 방화벽은 실제로 무엇을 합니까?

좋은 보안 관행에 따르면 컴퓨터에 대한 연결을 제한하고 제어해야 합니다. 이것이 방화벽이 하는 일입니다. IP 주소, 포트 또는 프로토콜별로 네트워크 트래픽을 필터링하고 사용자가 구성한 미리 정의된 기준 집합( 방화벽 규칙 )을 충족하지 않는 연결을 거부합니다. 그들은 독점 이벤트의 보안 요원과 같습니다. 당신의 이름이 목록에 없다면, 당신은 안에 들어가지 않는 것입니다.

물론 방화벽 규칙이 너무 제한적이어서 일상적인 활동이 제한되는 것은 원하지 않습니다. 방화벽을 구성하는 것이 더 간단할수록 충돌하거나 엄격한 규칙을 실수로 설정할 가능성이 줄어듭니다. 방화벽이 이해하기 너무 복잡하거나 명령 구문이 너무 불투명해서 사용하지 않는다는 사용자의 이야기를 종종 듣습니다.

firewalld 방화벽은 명령줄과 전용 GUI 응용 프로그램을 통해 강력하지만 설정이 간단합니다. 내부적으로 Linux 방화벽은 커널 측 네트워크 필터링 프레임워크인 netfilter 에 의존합니다. 여기 사용자 영역에서는 iptables , ufw 단순 방화벽 및 firewalld 와 같이 netfilter 와 상호 작용할 수 있는 도구를 선택할 수 있습니다.

우리의 의견으로는 firewalld 는 기능, 세분성 및 단순성의 최상의 균형을 제공합니다.

방화벽 설치

firewalld 에는 두 부분이 있습니다. firewalld 기능을 제공하는 데몬 프로세스인 firewalld 와 firewall-config 가 있습니다. 이것은 firewalld 에 대한 선택적 GUI입니다. firewall-config 에는 "d"가 없습니다.

Ubuntu, Fedora 및 Manjaro에 firewalld 를 설치하는 것은 모든 경우에 간단하지만 사전 설치된 것과 번들로 제공되는 것에 대한 각자의 견해가 있습니다.

Ubuntu에 설치하려면 firewalldfirewall-config 를 설치해야 합니다.

 sudo apt 설치 방화벽 

Ubuntu에 firewalld 설치

 sudo apt 설치 방화벽 구성 

Ubuntu에 방화벽 구성 설치

Fedora에는 firewalld 가 이미 설치되어 있습니다. firewall-config 를 추가하기만 하면 됩니다.

sudo dnf install firewall-config

Fedora에 방화벽 구성 설치

Manjaro에서는 두 구성 요소 모두 사전 설치되어 있지 않지만 단일 패키지에 번들로 제공되므로 단일 명령으로 두 구성 요소를 모두 설치할 수 있습니다.

 sudo pacman -Sy 방화벽 

Manjaro에서 하나의 명령으로 firewalld 및 firewall-config 설치

컴퓨터가 부팅될 때마다 실행할 수 있도록 firewalld 데몬을 활성화해야 합니다.

 sudo systemctl enable firewalld 

방화벽이 부팅 시 자동 시작되도록 설정

그리고 데몬이 지금 실행되도록 시작해야 합니다.

 sudo systemctl 방화벽 시작 

방화벽 데몬 시작

systemctl 을 사용하여 firewalld 가 시작되었고 문제 없이 실행 중인지 확인할 수 있습니다.

 sudo systemctl 상태 firewalld 

systemctl로 firewalld 상태 확인하기

firewalld 을 사용하여 실행 중인지 확인할 수도 있습니다. 이것은 --state 옵션과 함께 firewall-cmd 명령을 사용합니다. firewall-cmd 에는 "d"가 없습니다.

 sudo 방화벽 cmd --state 

firewall-cmd 명령으로 firewalld 상태 확인

이제 방화벽을 설치하고 실행했으므로 구성으로 넘어갈 수 있습니다.

영역의 개념

firewalld 방화벽은 영역 을 기반으로 합니다. 영역은 방화벽 규칙 및 연결된 네트워크 연결의 모음입니다. 이를 통해 운영할 수 있는 다양한 영역과 다양한 보안 제한 사항을 조정할 수 있습니다. 예를 들어, 정기적이고 일상적인 실행을 위해 정의된 영역, 보다 안전한 실행을 위한 다른 영역 및 "아무것도 나오지 않는" 완전한 잠금 영역이 있을 수 있습니다.

한 영역에서 다른 영역으로, 효과적으로 한 보안 수준에서 다른 수준으로 이동하려면 해당 영역에서 실행하려는 영역으로 네트워크 연결을 이동합니다.

이렇게 하면 정의된 방화벽 규칙 집합에서 다른 방화벽 규칙 집합으로 매우 빠르게 이동할 수 있습니다. 영역을 사용하는 또 다른 방법은 집에 있을 때 랩톱이 하나의 영역을 사용하고 외출 중이고 공용 Wi-Fi를 사용할 때 다른 영역을 사용하도록 하는 것입니다.

firewalld 는 9개의 사전 구성된 영역과 함께 제공됩니다. 이것들은 편집할 수 있고 더 많은 영역을 추가하거나 제거할 수 있습니다.

  • drop : 들어오는 모든 패킷을 삭제합니다. 나가는 트래픽이 허용됩니다. 이것은 가장 편집증적인 설정입니다.
  • block : 들어오는 모든 패킷이 삭제되고 icmp-host-prohibited 메시지가 발신자에게 전송됩니다. 나가는 트래픽이 허용됩니다.
  • trusted : 모든 네트워크 연결이 허용되고 다른 시스템이 신뢰됩니다. 이것은 가장 신뢰할 수 있는 설정이며 캡티브 테스트 네트워크 또는 집과 같은 매우 안전한 환경으로 제한되어야 합니다.
  • public : 이 영역은 다른 컴퓨터를 신뢰할 수 없는 공용 또는 기타 네트워크에서 사용하기 위한 것입니다. 일반적이고 일반적으로 안전한 연결 요청의 작은 선택이 허용됩니다.
  • external : 이 영역은 NAT 마스커레이딩(포트 포워딩)이 활성화된 외부 네트워크에서 사용하기 위한 것입니다. 방화벽은 도달할 수 있지만 여전히 비공개인 비공개 네트워크로 트래픽을 전달하는 라우터 역할을 합니다.
  • internal : 이 영역은 시스템이 게이트웨이나 라우터 역할을 할 때 내부 네트워크에서 사용하기 위한 것입니다. 이 네트워크의 다른 시스템은 일반적으로 신뢰할 수 있습니다.
  • dmz : 이 영역은 경계 방어선 외부에 있고 네트워크에 대한 액세스가 제한된 "비무장화된 영역"에 있는 컴퓨터를 위한 것입니다.
  • work : 이 구역은 작업 기계를 위한 구역입니다. 이 네트워크의 다른 컴퓨터는 일반적으로 신뢰할 수 있습니다.
  • home : 가정용 기기를 위한 구역입니다. 이 네트워크의 다른 컴퓨터는 일반적으로 신뢰할 수 있습니다.

집, 직장 및 내부 영역은 기능면에서 매우 유사하지만 다른 영역으로 분리하면 원하는 대로 영역을 미세 조정할 수 있어 특정 시나리오에 대한 한 세트의 규칙을 캡슐화할 수 있습니다.

좋은 출발점은 기본 영역이 무엇인지 찾는 것입니다. 이것은 firewalld 가 설치될 때 네트워크 인터페이스가 추가되는 영역입니다.

 sudo 방화벽 cmd --get-default-zone 

기본 firewalld 영역 찾기

기본 영역은 공개 영역입니다. 영역의 구성 세부 정보를 보려면 --list-all 옵션을 사용합니다. 여기에는 영역에 대해 추가되거나 활성화된 모든 항목이 나열됩니다.

 sudo 방화벽 cmd --zone=공개 --list-all 

공개 영역의 세부 사항 나열

이 영역은 네트워크 연결 enp0s3과 연결되어 있으며 DHCP, mDNS 및 SSH와 관련된 트래픽을 허용하고 있음을 알 수 있습니다. 적어도 하나의 인터페이스가 이 영역에 추가되었기 때문에 이 영역은 활성 상태입니다.

firewalld 를 사용하면 영역에서 들어오는 트래픽을 허용하려는 서비스 를 추가할 수 있습니다. 그런 다음 해당 영역은 해당 유형의 트래픽을 허용합니다. 이것은 예를 들어 mDNS가 포트 5353과 UDP 프로토콜을 사용하고 해당 세부 정보를 영역에 수동으로 추가한다는 것을 기억하는 것보다 쉽습니다. 당신도 그렇게 할 수 있지만.

이더넷 연결과 Wi-Fi 카드가 있는 랩톱에서 이전 명령을 실행하면 비슷하지만 두 개의 인터페이스가 있는 것을 볼 수 있습니다.

 sudo 방화벽 cmd --zone=공개 --list-all 

두 개의 인터페이스가 있는 영역

두 네트워크 인터페이스가 모두 기본 영역에 추가되었습니다. 영역에는 첫 번째 예와 동일한 세 가지 서비스에 대한 규칙이 있지만 DHCP 및 SSH는 명명된 서비스로 추가된 반면 mDNS는 포트 및 프로토콜 페어링으로 추가되었습니다.

모든 영역을 나열하려면 --get-zones 옵션을 사용합니다.

 sudo 방화벽 cmd --get-zones 

모든 firewalld 영역 나열

모든 영역에 대한 구성을 한 번에 보려면 --list-all-zones 옵션을 사용합니다. 이것을 less 에 파이프하고 싶을 것입니다.

 sudo 방화벽 cmd --list-all-zones | 더 적은 

모든 영역의 세부 정보 나열

이것은 목록을 스크롤하거나 검색 기능을 사용하여 포트 번호, 프로토콜 및 서비스를 찾을 수 있기 때문에 유용합니다.

에 표시되는 모든 영역의 세부정보

랩톱에서 이더넷 연결을 공용 영역에서 홈 영역으로 이동할 것입니다. --zone--change-interface 옵션을 사용하여 이를 수행할 수 있습니다.

 sudo 방화벽 cmd --zone=홈 --change-interface=enp3s0 

홈 영역에 네트워크 인터페이스 추가

홈 영역을 살펴보고 변경 사항이 적용되었는지 확인합니다.

 sudo 방화벽 cmd --zone=home --list-all 

네트워크 인터페이스가 추가된 홈 영역

그리고 그것은 가지고 있습니다. 이더넷 연결이 홈 영역에 추가되었습니다.

그러나 이것은 영구적인 변경 사항이 아닙니다. 저장된 구성이 아닌 방화벽의 실행 구성을 변경했습니다. 재부팅하거나 --reload 옵션을 사용하면 이전 설정으로 되돌아갑니다.

영구적으로 변경하려면 적절한 이름의 --permanent 옵션을 사용해야 합니다.

이는 방화벽의 저장된 구성을 변경하지 않고 일회성 요구 사항에 대해 방화벽을 변경할 수 있음을 의미합니다. 구성에 변경 사항을 보내기 전에 변경 사항을 테스트할 수도 있습니다. 변경 사항을 영구적으로 만들기 위해 사용해야 하는 형식은 다음과 같습니다.

 sudo 방화벽 cmd --zone=home --change-interface=enp3s0 --permanent

일부 변경을 수행했지만 일부에서 --permanent 를 사용하는 것을 잊어버린 경우 --runtime-to-permanent 옵션을 사용하여 현재 실행 중인 방화벽 세션의 설정을 구성에 쓸 수 있습니다.

 sudo 방화벽 cmd --런타임-영구적 

방화벽 구성 다시 로드

관련: DHCP(동적 호스트 구성 프로토콜)란 무엇입니까?

서비스 추가 및 제거

firewalld 는 많은 서비스에 대해 알고 있습니다. --get-services 옵션을 사용하여 나열할 수 있습니다.

 sudo 방화벽 cmd --get-services 

방화벽이 이름으로 참조할 수 있는 서비스 나열

우리의 firewalld 버전은 192개의 서비스를 나열했습니다. 영역에서 서비스를 활성화하려면 --add-service 옵션을 사용합니다.

인정 서비스 목록

--add-service 옵션을 사용하여 영역에 서비스를 추가할 수 있습니다.

 sudo 방화벽 cmd --zone=공개 --add-service=http 

영역에 HTTP 서비스 추가

서비스 이름은 firewalld 의 서비스 목록에 있는 항목과 일치해야 합니다.

서비스를 제거하려면 --add-service--remove-service service로 바꿉니다.

포트 및 프로토콜 추가 및 제거

추가할 포트와 프로토콜을 선택하고 싶다면 그렇게 할 수도 있습니다. 추가하려는 트래픽 유형에 대한 포트 번호와 프로토콜을 알아야 합니다.

공개 영역에 HTTPS 트래픽을 추가해 보겠습니다. 이는 포트 443을 사용하며 TCP 트래픽의 한 형태입니다.

 sudo 방화벽 cmd --zone=공개 --add-port=443/tcp 

영역에 포트 및 프로토콜 페어링 추가

"400-450"과 같이 첫 번째와 마지막 포트 사이에 하이픈 " - "을 제공하여 다양한 포트를 제공할 수 있습니다.

포트를 제거하려면 --add-port--remove-port 로 바꾸십시오.

관련: TCP와 UDP의 차이점은 무엇입니까?

GUI 사용

"Super" 키를 누르고 "방화벽"을 입력하기 시작합니다. firewall-config 응용 프로그램에 대한 벽돌 벽 아이콘이 표시됩니다.

해당 아이콘을 클릭하여 애플리케이션을 실행합니다.

GUI를 사용하여 firewalld 에 서비스를 추가하는 것은 영역 목록에서 영역을 선택하고 서비스 목록에서 서비스를 선택하는 것만큼 쉽습니다.

"구성" 드롭다운 메뉴에서 "런타임" 또는 "영구"를 선택하여 실행 중인 세션 또는 영구 구성을 수정하도록 선택할 수 있습니다.

구성 드롭다운 메뉴

실행 중인 세션을 변경하고 작동을 테스트한 후에만 변경 사항을 커밋하려면 "구성" 메뉴를 "런타임"으로 설정하십시오. 변경합니다. 그들이 원하는 것을 하고 있다는 것에 만족하면 옵션 > 영구적으로 런타임 메뉴 옵션을 사용하십시오.

영역에 포트 및 프로토콜 항목을 추가하려면 영역 목록에서 영역을 선택하고 "포트"를 클릭합니다. 추가 버튼을 클릭하면 포트 번호를 제공하고 메뉴에서 프로토콜을 선택할 수 있습니다.

방화벽 구성 GUI를 사용하여 포트 및 프로토콜 페어링 추가

프로토콜을 추가하려면 "프로토콜"을 클릭하고 "추가" 버튼을 클릭한 다음 팝업 메뉴에서 프로토콜을 선택합니다.

방화벽 구성 GUI에서 공개 영역의 프로토콜

한 영역에서 다른 영역으로 인터페이스를 이동하려면 "연결" 목록에서 인터페이스를 두 번 클릭한 다음 팝업 메뉴에서 영역을 선택합니다.

방화벽 구성 GUI에서 한 영역에서 다른 영역으로 네트워크 인터페이스 이동

빙산의 일각

firewalld 로 할 수 있는 일이 훨씬 더 많지만 이것으로 충분합니다. 우리가 제공한 정보를 사용하여 영역에서 의미 있는 규칙을 만들 수 있습니다.