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 대역이 정상적으로 추가되었음을
확인할 수 있습니다.
'Linux(리눅스)' 카테고리의 다른 글
nginx config 설정 녹취프로젝트 (0) | 2024.01.03 |
---|---|
윈도우에 WSL2 설치하기 + Ubuntu(우분투) OR CentOS(센토스) (2) | 2023.10.16 |
리눅스 사용자 변경 (CentOS 사용자 변경) (2) | 2021.08.03 |
리눅스에서 사용자 생성하는 방법을 알아보자 ! (리눅스 사용자 만들기, 리눅스 사용자 추가) (0) | 2021.08.03 |