본문 바로가기
설치 및 기술 자료/Linux

[Linux] 리눅스 방화벽 firewalld의 소개 및 활용

by 주식회사 서버몬 2023. 5. 26.

 

안녕하세요. 주식회사 서버몬 입니다.

 

오늘은 리눅스 방화벽 firewalld에 대해 알아보도록 하겠습니다.

 

firewalld은 다양한 리눅스 환경에서 기본 방화벽 관리 도구로 사용되고 있으며

본 글에서는 CentOS 7.x 환경을 기반으로 테스트되었습니다.

(firewalld는 시스템 관련 설정이므로 작업 시 root 권한 필요)

 

CentOS의 경우 6버전 이하에서는 firewalld이 아닌 iptables 명령을 사용하므로

해당 내용은 아래 링크를 참고 부탁 드립니다.

 

https://servermon.kr/board/board.html?code=servermon_board2&page=1&type=v&board_cate=&num1=999842&num2=00000&s_id=&stext=iptables&ssubject=ok&shname=&scontent=&number=1&lock=N 

 

서버몬

HPE, LENOVO(=IBM), DELL, 슈퍼마이크로 서버, 기업용 PC, 스토리지 및 소프트웨어 (MS, 레드햇, 오라클), 문서보안솔루션(시큐어디스크, 인터넷디스크) 을 유통 판매하는 IT 통합솔루션 전문 회사입니다.

www.servermon.kr

 

 

firewalld 란?

 

1. firewalld 는 무엇인가

firewalld는 간단히 말해서 CentOS 7.x 버전부터 사용되는 리눅스 방화벽 관리 도구 입니다.

 

리눅스의 방화벽은 리눅스 커널에 포함된 Netfilter 라는 서브 시스템으로 사용되며

미리 지정된 규칙에 의해 패킷의 송/수신을 허용/차단하는 패킷 필터링 형태로 동작됩니다.

 

CentOS 6.x 버전까지는 Netfilter의 관리 인터페이스가 iptables 였고

CentOS 7.x 버전부터는 Netfilter의 관리 인터페이스가 firewalld 로 변경되었습니다.

 

물론 CentOS 7.x 버전에서도 별도 설치를 통해 iptables을 사용하는 것이 가능하나

iptables과 비교하면 firewalld의 장점이 많기 때문에 firewalld를 사용하는 것이 편리합니다.

 

 

2. firewalld와 iptables의 차이점

firewalld와 iptables의 차이점은 아래와 같이 정리할 수 있습니다.

  iptables firewalld
설정의 변경 - 설정 변경 시 적용을 위해 서비스를 재시작해야하며 이 과정에서 네트워크가 순간적으로 끊김
- 설정 변경 시 기존 규칙을 모두 버리고 새로 불러옴
- 네트워크 통신을 중단하지 않고 규칙 설정 가능
- 설정 변경 시 추가/변경된 규칙만 불러옴
설정 난이도 - TCP/IP의 구조를 잘 알지 못하면 설정이 어렵고 명령 옵션이 복잡함 - 비교적 쉽게 설정 가능
유연성 - 임시로 규칙 설정 등은 불가 - 임시로 사용할 규칙과 지속적으로 사용할 규칙을 각각 관리할 수 있음
- 예를 들면 일정 시간만 사용 규칙 등

위와 같이 firewalld은 iptables과 비교하면 설정 방법이 쉬우며 설정의 적용과 관리가 유연하다는

장점이 있습니다.

 

 

3. firewalld에서의 zone이란?

firewalld는 방화벽 규칙을 zone이라는 형태로 묶어서 관리할 수 있습니다.

 

기본적으로 아래와 같이 9개의 용도별 zone이 마련되어 있으며

네트워크 인터페이스를 할당하는 방법으로 설정, 사용합니다.

(각 zone은 /etc/firewalld/zones/ 경로 내 .xml 파일로 생성하여 사용)

zone 설명
public 기본적으로 최소한의 허용 규칙이 설정된 zone, 기본 zone 으로 사용됨
block 들어오는 패킷을 모두 거부, 단, 전송 패킷의 반환 통신은 허용
dmz 일반적인 DMZ 인터페이스에 대한 설정에 사용
drop 들어오는 패킷을 모두 삭제, 단, 전송 패킷의 반환 통신은 허용
external 특별히 매스커레이딩 규칙이 적용되는 외부의 라우터를 위해 사용
home 홈 영역을 위해 사용되는 규칙
internal 내부 네트워크 인터페이스에 대한 설정에 사용
trusted 모든 통신을 허용하는 규칙
work 같은 회사 내 내부 네트워크를 위해 사용되는 규칙 

 

 

firewalld 서비스 관리

firewalld 서비스는 아래와 같은 명령어들로 관리가 가능합니다.

 

- firewalld 서비스 비활성화

# systemctl disables firewalld

 

- firewalld 서비스 활성화

# systemctl enable firewalld

 

- firewalld 서비스 중지

# systemctl stop firewalld

 

- firewalld 서비스 시작

# systemctl start firewalld

 

- firewalld 서비스 재시작

# systemctl restart firewalld

 

- firewalld 서비스 상태 확인

# systemctl status firewalld

 

 

firewalld 기본 명령어 사용

firewalld 서비스는 아래와 같은 명령어들로 기본 정보 확인이 가능합니다.

 

- firewalld 버전 확인

# firewall-cmd --version

 

- 현재 firewalld 기본 zone 확인

# firewall-cmd --get-default-zone

 

- zone의 생성 및 삭제

# firewall-cmd --permanent --new-zone=test

# firewall-cmd --permanent --delete-zone=test

- 기본 zone 변경(test로 변경)

# firewall-cmd --set-default-zone=test

 

- 현재 firewalld 설정 정보 확인

# firewall-cmd --list-all

 

- 정의된 service 목록 확인

# firewall-cmd --get-service

 

- 허용된 service 목록 확인

# firewall-cmd --list-service

 

- firewalld 전체 명령어 확인

# firewall-cmd -h

 

 

firewalld zone 관리

firewalld에서는 기본적으로 public 이라는 zone이 생성되어있으며

네트워크 인터페이스에 기본값으로 등록이 되어있습니다.

 

그럼 이제 본격적으로 public zone에 규칙을 관리하는 방법을 알아보겠습니다.

 

 

1. service 로 방화벽 허용 등록하기

우선 허용할 서비스가 지원하는 서비스 목록에 존재하는지 확인하여야 합니다.

# firewall-cmd --get-service

 

현재 public에 허용 등록된 서비스를 확인하고

# firewall-cmd --list-service --zone=public

 

public zone에 4개의 서비스 (http, https, dns, telnet)를 추가해보겠습니다. 
# firewall-cmd --permanent --zone=public --add-service=http
# firewall-cmd --permanent --zone=public --add-service=https
# firewall-cmd --permanent --zone=public --add-service=dns
# firewall-cmd --permanent --zone=public --add-service=telnet

 

추가한 서비스 중 telnet은 다시 삭제하고

# firewall-cmd --permanent --zone=public --remove-service=telnet

 

서비스 추가 후 서비스 적용을 위해 방화벽 재시작
# firewall-cmd --reload

 

public에 허용 추가된 서비스를 재확인합니다.

# firewall-cmd --list-service --zone=public

위 사진과 같이 정상적으로 3개의 서비스 (http, https, dns)가 추가된 것을 확인할 수 있습니다.

 

 

2. port로 방화벽 허용 등록하기

그럼 이번에는 port를  등록하는 방법을 알아보겠습니다.

8080/tcp와 8081/tcp를 추가하고 8081/tcp는 다시 삭제하는 작업을 해보겠습니다.

 

추가 전에 허용 포트 리스트 확인하고
# firewall-cmd --list-port --zone=public

특정 포트 TCP 8080, 8081 추가를 진행합니다.
# firewall-cmd --permanent --zone=public --add-port=8080/tcp
# firewall-cmd --permanent --zone=public --add-port=8081/tcp

다시 특정 포트 TCP 8081 삭제하고
# firewall-cmd --permanent --zone=public --remove-port=8081/tcp

추가된 포트 적용을 위한 방화벽 재시작을 진행합니다.
# firewall-cmd --reload

허용 포트 리스트 확인하면
# firewall-cmd --list-port --zone=public

위 사진과 같이 8080 포트가 추가되어 있음을 확인할 수 있습니다.

 

 

3. IP 대역으로 방화벽 허용 등록하기

IP로 추가하는 작업은 특정 IP나 IP 대역을 허용할 때 사용 합니다.

10.0.1.0/24, 10.0.2.0/24에 해당하는 IP 대역을 추가하고

10.0.2.0/24는 다시 삭제하는 작업을 해보겠습니다.

 

허용 IP 리스트 확인 (추가 전)
# firewall-cmd --list-sources --zone=public

허용 IP 추가
# firewall-cmd --permanent --zone=public --add-source=10.0.1.0/24
# firewall-cmd --permanent --zone=public --add-source=10.0.2.0/24

허용 IP 삭제
# firewall-cmd --permanent --zone=public --remove-source=10.0.2.0/24

허용 IP 적용을 위한 방화벽 재시작
# firewall-cmd --reload

허용 IP 리스트 확인 (추가 후)
# firewall-cmd --list-sources --zone=public

위 사진과 같이 10.0.1.0/24 대역이 정상적으로 등록되어 있음을 확인할 수 있습니다.

 

 

4. xml 파일을 직접 수정하기

마지막으로는 zone의 xml 파일을 직접 수정하는 작업을 진행해보겠습니다.

일일이 명령어를 입력하기 어렵다면 이 방법이 더 간단할 수 있습니다.

 

우선 /etc/firewalld/zones/ 경로에 있는 public.xml 파일의 내용을 확인해보겠습니다.

#cat /etc/firewalld/zones/public.xml

기본적으로 추가되어있던 서비스 dhcpv6-client 와 ssh 외에 지금까지 작업했었던

3개의 서비스 (http, https, dns), 8080 포트, 10.0.1.0/24 대역이 추가되어 있음을 확인할 수 있습니다.

 

자 그럼 위에서 추가했다가 삭제했던 telnet서비스, 8081포트, 10.0.2.0/24 대역을 xml 파일에

직접 추가하여 정상적으로 적용되는지 보겠습니다.

 

public.xml 파일을 vi 편집기로 열어보겠습니다.

# vi /etc/firewalld/zones/public.xml

 

i 를 입력하여 입력모드로 바꿔준 후 기존에 등록되어있는 값들을 참조하여

아래 사진과 같이 telnet서비스, 8081포트, 10.0.2.0/24 대역을 추가합니다.

수정 작업이 완료되었다면 esc 키를 누르고 :wq를 입력하여 저장 후 빠져나옵니다.

 

수정된 사항 적용을 위한 방화벽 재시작을 진행하고
# firewall-cmd --reload

 

허용 추가된 서비스 확인

# firewall-cmd --list-service --zone=public

 

허용 포트 리스트 확인
# firewall-cmd --list-port --zone=public

 

허용 IP 리스트 확인을 각각 진행해보면
# firewall-cmd --list-sources --zone=public

위 사진과 같이 telnet서비스, 8081포트, 10.0.2.0/24 대역이 정상적으로 추가되었음을

확인할 수 있습니다.

 

 

마치며

오늘은 리눅스 방화벽 firewalld에 대해 알아보았습니다.

 

기본적으로 firewalld서비스를 관리하는 부분부터 서비스, 포트, IP대역으로 

방화벽 허용 등록하는 방법을 알아보았는데요. 

 

오늘 확인한 내용 외에도 다양한 환경과 용도에 따른 활용 방법이 있지만

해당 내용은 나중에 기회가 된다면 다시 다룰 수 있도록 하겠습니다.

 

아마도 본 포스팅 내용만으로도 리눅스 방화벽에 대한 기본 내용과 원하는 항목에 대한

방화벽 허용 등 일반적인 관리에는 문제가 없을 것으로 생각됩니다.

 

읽어주신 모든 분들께 감사드리며 항상 좀 더 유용한 주제로 손쉽게 정리된 내용을 보여드릴 수 있도록 노력하겠습니다.

 

이상 [언제나 서버와 함께하는 몬스터!!!] 서버몬이었습니다. 감사합니다.

 

 

 

 

 

1u서버 / APC / DB / defog / DEFOG랙 / dell5820 / dell5820t / dell7920 / dellpoweredge / dellr240 / dellr340 / dellr350 / dellr450 / dellr540 / dellr630 / dellr640 / dellr740 / dellr750 / dellserver / dellt40 / dellt440 / dellt5820 / dell서버 / DELL서버CPU / DELL서버RAID컨트롤러 / DELL서버SAS하드디스크 / DELL서버가격비교 / DELL서버가격비교견적 / DELL서버견적 / DELL서버구매 / DELL서버디스크교체 / DELL서버메모리 / DELL서버펌웨어 / DELL서버하드디스크구매 / dell워크스테이션 / dl20 / dl20gen10 / dl360 / dl360gen10 / dl380 / dl380g10 / dl380gen10 / ECC메모리 / EDFOG랙가격 / ESTSOFT / FIRMWARE / gpu서버 / gpu타워형서버 / HA솔루션 / hpdl20 / hpdl360 / hpdl360gen10 / hpdl380 / hpdl380g10 / HPE / HPE Service Pack for Proliant / HPE SPP / hpedl20 / hpedl20gen10 / hpedl360gen10 / hpe서버 / HPE서버CPU / HPE서버RAID컨트롤러 / HPE서버SAS하드디스크 / HPE서버가격비교 / HPE서버가격비교견적 / HPE서버견적 / HPE서버구매 / HPE서버드라이버설치 / HPE서버디스크교체 / HPE서버메모리 / HPE서버비용 / HPE서버펌웨어 / HPE서버하드디스크구매 / hpgen10 / hpml30 / hpserver / hpz2 / hpz4 / hpz420 / hpz440 / hpz4g4 / hpz640 / hpz6g4 / hpz8g4 / hp마이크로서버 / hp서버 / hp서버800 / hp서버800w / hp서버cto / hp서버pc / HP서버메모리 / hp서버컴퓨터 / HP서버펌웨어 / HP서버하드디스크 / hp워크스테이션 / hp프로라이언트 / HYPER BACKUP / ibm서버 / Intelligent Provisioning / KVM / KVM 기술지원비(비용) / KVM 설치비 / L2스위치 / L3스위치 / LENONO서버SAS하드디스크 / lenovop620 / lenovor650 / LENOVO서버 / LENOVO서버CPU / LENOVO서버RAID컨트롤러 / LENOVO서버가격비교 / LENOVO서버가격비교견적 / LENOVO서버견적 / LENOVO서버구매 / LENOVO서버디스크교체 / LENOVO서버메모리 / LENOVO서버하드디스크구매 / LENOVO펌웨어업데이트 / Linux / ML30 / ml30gen10 / ML350GEN10 / ML360 / MSSQL / MSSQL 기술지원비(비용) / MSSQL 설치비 / MYSQL / MySQL 기술지원비(비용) / MySQL 설치비 / OS설치 / p17079-b21 / poweredger740 / poweredger750 / precision5820 / QUADRO / QUADRO그래픽카드 / r240 / r340 / r440 / r740 / RHEL설치 / RMS랙 / server / serverpc / SOPHOS / SPP / sr250 / sr650 / SYNOLOGY / SYNOLOGY나스 / UPS / UPS기술지원 / UPS납품 / UPS설치 / V3 / Windows서버설치 / z420 / z620 / z840 / z8g4 / 기술지원비(비용) / 나스기술지원 / 나스설치지원 / 네트워크스위치 / 네트워크장비 / 더블테이크 / 데이터베이스 / 델5820 / 델서버 / 델서버비용 / 델서버펌웨어업데이트 / 델워크스테이션 / 델컴퓨터워크스테이션 / 디포그 / 디포그랙 / 디포그랙가격 / 딥러닝pc / 딥러닝서버 / 랙 / 랙(RACK) 기술지원비(비용) / 랙(RACK) 설치비 / 랙납품설치 / 랙설치 / 레노버p620 / 레노버서버 / 레노버워크스테이션 / 레노보서버 / 레노보서버펌웨어 / 레드헷설치 / 리눅스 기술지원비(비용) / 리눅스 설치비 / 리눅스서버 / 리눅스서버설치 / 리눅스서버트러블슈팅 / 리눅스트러블슈팅 / 리욱스 / 미니서버 / 미니서버랙 / 방화벽 / 방화벽 기술지원비(비용) / 방화벽 설치비 / 방화벽엔지니어 / 백업 / 보안솔루션 / 보안솔루션구매 / 보안솔루션설치 / 서버 / 서버 기술지원비(비용) / 서버 랙마운트비용 / 서버 설치비 / 서버 장애조치비용 / 서버CPU / 서버MEMORY / 서버OS설치 / 서버pc / 서버가격 / 서버구매 / 서버기술지원 / 서버납품 / 서버디스크장애처리 / 서버랙 / 서버렉마운트 / 서버메모리 / 서버몬 / 서버몬기술지원 / 서버백업 / 서버보안 / 서버엔지니어 / 서버용pc / 서버용그래픽카드 / 서버용메모리 / 서버용컴퓨터 / 서버용하드디스크 / 서버컴 / 서버컴퓨터 / 서버트러블슈팅 / 서버호스팅 / 소포스 / 스위치 / 스위치 기술지원비(비용) / 스위치 설치비 / 스토리지 / 스토리지 기술지원비(비용) / 스토리지 랙마운트비용 / 스토리지 설치비 / 스토리지 장애조치비용 / 스토리지납품설치 / 스토리지서버 / 시놀로지DS918 / 시놀로지HyperBackup / 시놀로지나스 / 시놀로지나스백업 / 시놀로지하이퍼백업 / 시큐어디스크 / 안랩 / 알약 / 왼도우서버설치 / 우분투설치 / 워크스테이션 / 워크스테이션pc / 워크스테이션컴퓨터 / 윈도우서버 / 윈도우서버2016 / 윈도우서버2019 / 윈도우서버트러블슈팅 / 윈도우즈 기술지원비(비용) / 윈도우즈 설치비 / 이스트소프트 / 이중화솔루션 / 이중화솔루션구매 / 이중화솔루션설치 / 인터넷디스크 / 작업장컴퓨터 / 제온서버 / 젠서버 / 중고서버 / 중고워크스테이션 / 카보나이트 / 카스퍼스키 / 컴퓨터서버 / 쿼드로P400 / 타워형서버 / 페도라설치 / 프로라이언트 / GPU서버 / 미니서버렉 / 서버용PC / 젠서버 / AI서버 / 제온서버 / 서버가격 / 1U서버 / HPDL20Gen10 / HP서버8SFF800W / 가상서버 / 타워형서버 / HPDL360 / HPDL380Gen10 / 컴퓨터서버 / 미디어서버 / 타워서버 / DB서버 / HP서버580 / HP서버파워 / HPDL360Gen10 / 윈도우서버컴퓨터 / XEON서버 / 881457-B21

댓글