리눅스 FirewallD 설치 및 데몬 설정

리눅스 FirewallD는 iptables의 체인과 정책이라는 규칙 대신 Zone과 Service를 대신 사용합니다. Firewalld를 사용하는 이유는 iptables의 규칙이 복잡하기 때문에 iptables 대신 사용할 수 있도록 하기 위함입니다.

  • 리눅스 Firewalld 특징
  • iptables는 재설정 시 기존 세션이 끊어지지만 Firewalld는 기존 세션을 유지하면서 업데이트가 가능합니다.
  • Zone과 Service를 사용

✅ 리눅스 FirewallD 설치하기

리눅스 서버에 설치 여부를 먼저 확인합니다.

rpm -qa | grep firewalld

설치되어 있지 않다면 아무 것도 나오지 않습니다.

# dnf: 록키 리눅스 | yum CentOS
dnf -y install firewalld
Last metadata expiration check: 0:37:56 ago on Sun Jan  7 12:34:52 2024.
Dependencies resolved.
==========================================================================================================================================================================================================
 Package                                                 Architecture                              Version                                             Repository                                    Size
==========================================================================================================================================================================================================
Installing:
 firewalld                                               noarch                                    1.2.5-2.el9_3                                       baseos                                       446 k
Installing dependencies:
 firewalld-filesystem                                    noarch                                    1.2.5-2.el9_3                                       baseos                                       8.2 k
 ipset                                                   x86_64                                    7.11-8.el9                                          baseos                                        42 k
 ipset-libs                                              x86_64                                    7.11-8.el9                                          baseos                                        69 k
 iptables-nft                                            x86_64                                    1.8.8-6.el9_1                                       baseos                                       185 k
 libnftnl                                                x86_64                                    1.2.2-1.el9                                         baseos                                        83 k
 nftables                                                x86_64                                    1:1.0.4-11.el9_3                                    baseos                                       398 k
 python3-firewall                                        noarch                                    1.2.5-2.el9_3                                       baseos                                       348 k
 python3-nftables                                        x86_64                                    1:1.0.4-11.el9_3                                    baseos                                        19 k
Installing weak dependencies:
 libcap-ng-python3                                       x86_64                                    0.8.2-7.el9                                         appstream                                     29 k

Transaction Summary
==========================================================================================================================================================================================================
Install  10 Packages

Total download size: 1.6 M

✅ 리눅스 Firewalld 데몬 시작

# firewalld 서비스를 시작
systemctl start firewalld
# firewalld 서비스 중지
systemctl stop firewalld
# firewalld 서비스 활성화(재부팅)
systemctl enable firewalld
# 설정 후 설정 즉시 로드
firewall-cmd --reload

### firewalld 방화벽 상태 확인 ###
systemctl status firewalld
## 상태 조회 중 메시지 확인 시 AllowZoneDrifting가 yes로 설정되어 있는 경우 나오는 메시지 
WARNING: AllowZoneDrifting is enabled. This is considered an insecure configur...t now.
vi /etc/firewalld/firewalld.conf
AllowZoneDrifting=yes
no로  두는 것이 좋다는.. 
systemctl firewalld restart 
AllowZoneDrifting 참조

✅ firewalld zone 설정 확인

  • firewalld 옵션
  • –permanent : 영구적으로 실행(default zone에 등록)
  • –add-service: 서비스 추가
  • –remove-service 서비스 삭제
# 기본 설정 ZONE 확인
~]# firewall-cmd --get-default-zone
publi
# 네트워크 인터페이스에서 사용하는 영역 확인
firewall-cmd --get-active-zones
public
  interfaces: eth0
# 특정 영역의 모든 구성 확인
firewall-cmd --zone=public --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources: 
  services: cockpit dhcpv6-client ssh
  ports: 
  protocols: 
  forward: yes
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 
# 모든 영역의 모든 구성 확인
firewall-cmd --list-all-zones
 firewall-cmd --list-all-zones
block
  target: %%REJECT%%
  icmp-block-inversion: no
  interfaces: 
  sources: 
  services: 
  ports: 
  protocols: 
  forward: yes
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 

dmz
  target: default
  icmp-block-inversion: no
  interfaces: 
  sources: 
  services: ssh
  ports: 
  protocols: 
  forward: yes
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 

drop
  target: DROP
----- 이하 생략 -----

✅ firewalld zone 설정하기

1. 포트 설정

# 포트 허용하기: 임의 3391 포트 허용 및 거부 | permanent(영구적인)로 영구 설정
firewall-cmd --zone=public --add-port=3391/tcp
firewall-cmd --zone=public --add-port=3391/tcp --permanent 
 
firewall-cmd --zone=public --remove-port=3391/tcp --permanent
# 설정 후 설정 즉시 로드
firewall-cmd --reload
# 설정된 포트 보기
firewall-cmd --zone=public --list-ports

2. IP 설정

### IP대역에 대해 방화벽 해제하기
# 추가(접근 허용) 하기
firewall-cmd --permanent --add-source=192.168.0.0/24
# 제거하기
firewall-cmd --permanent --remove-source=192.168.0.0/24
## 특정 IP 접근 허용
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address=210.192.3.118 reject' 
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address==210.192.3.118 drop'   
# 설정된 방화벽 리스트 보기
firewall-cmd --zone=public --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources: 
  services: cockpit dhcpv6-client ssh
  ports: 3391/tcp
  protocols: 
  forward: yes
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 
	rule family="ipv4" source address="192.168.0.0/24" port port="8000" protocol="tcp" accept

3. http, https 서비스 추가 및 해제

# 서비스 추가
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
# 서비스 해제
sudo firewall-cmd --permanent --remove-service=http
sudo firewall-cmd --permanent --remove-service=http

리눅스 FirewallD 설치 및 운영 방법에 대해 간단히 알아 봤습니다.

리눅스Linux(회색 배경의 나무 큐브)

Similar Posts

  • 리눅스 서버 시간 동기화: timedatectl(CentOS7 이상)

    리눅스에서 날짜 및 시간 설정이 필요한 이유는 서버 운영 중 시간이 잘못되면, 입력되는 DB데이터, 로그 데이터, 웹 서버에 접속한 기록 등의 시간이 맞지 않는 경우가 발생할 수 있기 때문입니다. 리눅스 서버 시간 동기화를 사용하는데 있어 OS는 두 개의 시계를 가지고 있습니다.시스템 시계(소프트웨어 시계), 하드웨어 시계(실시간 시계, BIOS 시계)입니다. 목차✅ 리눅스 FirewallD 설치하기✅ 리눅스…

  • 리눅스 cd 명령어

    cd 명령어는 “Change Directory”의 약자로, 현재 작업 디렉토리(현재 위치)를 다른 디렉토리로 이동할 때 사용하는 명령어입니다. 목차✅ 리눅스 FirewallD 설치하기✅ 리눅스 Firewalld 데몬 시작✅ firewalld zone 설정 확인✅ firewalld zone 설정하기1. 포트 설정2. IP 설정3. http, https 서비스 추가 및 해제✅ cd 명령어 기본 사용 방법 ✅ 사용 예시 cd 명령은 절대 경로(/부터 시작)를…

  • [Linux] etc 디렉토리의 이해 | /etc 폴더의 주요 파일&폴더

    목차✅ 리눅스 FirewallD 설치하기✅ 리눅스 Firewalld 데몬 시작✅ firewalld zone 설정 확인✅ firewalld zone 설정하기1. 포트 설정2. IP 설정3. http, https 서비스 추가 및 해제✅ 리눅스 etc 디렉토리란? 리눅스 /etc 디렉토리는 부팅 및 셧다운 시 필요한 파일과 시스템 설정에 관련된 파일 및 일부 로그 파일이 있는 디렉토리입니다. “etc”는 기타, 등등을 뜻 하는 etcetera의…

  • Linux: crontab 설정

    윈도우 스케줄러와 비슷한 개념의 리눅스 crontab은 주기적으로 홈페이지 및 DB 데이터를 백업해야 하거나 특정 시간에 로그 파일 등을 삭제해서 서버 유지 관리가 필요한 경우에 사용되는 스케줄러입니다. 크론탭은 특정 시간에 주기적으로 작업이 자동으로 이루어지도록 설정하는 것을 의미합니다. 목차✅ 리눅스 FirewallD 설치하기✅ 리눅스 Firewalld 데몬 시작✅ firewalld zone 설정 확인✅ firewalld zone 설정하기1. 포트 설정2….

  • 리눅스 데몬이란? 독립형(Standalone) 방식과 슈퍼데몬 방식(xinetd)

    리눅스 데몬(Daemon)이란 사용자가 직접 제어하지 않고 백그라운드에서 실행되는 여러 작업을 하는 프로그램을 뜻 합니다. 뒤에 ‘d’로 끝나며 보통 프로세스로 실행됩니다. 목차✅ 리눅스 FirewallD 설치하기✅ 리눅스 Firewalld 데몬 시작✅ firewalld zone 설정 확인✅ firewalld zone 설정하기1. 포트 설정2. IP 설정3. http, https 서비스 추가 및 해제✅ 리눅스 데몬의 2가지 방식 리눅스에서 데몬이 운영되는 방식은…

  • Apache http2 적용하기(mod_http2)

    리눅스 서버에 Apache를 설치하게 되면, 기본 프로토콜은 HTTP/1.1을 기본으로 통신하게 되어 있다. Apache http2는 Apache 2.4.17 버전 부터 DSO 모듈로(mod_http2.so) HTTP/2를 지원한다. HTTP/2(Hypertext Transfer Protocol Version 2)는 월드 와이드 웹에서 쓰이는 HTTP 프로토콜의 두 번째 버전이다. 목차✅ 리눅스 FirewallD 설치하기✅ 리눅스 Firewalld 데몬 시작✅ firewalld zone 설정 확인✅ firewalld zone 설정하기1. 포트 설정2….

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

Prove your humanity: 2   +   2   =