Rocky Linux와 같은 리눅스 배포판에서 firewalld와 iptables는 모두 방화벽을 관리하는 도구이지만, 그 작동 방식과 관리 방법에 차이가 있습니다. 두 도구는 주로 네트워크 트래픽을 필터링하고 방화벽 규칙을 설정하는 데 사용됩니다.
1. firewalld
- 동적 방화벽 관리 도구로, 시스템이 동작 중일 때도 방화벽 규칙을 즉시 적용할 수 있습니다. 이를 통해 연결을 끊거나 네트워크 서비스에 영향을 주지 않고도 방화벽 규칙을 수정할 수 있습니다.
- firewalld는 영역(zone) 개념을 도입하여 네트워크 인터페이스를 다양한 보안 수준으로 그룹화할 수 있습니다. 각 영역에는 다른 방화벽 규칙 세트가 적용될 수 있습니다.
- 설정 파일이 XML 형식으로 구성되어 있으며, 명령어는 직관적입니다.
- 추상화 레이어를 제공하여 고급 설정을 보다 쉽게 관리할 수 있습니다.
- 주로 nftables 백엔드를 사용합니다. 이는 iptables와 유사한 역할을 하지만 더 최신의 방화벽 기술입니다.
장점:
- 동적인 설정 변경이 가능.
- 직관적인 영역 기반 관리.
- 복잡한 설정을 간단하게 할 수 있음.
2. iptables
- 전통적인 방화벽 도구로, 네트워크 패킷 필터링을 위한 명령 줄 도구입니다.
- iptables는 stateless 및 stateful 패킷 필터링을 지원합니다.
- 규칙을 설정할 때 실시간으로 즉각 적용이 가능하지만, 규칙을 수정하려면 보통 전체 규칙 세트를 다시 로드해야 합니다.
- 사전 정의된 체인과 테이블을 사용하여 트래픽을 필터링합니다. 체인은 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