별의 공부 블로그 🧑🏻‍💻
728x90
728x170

firewalld

iptables

  • 커널 2.4 버전부터 내장됨.
  • 넷필터(Netfilter) 프로젝트에서 만든 리눅스 방화벽
  • 단점
    • 많은 기능으로 인해 정책 설정이 매우 어려움.
    • 조작의 불편함.
  • 리눅스가 대중화되면서 명령행 기반 iptables 조작은 초보자들에게 다루기 힘들어짐.
    • 이러한 불편함을 해소하기 위해 다음의 도구들이 등장함.
      • lokkit
        • 대표적인 명령행(CLI: Command Line Interface) 기반 iptables 설정 유틸리티
        • iptables의 정책이 저장되는 /etc/sysconfig/iptables를 편집기로 수정하는 번거로움을 없애줌.
        • 매우 단순한 명령어 구조 를 가지고 있음.
          • iptables 보다 손쉽게 방화벽 정책을 수정할 수 있음.
        • CentOS 6 에서 lokkit 사용 예
        # lokkit -s http -s https -s ssh
        # service iptables restart
      • system-config-firewall
        • X 윈도 환경에서 실행하는 GUI(Graphic User Interface) 기반의 도구
        • 명령을 실행하면 메뉴가 나타나고, 마우스를 이용해서 원하는 설정을 클릭하면 제어할 수 있음.
  • lokkit이나 system-config-firewall은 좀 더 손쉽게 방화벽을 제어할 수 있도록 제공할 뿐, 기본적인 동작은 iptables 기반에서 수행됨.
    • 정교한 방화벽 작업을 위해서는 iptables의 사용법을 익혀야 함.

 

firewalld의 개요

  • D-Bus(Desktop Bus) 인터페이스가 있는 호스트 기반 방화벽을 제공하는 서비스 데몬
  • 동적 관리 방화벽
    • 규칙이 변경될 때마다 방화벽 데몬을 다시 시작할 필요 없이 규칙을 작성, 변경, 삭제 할 수 있음.
  • iptables를 기반으로 동작함.

 

firewalld

  • 네트워크 연결 또는 네트워크 인터페이스의 수준으로 규칙을 설정함.
  • 런타임(Runtime)  영구 구성 옵션으로 분리되어 있음.
  • 기본적으로 다음의 기능을 지원함.
    • IPv4  IPv6 방화벽 설정
    • 이더넷 브리지(Ethernet Bridge)
  • 서비스나 응용 프로그램이 방화벽 규칙을 직접 추가할 수 있는 인터페이스를 제공함.
  • 다음 버전의 리눅스에 기본적으로 포함되어 사용되고 있음.
    • RHEL(Red Hat Enterprise Linux) 7
    • CentOS 7
    • Fedora 18 이후 버전
  • 다양한 응용 프로그램을 지원함.
    • NetworkManager
    • libvirt
    • docker
    • fail2ban

 

iptables 기반 도구와 firewalld의 비교

(1) 정적 방화벽과 동적 방화벽

  • lokkit 또는 system-config-firewall로 방화벽의 정책을 변경한 경우
    • 이를 적용시키려면 방화벽을 다시 시작해야 함.
      • 이러한 유형을 정적 방화벽(Static Firewall)이라고 함.
        • 단점
          • 방화벽 정책 변화로 인해 재시작을 수행하면 이미 연결된 접속이 종료되는 문제점이 발생함.
          • TCP 연결 정보를 기록하고 이 기록을 토대로 관리하는 상태 기반 방화벽(Stateful Inspection Firewall) 기능이 초기화되는 문제점이 발생할 수 있음.
  • 동적 방화벽(Dynamic Firewall) 서비스 데몬인 firewalld
    • 방화벽 정책을 실시간 환경(Runtime Environment) 에서 즉시 변경할 수 있음.
    • 서비스나 데몬(Daemon)을 재시작할 필요가 없음.

 

(2) 서비스, 응용 프로그램, 사용자의 쉬운 설정

  • iptables
    • 특정 서비스나 응용 프로그램에서 방화벽 설정을 조정할 수 없음.
  • firewalld
    • D-Bus(Desktop Bus) 인터페이스 를 지원함.
      • D-Bus(Desktop Bus)
        • 같은 시스템에서 동시에 실행 중인 여러 프로세스간의 통신을 가능하게 하는 IPC(Inter-Process Call)  RPC(Remote Procedure Call)
    • D-Bus 를 통해 사용자뿐만 아니라 서비스나 응용 프로그램에서도 손쉽게 방화벽 설정을 조정할 수 있도록 지원함.

 

(3) 다양한 방화벽 구성 도구 기본 제공

  • iptables
    • iptables라는 명령어 이외에는 특별한 설정 도구가 존재하지 않음.
      • 이러한 이유로 lokkit이나 system-config-firewall과 같은 도구를 사용함.
  • firewalld
    • 다양한 도구 제공
      • 명령행 에서 사용하는 firewall-cmd
      • GUI 도구인 firewall-config
      • 주요 설정을 손쉽게 할 수 있는 firewall-applet

 

(4) 런타임 및 영구 설정 분할 지원

  • iptables
    • 방화벽 정책을 설정할 때, 런타임 구성 또는 영구 구성 설정 이 별도로 분리되어 있지 않음.
  • firewalld
    • 정책을 설정하는 명령어인 firewall-cmd를 사용할 때, 런타임 구성 또는 영구 구성 설정 을 분리하여 사용할 수 있음.
      • 런타임 구성
        • 기본적으로 명령행 에서 firewall-cmd로 정책을 설정할 경우, 임시적으로 적용되는 런타임 모드 라고 보면 됨.
          • 이 경우, firewalld를 재로드(Reload)  재시작(Restart) 하거나, 시스템 재부팅을 수행하면 해당 설정이 사라짐.
            • 시스템 재부팅을 한 경우에도 특정 방화벽 설정을 유지시키려면 영구 구성 으로 설정해야 함.
      • 영구 구성 설정
        • 기존의 firewall-cmd 명령에 관련 옵션인 --permanent만 지정하면 됨.
    • 런타임 모드
      • 일정 시간 동안만 특정 정책이 적용되도록 설정할 수 있음.
        • --timeout 시간 형식으로 추가만 해주면, 원하는 시간 동안만 특정 서비스를 활성화시킬 수 있음.

 

런타임 및 영구 설정 예

# firewall-cmd --zone=public --add-service=https
# firewall-cmd --permanent --zone=public --add-service=https

 

서비스 시간 설정 예

# firewall-cmd --add-service=ssh --timeout 15m

 

(참고) CentOS 7 에서 lokkit 사용하기

  • CentOS 7 에서는 firewalld가 기본적으로 설치되면서 동작하고 있음.
  • 같은 역할을 수행하는 lokkit과 firewalld는 동시에 사용할 수 없음.
    • lokkit은 기본 설치가 되어 있지 않음.
  • lokkit을 사용하려면 관련 패키지를 설치하고, firewalld의 사용을 중지시켜야 함.

 

 lokkit 설치하기

# yum install lokkit
  • 이 명령을 실행하면 iptables-services  system-config-firewall-base 패키지가 설치되면서 lokkit을 사용할 수 있음.

 

 firewalld 서비스 중지시키기

# systemctl stop firewall

 

 iptables 서비스 시작하기

# systemctl start iptables

 

728x90
그리드형(광고전용)
⚠️AdBlock이 감지되었습니다. 원할한 페이지 표시를 위해 AdBlock을 꺼주세요.⚠️


📖 Contents 📖