firewalld는 D-Bus(desktop bus)인터페이스가 있는 호스트 기반 방화벽을 제공하는 서비스 데몬입니다
동적 관리 방화벽으로 규칙이 변경될 때마다 방화벽 데몬을 다시 시작할 필요 없이
규칙을 작성,변경,삭제할 수 있습니다
firewalld도 iptables를 기반으로 동작합니다
firewalld는 네트워크 연결 또는 네트워크 인터페이스의 수준으로 규칙을 설정하는데,
런타임 및 영구 구성 옵션으로 분리되어 있습니다
기본적으로 IPv4 및 IPv6 방화벽 설정, 이더넷 브릿지 등을 지원합니다
또한 서비스나 응용 프로그램이 방화벽 규칙을 직접 추가할 수 있는 인터페이스를 제공합니다
firewalld는 RHEL 7, CentOS7 이후 버전 등에서 기본적으로 포함되어 있습니다
system-config-firewall로 방화벽 정책을 변경한 경우에 이를 적용하려면
방화벽을 다시 시작해야합니다
이러한 유형을 정적 방화벽이라고 합니다
정적 방화벽의 단점은 방화벽 정책 변화로 인해 재시작을 수행하면 연결된 접속이 종료되는
문제점이 발생합니다
또한 TCP 연결 정보를 기록하고 이를 토대로 관리하는 상태기반 방화벽 기능이 초기화되는 문제점도 발생할 수 있습니다
동적 방화벽 서비스 데몬인 firewalld는 방화벽 정책을 실시간 환경에서 즉시 변경할 수 있습니다
서비스 데몬을 재시작할 필요가 없습니다
iptables는 특정 서비스나 응용 프로그램에서 방화벽 설정을 조정할 수 없었습니다
그러나 firewalld는 D-Bus 인터페이스를 지원합니다
D-Bus는 같은 시스템에서 동시에 실행중인 여러 프로세스 간의 통신을 가능하게 하는
IPC(inter-process call) 및 RPC(remote procedure call)입니다
firewalld는 D-Bus 인터페이스를 통해 사용자뿐만 아니라 서비스나 응용 프로그램에서도
손쉽게 방화벽 설정을 조정할 수 있도록 지원합니다
iptables인 경우에는 iptables라는 명령어 이외에는 특별한 설정 도구가 존재하지 않았습니다
이러한 이유로 system-config-firewall과 같은 도구를 사용하였지만
firewalld는 명령 행으로 사용하는 firewall-cmd, GUI 도구인 firewall-config,
주요 설정을 확인할 수 있는 firewall-applet과 같은 다양한 도구를 제공합니다
iptables에서는 방화벽 정책을 설정할 때 런타임 구성 또는 영구 구성 설정이 별도로 분리되어 있지 않습니다
그러나 firewalld는 명령행에서 firewall-cmd로 정책을 설정하면 임시적으로 적용되는 런타임 모드라고 할 수 있습니다
이 경우 firewalld를 reload 및 restart 하거나 시스템 재부팅을 수행하면 해당 설정은 사라집니다
시스템 재부팅을 한 경우에도 특정 방화벽 설정을 유지시키려면 영구 구성을 설정해야 합니다
영구 구성 설정은 기존의 firewall-cmd 명령에 관련 옵션인 --permanent만 지정하면 됩니다
따라서 매우 손쉽게 런타임 및 영구 구성 설정을 나뉘어 적용할 수 있습니다
아울러 런타임 모드에는 일정 시간 동안만 특정 정책이 적용되도록 설정할 수 있는데
--timeout 시간 형식으로 추가만 해주면 원하는 시간동안만 특정 서비스를 활성화할 수 있습니다
iptables는 기본 구성이 되는 테이블의 구조를 알아야하고, 해당 테이블에 존재하는 사슬에
특정 규칙을 설정하는 구조입니다
firewalld는 일반 사용자들도 쉽게 이해할 수 있는 영역에 설정합니다
즉 trusted zone과 untrusted zone으로 구분할 수 있는데,
각각의 영역에 따라 네트워크 인터페이스를 선택해서 다양한 설정을 할 수 있습니다
predefined zones는 /usr/lib/firewalld/zones
디렉토리에 저장되고 사용 가능한 모든
네트워크 인터페이스에 즉시 적용할 수 있습니다
이 파일이 수정되면 /etc/firewalld/zones
디렉토리에 복사됩니다
들어오는 네트워크를 거부할 떄 사용합니다
비무장지대로 구분된 영역에서 내부 네트워크로 접근이 가능할 컴퓨터를 지정하는데 사용하는 영역으로
지정된 연결만 접근이 허용됩니다
들어오는 네트워크 패킷에 대해 메시지 없이 거부합니다
나가는 네트워크 연결은 허가됩니다
라우터와 같이 masquerading(NAT 설정 옵션)이 사용되는 외부 네트워크에서 사용되는 영역입니다
지정된 연결만 접근이 허용됩니다
home 영역으로 신뢰할 수 있는 컴퓨터를 등록할 때 사용합니다
지정된 연결만 접근이 허용됩니다
내부 네트워크 영역으로 신뢰할 수 있는 내부 네트워크를 지정할 떄 사용합니다
지정된 연결만 접근이 허용됩니다
신뢰하지 않는 공공장소의 컴퓨터를 등록할 때 사용합니다
지정된 연결만 접근이 허용됩니다
이 영역에 등록된 컴퓨터는 모든 네트워크 연결이 허용됩니다
신뢰할 수 있는 업무 영역으로 지정된 연결만 접근이 허용됩니다
firewalld는 firewall-cmd라는 명령행 기반의 명령어를 이용해서 방화벽 규칙을 직접 설정합니다
특별한 영역을 지정하지 않으면 public 영역을 대상으로 설정됩니다
전체적인 명령어 사용법을 확인하려면 man firewall-cmd
를 실행하면 됩니다
IP Masquerade는 리눅스의 NAT 기능으로 내부에 있는 컴퓨터들이
리눅스 서버를 통해 인터넷 등 다른 네트워크에 접속할 수 있도록 하는 기능입니다