Getting Started `firewalld`

RedHat, CentOS, Fedora 배포본 등에서 표준 방화벽 인터페이스로 제공되는 최신 FirewallD 사용을 시작해 보자. firewalld 패키지 설치는 각 배포본의 방법으로 설치하면 된다.

여기서는 OpenSUSE, Armbian 배포본을 설치한 시스템에서 firewalld 방화벽을 구성하고 설정하는 과정을 요약 정리했다.

Getting Started - FirewallD

sudo systemctl enable firewalld
sudo reboot

We can verify that the service is running and reachable by typing:

sudo firewall-cmd –state

firewalld는 Zone 을 기반으로 서비스, 포트, IP 주소 등을 다양한 규칙으로 혼합해 사용할 수 있다.

기본으로 지원하는 zone은 다음 같다.

1
2
$ sudo firewall-cmd --get-zones
block dmz drop external home internal public trusted work

그리고 permanent로 활성화된 Zone은

1
2
3
4
5
$ sudo firewall-cmd --get-active-zones
drop
sources: ipset:blacklist
trusted
sources: 192.168.0.0/24 220.121.170.0/24

Public Zone에 Http, Ssh 서비스

http, https 를 공개 서비스를 지원하는 기본 public zone에 추가한다.

1
2
3
$ sudo firewall-cmd --add-service=ssh
$ sudo firewall-cmd --add-service=http
$ sudo firewall-cmd --add-service=https

혹은 zone을 지정해서 서비스를 추가할 수 있다.

1
2
3
$ sudo firewall-cmd --zone=public --add-service=ssh
$ sudo firewall-cmd --zone=public --add-service=http
$ sudo firewall-cmd --zone=public --add-service=https
1
$ sudo firewall-cmd --zone=public --remove-service=ssh

public zone에 대한 정보를 출력한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
$ sudo firewall-cmd --list-all
public
target: default
icmp-block-inversion: no
interfaces:
sources:
services: ssh dhcpv6-client http https
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:

Trusted Zone 관리

1
$ sudo firewall-cmd --zone=trusted --add-service=ssh

trusted zone의 IP 범위를 소스로 지정할 수 있다.

1
2
$ sudo firewall-cmd --zone=trusted --add-service=dns
$ sudo firewall-cmd --zone=trusted --add-source=192.168.1.0/24
1
firewall-cmd --zone=zone-name --remove-source=<source>

Trusted Zone의 정보를 출력한다.

1
$ sudo firewall-cmd --zone=trusted --list-all

Port

포트에 따라 는 프로토콜을 지정해 줄 수 있다. 지정되지 않으면 기본 TCP 포트가 구성된다.

1
firewall-cmd --remove-port=port-number/port-type

대체 http 포트인 8080을 추가해 보자.

1
sudo firewall-cmd --zone=public --add-port=8080/tcp

mongodb 같은 내부 데이터베이스 포트를 trusted zone에 추가해 준다.

1
sudo firewall-cmd --zone=trusted --add-port=27017/tcp

포트 범위를 지정해 구성할 수 있다.

1
sudo firewall-cmd --zone=public --add-port=4990-4999/udp

포트를 제거할 수 있다.

1
sudo firewall-cmd --zone=zone-name --remove-source-port=<port-name>/<tcp|udp|sctp|dccp>

Zone에 구성된 포트 정보를 출력할 수 있다.

1
2
sudo firewall-cmd --zone=public --list-ports
sudo firewall-cmd --zone=trusted --list-ports

여기까지 firewall-cmd 로 설정한 내용은 실행중(런타임) 방화벽으로 구성되어 사용된다. 재시동 등의 이벤트가 발생하면 내용이 사라지게 된다. 영구적으로 보존하기 위해서는 --permanent 옵션을 사용해야 한다.

Permenent

Zone 에 구성한 서비스, 포트, 소스, 프로토콜 등에 대한 설정을 영구적으로 보존해려면 --permanent 옵션을 사용해야 한다. 영구적인 구성을 설정을 보존하려면 아래 두가지 방법을 사용한다.

먼저 firewall-cmd 로 실행중 제한 내용을 구성하고, --runtime-to-permanent 를 실행해 준다.

1
firewall-cmd --runtime-to-permanent

다른 방법을 firewall-cmd--permanent 옵션을 주고 실행하면 영구 보존되어 저장된다.

1
firewall-cmd --permanent <other options>

reload

방화벽을 갱신한다

1
2
3
4
firewall-cmd --reload
firewall-cmd --state
firewall-cmd --list-all #public
firewall-cmd --permanent --list-all #permanent

참조

Firewalld configuration and usage

Author

Gangtai Goh

Posted on

2018-07-14

Updated on

2023-08-08

Licensed under

댓글