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 | $ sudo firewall-cmd --get-zones |
그리고 permanent로 활성화된 Zone은
1 | $ sudo firewall-cmd --get-active-zones |
Public Zone에 Http, Ssh 서비스
http, https 를 공개 서비스를 지원하는 기본 public zone에 추가한다.
1 | $ sudo firewall-cmd --add-service=ssh |
혹은 zone을 지정해서 서비스를 추가할 수 있다.
1 | $ sudo firewall-cmd --zone=public --add-service=ssh |
1 | $ sudo firewall-cmd --zone=public --remove-service=ssh |
public zone에 대한 정보를 출력한다.
1 | $ sudo firewall-cmd --list-all |
Trusted Zone 관리
1 | $ sudo firewall-cmd --zone=trusted --add-service=ssh |
trusted zone의 IP 범위를 소스로 지정할 수 있다.
1 | $ sudo firewall-cmd --zone=trusted --add-service=dns |
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 | sudo firewall-cmd --zone=public --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 | firewall-cmd --reload |
참조
Getting Started `firewalld`
https://blog.thinkbee.kr/opensuse-firewalld-start-24ac71b81127/