0과 1을 공부하다.

[Linux] Rocky 8 방화벽(Firewall) 설정 본문

Study/Linux

[Linux] Rocky 8 방화벽(Firewall) 설정

Developer_Jay 2022. 6. 27. 17:24
728x90

 

방화벽 개요


 방화벽(Firewall)의 원래 의미는 건물에서 발생한 화재가 더 이상 번지는 것을 막기 위한 시설이다. 이러한 의미는 네트워크상에서 동일한 의미로 사용되고 있으며, 주체가 화재에서 불법적인 트래픽으로 바꼈다는 것이다. 네트워크상에서 불법적인 보안사고를 방지하기 위해 트래픽을 관제하고 정해진 룰에 따라 차단 및 거부를 수행한다.  이로써 사전에 불법적인 행위를 차단하여 공격자로부터 불법행위를 방지할 수 있는 기능을 한다. 

※ 본 글은 Linux Rocky 8(Red Hat 계열) 기준에서 작성하였다. 

 

방화벽 설치 및 실행

 

# 설치
$ yum install firewalld 

# 상태확인 
$ systemctl status firewalld

# 서비스 시작 
$ systemctl start firewalld

# 서비스 종료
$ systemctl stop firewalld

# 서비스 활성화(부팅시에 실행)
$ systemctl enable firewalld

# 서비스 비활성화(부팅시에 실행하지 않음)
$ systemctl disable firewalld

 

 

 

존(Zone) 설정


 방화벽에서 존(Zone)은 서버의 용도에 맞게 미리 정의된 네트워크 보안 레벨을 의미한다. 기본 디폴트는 public zone으로 설정되어 있다. public zone 외에도 목적에 맞는 다른 존이 존재하는데 각 존이 해당하는 의미는 아래와 같다.

Zone   내용
Public 서비스를 제공하는 특별한 포트로의 연결만을 허용하고, 그 외 포트로의 연결은 모두 거부되며 기본 Zone으로 사용된다.
Drop Iptables에서 사용하던 DROP과 동일하며, 들어오는 모든 패킷은 버려지고 이에 대한 응답 메시지도 보내지 않으며 단지 외부로로 나가는 연결만 허용된다. 
Block Drop 존처럼 들어오는 모든 네트워크 연결은 거부되는데, 이에 대해 단지 icmp-host-prohibited와 i cmp6-prohibited라는 응답 메시지를 보낸다. 그러나 시스템 내부에서 시작된 연결은 허용된다. 
External 특별히 매스커레이딩 규칙이 적용되는 외부의 라우터를 위해 사용되며, 단지 내부로의 연결 요청 중에서 선택된 연결만을 허용 
DMZ 내부 네트워크로의 접근은 제한적으로 허용되지만, 공개된 네트워크에 대한 접근을 허용하는 경우에 사용되며 이 경우도 선택된 연결만이 허용된다. 
Work 같은 회사에 위치한 네트워크를 위해 사용되며, 대부분 같은 네트워크에 위치한 다른 시스템을 신뢰하고 오직 선택된 연결만을 접속 허용한다. 
Home 홈 영역을 위해 사용되며, 네트워크에 존재하는 다른 시스템을 신뢰하고 오직 선택된 연결만을 접속 허용한다. 
Internal 내부 네트워크를 위해 사용되고, 선택된 연결만을 접속 허용한다. 
Trusted 모든 네트워크 접속 연결을 허용하는 경우 사용한다. 

※ 출처: https://sepiros.tistory.com/7

 


현재 자신의 존을 확인하는 명령어는 아래와 같다.

$ firewall-cmd --get-default-zone


다른 존으로 변경하는 명령어는 아래와 같다.

$ firewall-cmd --set-default-zone=ZoneName


Zone을 설정하는 방법은 구성파일에 직접 작성하는 방법과 명령어로 입력하는 방법이 있다.
구성파일은 public(/etc/firewalld/zones/public.xml), internal(/etc/firewalld/zones/internal.xml)에서 편집 가능하다. 

명령어로 존에 특정 서비스를 추가하고 제거하는 명령어는 아래와 같다.

# public zone에 https 서비스를 추가한다.
$ firewall-cmd --zone=public --add-service=https
# public zone에 ssh 서비스를 제거한다. 
$ firewall-cmd --zone=public --remove-service=ssh


아래 명령어와 같이 포트번호와 프로토콜을 입력하여 추가할 수도 있다.

$ firewall-cmd --zone=public --permanent --add-port=10443/tcp

 

$ firewall-cmd --runtime-to-permanent # 추가/제거한 서비스를 영구적으로 적용한다. (구성파일에 쓰기)
$ firewall-cmd --reload # 정책 적용
$ firewall-cmd --list-all --zone=public # public zone 확인
$ firewall-cmd --list-all --zone=internal # internal zone 확인


방화벽을 재실행하여 현재 정책을 적용한다.

$ systemctl restart firewalld

 

 

 

※ 본 게시글의 정보가 잘못 되었거나 부족한 부분에 대한 피드백을 환영합니다.

 

 

* CopyRight 2022. Jay Park All rights reserved.

728x90
Comments