컬쥐네 다락방
리눅스 | 방화벽 (firewall)이란? 본문
방화벽
외부에서 시스템으로 접근하는 패킷을 차단하는 서비스
규칙을 이용해 접근을 허용하거나 차단할 수 있다.
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 |