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
- 이러한 불편함을 해소하기 위해 다음의 도구들이 등장함.
- 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) 기능이 초기화되는 문제점이 발생할 수 있음.
- 단점
- 이러한 유형을 정적 방화벽(Static 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(Desktop Bus)
- D-Bus 를 통해 사용자뿐만 아니라 서비스나 응용 프로그램에서도 손쉽게 방화벽 설정을 조정할 수 있도록 지원함.
- D-Bus(Desktop Bus) 인터페이스 를 지원함.
(3) 다양한 방화벽 구성 도구 기본 제공
- iptables
- iptables라는 명령어 이외에는 특별한 설정 도구가 존재하지 않음.
- 이러한 이유로 lokkit이나 system-config-firewall과 같은 도구를 사용함.
- iptables라는 명령어 이외에는 특별한 설정 도구가 존재하지 않음.
- firewalld
- 다양한 도구 제공
- 명령행 에서 사용하는 firewall-cmd
- GUI 도구인 firewall-config
- 주요 설정을 손쉽게 할 수 있는 firewall-applet
- 다양한 도구 제공
(4) 런타임 및 영구 설정 분할 지원
- iptables
- 방화벽 정책을 설정할 때, 런타임 구성 또는 영구 구성 설정 이 별도로 분리되어 있지 않음.
- firewalld
- 정책을 설정하는 명령어인 firewall-cmd를 사용할 때, 런타임 구성 또는 영구 구성 설정 을 분리하여 사용할 수 있음.
- 런타임 구성
- 기본적으로 명령행 에서 firewall-cmd로 정책을 설정할 경우, 임시적으로 적용되는 런타임 모드 라고 보면 됨.
- 이 경우, firewalld를 재로드(Reload) 및 재시작(Restart) 하거나, 시스템 재부팅을 수행하면 해당 설정이 사라짐.
- 시스템 재부팅을 한 경우에도 특정 방화벽 설정을 유지시키려면 영구 구성 으로 설정해야 함.
- 이 경우, firewalld를 재로드(Reload) 및 재시작(Restart) 하거나, 시스템 재부팅을 수행하면 해당 설정이 사라짐.
- 기본적으로 명령행 에서 firewall-cmd로 정책을 설정할 경우, 임시적으로 적용되는 런타임 모드 라고 보면 됨.
- 영구 구성 설정
- 기존의 firewall-cmd 명령에 관련 옵션인 --permanent만 지정하면 됨.
- 런타임 구성
- 런타임 모드
- 일정 시간 동안만 특정 정책이 적용되도록 설정할 수 있음.
- --timeout 시간 형식으로 추가만 해주면, 원하는 시간 동안만 특정 서비스를 활성화시킬 수 있음.
- 일정 시간 동안만 특정 정책이 적용되도록 설정할 수 있음.
- 정책을 설정하는 명령어인 firewall-cmd를 사용할 때, 런타임 구성 또는 영구 구성 설정 을 분리하여 사용할 수 있음.
런타임 및 영구 설정 예
# 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
그리드형(광고전용)
'System Software > Linux' 카테고리의 다른 글
[리눅스 명령어] alias / unalias (0) | 2022.03.31 |
---|---|
[리눅스 명령어] mdadm (0) | 2022.03.30 |
[리눅스] 샌드메일(sendmail) 관련 주요 파일 (0) | 2022.03.18 |
[리눅스] /etc/named.conf (0) | 2022.03.18 |
[리눅스] /etc/logrotate.conf (0) | 2022.03.18 |
[리눅스] NFS(Network File System) (0) | 2022.03.18 |
[리눅스] NTP(Network Time Protocol) (0) | 2022.03.18 |
[리눅스] KVM(Kernel-based Virtual Machine) (0) | 2022.03.18 |