본문 바로가기

Linux(리눅스)

firewalld 방화벽 설정 하기

 

 

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 대역이 정상적으로 추가되었음을

확인할 수 있습니다.

 

 

 

 

출처 : https://servermon.kr/m/board.html?code=servermon_board2&page=2&type=v&board_cate=&num1=999664&num2=00000&number=317&lock=N#board_comment_list_target