윈도우즈 OS에서 기본 제공하는 Windows Defender 방화벽과 같이 CentOS에서도 firewalld라는 이름으로 시스템 방화벽을 제공하고 있습니다. iptable이라는 방화벽도 있지만, 이번 포스팅에서는 firewalld 사용법에 대해 알아보겠습니다.
▷ firewalld를 사용하기 위해서는 아래의 명령어와 같이 firewalld 서비스를 다루는 명령어를 반드시 알고 있어야 합니다.
# 서비스 시작
[root@localhost ~]# systemctl start firewalld
# 서비스 재시작
[root@localhost ~]# systemctl restart firewalld
# 서비스 중지
[root@localhost ~]# systemctl stop firewalld
# 서비스 등록
[root@localhost ~]# systemctl enable firewalld
# 서비스 상태 확인
[root@localhost ~]# systemctl status firewalld
# firewalld 정책 저장 또는 적용
[root@localhost ~]# firewall-cmd --reload
# firewalld 설정파일 경로
[root@localhost ~]# vi /etc/firewalld/firewalld.conf
▷ 존(zone)은 방화벽에서 사용하는 영역별 그룹이라고 보면 됩니다. 방화벽을 기준으로 외부는 External(외부), 내부는 Internal(내부), 중간 영역인 DMZ 등 다양한 존으로 나눠서 그룹 관리가 가능합니다.
▷ firewalld 에서 기본으로 제공하는 존(zone)이 있으며, 신규 추가하여 사용도 가능합니다. 자세한 내용은 아래 내용을 참고하기 바랍니다.
# 사전 정의된 zone 목록 확인
[root@localhost ~]# firewall-cmd --get-zones
block dmz drop external home internal public trusted work
# 기본 설정 zone 확인
[root@localhost ~]# firewall-cmd --get-default-zone
public
# 기본 zone 변경
[root@localhost ~]# firewall-cmd --set-default-zone=external
# 현재 설정 확인
[root@localhost ~]# firewall-cmd --list-all
# 전체 zone 목록 상세 확인
[root@localhost ~]# firewall-cmd --list-all-zones
# 네트워크 인터페이스에 적용된 zone 리스트 확인 (변경 전)
[root@localhost ~]# firewall-cmd --get-active-zone
external
interfaces: enp0s8 enp0s3
# 네트워크 인터페이스에 zone 변경
[root@localhost ~]# firewall-cmd --change-interface=enp0s3 --zone=public
# 네트워크 인터페이스에 적용된 zone 리스트 확인 (변경 후)
[root@localhost ~]# firewall-cmd --get-active-zone
external
interfaces: enp0s8
public
interfaces: enp0s3
# 신규 zone 추가
[root@localhost ~]# firewall-cmd --permanent --new-zone=test
success
# 기존 zone 삭제
[root@localhost ~]# firewall-cmd --permanent --delete-zone=test
success
▷ firewalld 서비스는 잘 알려진 포트 또는 어플리케이션 서비스를 사전 정의한 것입니다.
▷ firewalld 서비스를 이용하면 ssh, telnet, icmp, mysql 등 잘 알려진 어플리케이션에 대해 별도 포트로 설정하지 않고 서비스 이름으로 관리가 가능합니다.
# 사전 등록된 서비스 목록 확인
[root@localhost ~]# firewall-cmd --get-services
# 사전 정의된 서비스 파일 위치
[root@localhost ~]# firewall-cmd --get-services
# 특정 zone에 허용된 서비스 리스트 확인 (서비스 추가 전)
[root@localhost ~]# firewall-cmd --list-service --zone=public
cockpit dhcpv6-client ssh
# 특정 zone에 서비스 추가 (http, https, dns, telnet)
[root@localhost ~]# firewall-cmd --permanent --zone=public --add-service=http
[root@localhost ~]# firewall-cmd --permanent --zone=public --add-service=https
[root@localhost ~]# firewall-cmd --permanent --zone=public --add-service=dns
[root@localhost ~]# firewall-cmd --permanent --zone=public --add-service=telnet
# 특정 zone에 서비스 삭제 (telnet)
[root@localhost ~]# firewall-cmd --permanent --zone=public --remove-service=telnet
# 서비스 추가 후 서비스 적용을 위해 방화벽 재시작
[root@localhost ~]# firewall-cmd --reload
# 특정 zone에 허용된 서비스 리스트 확인 (서비스 추가 후)
[root@localhost ~]# firewall-cmd --list-service --zone=public
cockpit dhcpv6-client dns http https ssh
▷ firewalld 포트(port)는 위에서 설명한 firewalld 서비스에서 언급되지 않은 서비스의 포트를 등록할 때 사용합니다.
# 허용 포트 리스트 확인 (추가 전)
[root@localhost ~]# firewall-cmd --list-port --zone=public
# 특정 포트 TCP 8080, 8081 추가
[root@localhost ~]# firewall-cmd --permanent --zone=public --add-port=8080/tcp
[root@localhost ~]# firewall-cmd --permanent --zone=public --add-port=8081/tcp
# 특정 포트 TCP 8081 삭제
[root@localhost ~]# firewall-cmd --permanent --zone=public --remove-port=8081/tcp
# 포트 적용을 위한 방화벽 재시작
[root@localhost ~]# firewall-cmd --reload
# 허용 포트 리스트 확인 (추가 후)
[root@localhost ~]# firewall-cmd --list-port --zone=public
8080/tcp
▷ firewalld IP는 특정 IP나 IP 대역을 허용할 때 사용 합니다.
# 허용 IP 리스트 확인 (추가 전)
[root@localhost ~]# firewall-cmd --list-sources --zone=public
# 허용 IP 추가
[root@localhost ~]# firewall-cmd --permanent --zone=public --add-source=10.0.2.0/24
[root@localhost ~]# firewall-cmd --permanent --zone=public --add-source=10.0.3.0/24
# 허용 IP 삭제
[root@localhost ~]# firewall-cmd --permanent --zone=public --remove-source=10.0.3.0/24
# 허용 IP 적용을 위한 방화벽 재시작
[root@localhost ~]# firewall-cmd --reload
# 허용 IP 리스트 확인 (추가 후)
[root@localhost ~]# firewall-cmd --list-sources --zone=public
10.0.2.0/24
▷ firewalld 에서 생성한 정책(rule)은 존(zone)별로 관리되며, 아래 경로에서 확인할 수 있습니다.
→ 정책 경로 : /etc/firewalld/zones
# firewalld zone 경로 확인
[root@localhost ~]# ls -al /etc/firewalld/zones
total 20
drwxr-x---. 2 root root 110 Jan 10 08:29 .
drwxr-x---. 7 root root 159 Jan 10 08:25 ..
-rw-r--r--. 1 root root 304 Jan 10 07:53 external.xml
-rw-r--r--. 1 root root 328 Jan 10 07:53 external.xml.old
-rw-r--r--. 1 root root 489 Jan 10 08:28 public.xml
-rw-r--r--. 1 root root 523 Jan 10 08:28 public.xml.old
-rw-r--r--. 1 root root 54 Jan 10 07:30 test.xml.old
# public zone 정책 확인
[root@localhost ~]# cat /etc/firewalld/zones/public.xml
▷ firewalld 로깅(logging)은 방화벽에 접근한 로그를 남기는 것입니다. 로깅(lgging) 설정 방법은 아래와 같습니다.
# firewalld.conf에서 로깅 설정 변경
[root@localhost ~]# vi /etc/firewalld/firewalld.conf
LogDenied=off
->
LogDenied=all
# 서비스 재시작
[root@localhost ~]# systemctl restart firewalld
# 설정 확인
[root@localhost ~]# firewall-cmd --get-log-denied
# 로그 보기
[root@localhost ~]# dmesg | grep -i REJECT
# 로그 파일 생성 후 로깅 설정 (신규 파일 생성 후 아래 내용 추가)
[root@localhost ~]# vi /etc/rsyslog.d/firewalld-droppd.conf
:msg,contains,"_DROP" /var/log/firewalld-droppd.log
:msg,contains,"_REJECT" /var/log/firewalld-droppd.log
& stop
# rsyslog 서비스 재시작
[root@localhost ~]# systemctl restart rsyslog.service
# deny log 확인
[root@localhost ~]# tail -f /etc/firewalld-droppd.log
▽ 같이 보면 더 좋은 블로그 글 ▽
[CentOS 8] 트립와이어(tripwire) 설치와 사용법 (0) | 2021.01.15 |
---|---|
[CentOS 8] ClamAV 설치와 사용법 (2) | 2021.01.14 |
[CentOS 8] 네임서버 존 파일 작성 방법 (0) | 2021.01.07 |
[CentOS 8] 네임서버 named.conf 파일 설명 (8) | 2021.01.06 |
[CentOS 8] 마스터 네임서버 구축 방법 (4) | 2021.01.05 |
댓글 영역