Linux에서 firewalld를 시작하는 방법
게시 됨: 2022-07-08 명령줄이나 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에 설치하려면 firewalld
및 firewall-config
를 설치해야 합니다.
sudo apt 설치 방화벽
sudo apt 설치 방화벽 구성
Fedora에는 firewalld
가 이미 설치되어 있습니다. firewall-config
를 추가하기만 하면 됩니다.
sudo dnf install firewall-config
Manjaro에서는 두 구성 요소 모두 사전 설치되어 있지 않지만 단일 패키지에 번들로 제공되므로 단일 명령으로 두 구성 요소를 모두 설치할 수 있습니다.
sudo pacman -Sy 방화벽
컴퓨터가 부팅될 때마다 실행할 수 있도록 firewalld
데몬을 활성화해야 합니다.
sudo systemctl enable firewalld
그리고 데몬이 지금 실행되도록 시작해야 합니다.
sudo systemctl 방화벽 시작
systemctl
을 사용하여 firewalld
가 시작되었고 문제 없이 실행 중인지 확인할 수 있습니다.
sudo systemctl 상태 firewalld
firewalld
을 사용하여 실행 중인지 확인할 수도 있습니다. 이것은 --state
옵션과 함께 firewall-cmd
명령을 사용합니다. firewall-cmd
에는 "d"가 없습니다.
sudo 방화벽 cmd --state
이제 방화벽을 설치하고 실행했으므로 구성으로 넘어갈 수 있습니다.
영역의 개념
firewalld
방화벽은 영역 을 기반으로 합니다. 영역은 방화벽 규칙 및 연결된 네트워크 연결의 모음입니다. 이를 통해 운영할 수 있는 다양한 영역과 다양한 보안 제한 사항을 조정할 수 있습니다. 예를 들어, 정기적이고 일상적인 실행을 위해 정의된 영역, 보다 안전한 실행을 위한 다른 영역 및 "아무것도 나오지 않는" 완전한 잠금 영역이 있을 수 있습니다.
한 영역에서 다른 영역으로, 효과적으로 한 보안 수준에서 다른 수준으로 이동하려면 해당 영역에서 실행하려는 영역으로 네트워크 연결을 이동합니다.
이렇게 하면 정의된 방화벽 규칙 집합에서 다른 방화벽 규칙 집합으로 매우 빠르게 이동할 수 있습니다. 영역을 사용하는 또 다른 방법은 집에 있을 때 랩톱이 하나의 영역을 사용하고 외출 중이고 공용 Wi-Fi를 사용할 때 다른 영역을 사용하도록 하는 것입니다.
firewalld
는 9개의 사전 구성된 영역과 함께 제공됩니다. 이것들은 편집할 수 있고 더 많은 영역을 추가하거나 제거할 수 있습니다.
- drop : 들어오는 모든 패킷을 삭제합니다. 나가는 트래픽이 허용됩니다. 이것은 가장 편집증적인 설정입니다.
- block : 들어오는 모든 패킷이 삭제되고
icmp-host-prohibited
메시지가 발신자에게 전송됩니다. 나가는 트래픽이 허용됩니다. - trusted : 모든 네트워크 연결이 허용되고 다른 시스템이 신뢰됩니다. 이것은 가장 신뢰할 수 있는 설정이며 캡티브 테스트 네트워크 또는 집과 같은 매우 안전한 환경으로 제한되어야 합니다.
- public : 이 영역은 다른 컴퓨터를 신뢰할 수 없는 공용 또는 기타 네트워크에서 사용하기 위한 것입니다. 일반적이고 일반적으로 안전한 연결 요청의 작은 선택이 허용됩니다.
- external : 이 영역은 NAT 마스커레이딩(포트 포워딩)이 활성화된 외부 네트워크에서 사용하기 위한 것입니다. 방화벽은 도달할 수 있지만 여전히 비공개인 비공개 네트워크로 트래픽을 전달하는 라우터 역할을 합니다.
- internal : 이 영역은 시스템이 게이트웨이나 라우터 역할을 할 때 내부 네트워크에서 사용하기 위한 것입니다. 이 네트워크의 다른 시스템은 일반적으로 신뢰할 수 있습니다.
- dmz : 이 영역은 경계 방어선 외부에 있고 네트워크에 대한 액세스가 제한된 "비무장화된 영역"에 있는 컴퓨터를 위한 것입니다.
- work : 이 구역은 작업 기계를 위한 구역입니다. 이 네트워크의 다른 컴퓨터는 일반적으로 신뢰할 수 있습니다.
- home : 가정용 기기를 위한 구역입니다. 이 네트워크의 다른 컴퓨터는 일반적으로 신뢰할 수 있습니다.
집, 직장 및 내부 영역은 기능면에서 매우 유사하지만 다른 영역으로 분리하면 원하는 대로 영역을 미세 조정할 수 있어 특정 시나리오에 대한 한 세트의 규칙을 캡슐화할 수 있습니다.
좋은 출발점은 기본 영역이 무엇인지 찾는 것입니다. 이것은 firewalld
가 설치될 때 네트워크 인터페이스가 추가되는 영역입니다.
sudo 방화벽 cmd --get-default-zone
기본 영역은 공개 영역입니다. 영역의 구성 세부 정보를 보려면 --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
모든 영역에 대한 구성을 한 번에 보려면 --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
서비스 이름은 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
에 서비스를 추가하는 것은 영역 목록에서 영역을 선택하고 서비스 목록에서 서비스를 선택하는 것만큼 쉽습니다.
"구성" 드롭다운 메뉴에서 "런타임" 또는 "영구"를 선택하여 실행 중인 세션 또는 영구 구성을 수정하도록 선택할 수 있습니다.
실행 중인 세션을 변경하고 작동을 테스트한 후에만 변경 사항을 커밋하려면 "구성" 메뉴를 "런타임"으로 설정하십시오. 변경합니다. 그들이 원하는 것을 하고 있다는 것에 만족하면 옵션 > 영구적으로 런타임 메뉴 옵션을 사용하십시오.
영역에 포트 및 프로토콜 항목을 추가하려면 영역 목록에서 영역을 선택하고 "포트"를 클릭합니다. 추가 버튼을 클릭하면 포트 번호를 제공하고 메뉴에서 프로토콜을 선택할 수 있습니다.
프로토콜을 추가하려면 "프로토콜"을 클릭하고 "추가" 버튼을 클릭한 다음 팝업 메뉴에서 프로토콜을 선택합니다.
한 영역에서 다른 영역으로 인터페이스를 이동하려면 "연결" 목록에서 인터페이스를 두 번 클릭한 다음 팝업 메뉴에서 영역을 선택합니다.
빙산의 일각
firewalld
로 할 수 있는 일이 훨씬 더 많지만 이것으로 충분합니다. 우리가 제공한 정보를 사용하여 영역에서 의미 있는 규칙을 만들 수 있습니다.