CS/Linux

[Linux] Firewalld vs Iptables

kyoulho 2024. 10. 5. 14:08


CentOS 7부터 방화벽 관리 도구가 iptables에서 firewalld로 변경되었다.

  • CentOS 6: 방화벽 기능과 설정 도구 모두 iptables를 사용한다.
  • CentOS 7: 방화벽 기능은 iptables로 제공되지만, 설정 도구로는 firewalld를 사용한다. 명령어는 firewall-cmd이다.
  • CentOS 8 이후: 방화벽 기능은 nftables로 제공되며, 설정 도구는 여전히 firewalld를 사용한다.

Firewalld를 사용하는 이유

  • 동적 설정: firewalld는 실시간으로 방화벽 설정을 변경할 수 있어 서비스 중단 없이 보안 설정을 조정할 수 있다.
  • 유연한 관리: 존(Zone) 개념을 통해 네트워크 인터페이스별로 다른 보안 정책을 적용할 수 있어 관리가 용이하다.
  • 추상화된 인터페이스: firewalld는 iptables나 nftables와 같은 저수준 도구를 추상화하여 보다 간편한 명령어로 방화벽을 관리할 수 있게 한다.


nftables의 주요 특징

  • 향상된 성능: 패킷 필터링과 NAT 기능을 보다 효율적으로 처리하여 시스템 자원을 절약한다.
  • 단순화된 규칙 작성: 복잡한 규칙을 보다 간결하게 작성할 수 있다.
  • 확장성: 대규모 네트워크 환경에서도 효과적으로 사용할 수 있다.

Iptables와 Firewalld의 주요 차이점

1. 설정 파일 위치 및 구조:

  • Iptables: 방화벽 설정은 /etc/sysconfig/iptables 파일에 저장된다.
  • Firewalld: 설정 상세 정보는 /usr/lib/firewalld 및 /etc/firewalld 디렉토리에 있는 여러 파일에 저장되며, /etc/sysconfig/iptables 파일은 존재하지 않는다.

2. 규칙 적용 방식:

  • Iptables: 설정 변경 시 모든 규칙을 삭제하고 다시 적용해야 한다. 이는 기존 연결이 중단될 수 있다.
  • Firewalld: 설정 차이만을 적용하여 기존 연결을 유지하면서 실시간으로 방화벽 설정을 변경할 수 있다.

3. 존(Zone) 개념 도입:

  • Firewalld는 네트워크 인터페이스를 다양한 보안 수준의 존에 할당하여 관리할 수 있다. 이는 보다 유연하고 관리하기 쉬운 방화벽 설정을 가능하게 한다.


Firewalld 주요 명령어 사용법

1. 전체 존 목록을 상세하게 출력 (List)

firewall-cmd --list-all-zones
  • 이 명령어는 현재 설정된 모든 존과 각 존에 대한 상세 정보를 출력한다.

2. 새로운 존 추가 및 삭제 (Create / Delete)

# 존 추가:
firewall-cmd --permanent --new-zone=webserver
# 존 삭제:
firewall-cmd --permanent --delete-zone=webserver
  • --permanent 옵션을 사용하면 설정이 영구적으로 적용된다.

3. 포트 추가 및 삭제

# 포트 추가:
firewall-cmd --permanent --zone=public --add-port=4000-4100/tcp
firewall-cmd --permanent --zone=public --add-port=8080/tcp
# 포트 삭제:
firewall-cmd --permanent --zone=public --remove-port=8080/tcp

4. IP 추가 및 삭제

# 특정 IP 허용:
firewall-cmd --permanent --zone=public --add-source=192.168.1.100
# 특정 IP 차단:
firewall-cmd --permanent --zone=public --remove-source=192.168.1.100

5. 서비스 추가 및 삭제

Firewalld는 특정 서비스에 대한 포트를 미리 정의해 두고 있다.

# 서비스 추가:
firewall-cmd --permanent --zone=public --add-service=http
# 서비스 삭제:
firewall-cmd --permanent --zone=public --remove-service=http

6. 설정 반영 (Reload)

모든 설정 변경 후에는 다음 명령어를 통해 변경 사항을 반영해야 한다.

firewall-cmd --reload

7. 방화벽 상태 확인

방화벽이 활성화되어 있는지 확인하려면 다음 명령어를 사용한다.

firewall-cmd --state
728x90

'CS > Linux' 카테고리의 다른 글

[Linux] NAT를 설정하는 방법  (0) 2024.10.05
[Linux] IP 주소를 얻는 내부 흐름  (0) 2024.10.04
[Linux] Xrdp 서버  (1) 2024.10.03
[Linux] GUI 방화벽 설정  (1) 2024.10.03
[Linux] OpenSSH  (1) 2024.10.03