Rocky Linux와 같은 리눅스 배포판에서 firewalld와 iptables는 모두 방화벽을 관리하는 도구이지만, 그 작동 방식과 관리 방법에 차이가 있습니다. 두 도구는 주로 네트워크 트래픽을 필터링하고 방화벽 규칙을 설정하는 데 사용됩니다.

 

1. firewalld

  • 동적 방화벽 관리 도구로, 시스템이 동작 중일 때도 방화벽 규칙을 즉시 적용할 수 있습니다. 이를 통해 연결을 끊거나 네트워크 서비스에 영향을 주지 않고도 방화벽 규칙을 수정할 수 있습니다.
  • firewalld는 영역(zone) 개념을 도입하여 네트워크 인터페이스를 다양한 보안 수준으로 그룹화할 수 있습니다. 각 영역에는 다른 방화벽 규칙 세트가 적용될 수 있습니다.
  • 설정 파일이 XML 형식으로 구성되어 있으며, 명령어는 직관적입니다.
  • 추상화 레이어를 제공하여 고급 설정을 보다 쉽게 관리할 수 있습니다.
  • 주로 nftables 백엔드를 사용합니다. 이는 iptables와 유사한 역할을 하지만 더 최신의 방화벽 기술입니다.

장점:

  • 동적인 설정 변경이 가능.
  • 직관적인 영역 기반 관리.
  • 복잡한 설정을 간단하게 할 수 있음.

2. iptables

  • 전통적인 방화벽 도구로, 네트워크 패킷 필터링을 위한 명령 줄 도구입니다.
  • iptables는 statelessstateful 패킷 필터링을 지원합니다.
  • 규칙을 설정할 때 실시간으로 즉각 적용이 가능하지만, 규칙을 수정하려면 보통 전체 규칙 세트를 다시 로드해야 합니다.
  • 사전 정의된 체인과 테이블을 사용하여 트래픽을 필터링합니다. 체인은 INPUT, FORWARD, OUTPUT 등이고, 테이블은 필터, NAT, Mangle 등으로 나뉩니다.
  • iptables는 리눅스 방화벽 관리에서 오랫동안 표준으로 사용되어 왔지만, 최근에는 nftables로 대체되고 있습니다.

장점:

  • 고도로 세밀한 설정 가능.
  • 방화벽의 동작 방식을 매우 구체적으로 제어할 수 있음.
  • 오랜 시간 동안 많은 리눅스 배포판에서 사용되어 온 안정적인 도구.

주요 차이점

  • 관리 방식: firewalld는 iptables보다 더 높은 수준의 추상화와 유연한 관리 인터페이스를 제공합니다. 반면, iptables는 더 세밀하고 구체적인 제어가 가능하지만, 설정이 복잡할 수 있습니다.
  • 동적 vs 정적: firewalld는 시스템을 재시작하거나 네트워크 연결을 끊지 않고도 규칙을 실시간으로 변경할 수 있습니다. iptables는 규칙을 변경할 때 일부 영향을 미칠 수 있습니다.
  • 백엔드: firewalld는 최신 리눅스 배포판에서 nftables를 기본 백엔드로 사용하지만, iptables는 오래된 방화벽 관리 도구로 iptables 프레임워크 자체를 사용합니다.

따라서, 보다 간편하고 동적인 방화벽 관리를 원한다면 firewalld를, 더 세밀한 규칙 제어를 원한다면 iptables를 사용할 수 있습니다.

 

 

라고 Chat GPT 에서 얘기해준다.,

 

기존 Centos 에서 iptables로 방화벽 관리를 주로 했었는데,

Rocky Linux 에서는 firewalld를 사용해서 방화벽 관리를 하고 있다.

 

커맨드 라인으로 일일이 추가/관리하는게 번거로워서..

 

<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>gitlab</short>
  <description>Grafana is an open platform for beautiful analytics and monitoring</description>
  <port protocol="tcp" port="4963"/>
  <port protocol="tcp" port="4922"/>
</service>

/usr/lib/firewalld/services/gitlab.xml

 

이렇게 서비스 파일을 만들고,

 

<?xml version="1.0" encoding="utf-8"?>
<zone>
  <short>Public</short>
  <description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description>
  <service name="ssh"/>
  <service name="dhcpv6-client"/>
  <service name="cockpit"/>
  <service name="logstash"/>
  <service name="kibana"/>
  <service name="grafana"/>
  <service name="elasticsearch"/>
  <service name="prometheus"/>
  <service name="sonarqube"/>
  <service name="registry"/>
  <service name="gitlab"/>
</zone>

/etc/firewalld/zones/public.xml

 

여기에 서비스를 등록한다.

 

그리고 나서,

 

sudo systemctl start firewalld

 

자동재시작 등록은

sudo systemctl enable firewalld

+ Recent posts