컬쥐네 다락방

리눅스 | 방화벽 (firewall)이란? 본문

클라우드/리눅스

리눅스 | 방화벽 (firewall)이란?

코딩하는 갱얼쥐 2022. 3. 7. 16:41

방화벽

외부에서 시스템으로 접근하는 패킷을 차단하는 서비스

규칙을 이용해 접근을 허용하거나 차단할 수 있다.

 

Netfilter (Kernel)  <-  iptables (명령)  <- iptables (service)

                       <- firewall (service) <- firewall-cmd

                                                 <- firewall-config

firewall (방화벽) 의 도입 배경

기존에 사용하던 iptables는 설정을 변경하면 서비스를 재시작해야만 하는 단점이 있었는데, 이를 개선하여 설정을 변경해도 재시작이 필요없는 방화벽이 도입됐다. 이를 이용해 동적으로 방화벽 설정 변경이 가능해졌다.

-Runtime : 시스템을 운영중인 상태일 때 반영.

-Permanent : 서비스가 재시작 되었을때도 반영. XML 파일

 

Pre-defined-Zone

 

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

**여기서 Drop 존에서는 모든 패킷을 폐기하는데 폐기(Drop)는 패킷을 받으면 응답 없이 버리는 경우이고, 거절 (reject)는 패킷을 받으면 거부한다는 ICMP 패킷을 보내는 것을 의미한다.

 

firewall 커맨드

firewall-cmd 옵션


--state                                            : firewalld 실행 상태 확인
--get-default-zone                             : 현재 기본 영역 표시
--set-default-zone [zone]                     : 기본 영역 설정
--get-zones                                      : 사용가능한 모든 영역 나열
--get-services                                    : 사용가능한 모든 서비스 나열
--get-active-zones                              : 현재 사용중인 모든 영역과 인터페이스 및 소스정보 나열
--add-source=[ip주소] --zone=[zone]     : 출발지 주소 규칙 추가
=> '--zone' 옵션을 통해 zone 지정해주지 않으면 자동으로 기본영역에 추가
--remove-source=[ip주소]                    : IP 주소를 지정된 영역에서 제거
--add-interface=[ifname] --zone=[zone]    : 특정 영역에 interface 연결 추가
--change-interface=[ifname] --zone=[zone] : 영역에 연결된 interface 변경
--list-all --zone=[zone]                         : 영역에 구성된 모든 인터페이스, 소스, 서비스, 포트 나열
--add-service=[service] --zone=[zone]     : 해당 서비스 트래픽 허용
--add-port=[port|protocol] --zone=[zone]  : 해당 포트나 프로토콜 트래픽 허용
 + --permanent                                : 해당 옵션을 사용하지 않으면 현재 설정이 변경되며 영구설정은 지정이 안됨.
--reload                                          : 런타임 구성 삭제, 영구 구성 적용
--runtime-to-permanent                     : 실행중 설정을 영구 설정으로 변경

 

'클라우드 > 리눅스' 카테고리의 다른 글

리눅스 | Apache, 가상 호스트  (0) 2022.03.10
리눅스 | DNS 란?  (0) 2022.03.08
리눅스 | SSH란?  (0) 2022.03.07
리눅스 | 네트워크 설정 feat. nmcli  (0) 2022.03.04
리눅스 | 소프트웨어 추가 / 삭제 (RPM, YUM)  (0) 2022.03.03
Comments