[linux] rocky 방화벽 명령어

Posted by 김성철

rocky linux 방화벽 명령어

참고 링크

https://javaoop.tistory.com/78  
https://mpjamong.tistory.com/130  

리눅스 방화벽 리스트 확인

firewall-cmd --list-all       ## 리눅스 방화벽 PORT 일시적 추가(reload시 초기화)  
firewall-cmd --add-port=9999/tcp       ## 리눅스 방화벽 PORT 영구적 추가  
firewall-cmd --permanent --add-port=9999/tcp       ## 리눅스 방화벽 PORT 일시적 삭제(reload시 초기화)  
firewall-cmd --remove-port=9999/tcp       ## 리눅스 방화벽 PORT 영구적 삭제  
firewall-cmd --permanent --remove-port=9999/tcp       ## 리눅스 방화벽 리로드  
firewall-cmd --reload       ## 리눅스 방화벽 상태  
firewall-cmd --state       ## 리눅스 방화벽 시작  
systemctl start firewalld       ## 리눅스 방화벽 해제  
systemctl stop 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


firewalld 존(zone) 관리

▷ 존(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 서비스는 잘 알려진 포트 또는 어플리케이션 서비스를 사전 정의한 것입니다.
▷ 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


firealld 포트(port) 관리
▷ 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 관리
▷ 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) 현황 확인
▷ 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) 설정
▷ 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