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
[root@localhost ~]## firewall-cmd –reload
[root@localhost ~]## vi /etc/firewalld/firewalld.conf
firewalld 존(zone) 관리
▷ 존(zone)은 방화벽에서 사용하는 영역별 그룹이라고 보면 됩니다. 방화벽을 기준으로 외부는 External(외부), 내부는 Internal(내부), 중간 영역인 DMZ 등 다양한 존으로 나눠서 그룹 관리가 가능합니다.
▷ firewalld 에서 기본으로 제공하는 존(zone)이 있으며, 신규 추가하여 사용도 가능합니다. 자세한 내용은 아래 내용을 참고하기 바랍니다.
[root@localhost ~]## firewall-cmd –get-zones
block dmz drop external home internal public trusted work
[root@localhost ~]## firewall-cmd –get-default-zone
public
[root@localhost ~]## firewall-cmd –set-default-zone=external
[root@localhost ~]## firewall-cmd –list-all
[root@localhost ~]## firewall-cmd –list-all-zones
[root@localhost ~]## firewall-cmd –get-active-zone
external
interfaces: enp0s8 enp0s3
[root@localhost ~]## firewall-cmd –change-interface=enp0s3 –zone=public
[root@localhost ~]## firewall-cmd –get-active-zone
external
interfaces: enp0s8
public
interfaces: enp0s3
[root@localhost ~]## firewall-cmd –permanent –new-zone=test
success
[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
[root@localhost ~]## firewall-cmd –list-service –zone=public
cockpit dhcpv6-client ssh
[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
[root@localhost ~]## firewall-cmd –permanent –zone=public –remove-service=telnet
[root@localhost ~]## firewall-cmd –reload
[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
[root@localhost ~]## firewall-cmd –permanent –zone=public –add-port=8080/tcp
[root@localhost ~]## firewall-cmd –permanent –zone=public –add-port=8081/tcp
[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 대역을 허용할 때 사용 합니다.
[root@localhost ~]## firewall-cmd –list-sources –zone=public
[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
[root@localhost ~]## firewall-cmd –permanent –zone=public –remove-source=10.0.3.0/24
[root@localhost ~]## firewall-cmd –reload
[root@localhost ~]## firewall-cmd –list-sources –zone=public
10.0.2.0/24
firewalld 정책(rule) 현황 확인
▷ firewalld 에서 생성한 정책(rule)은 존(zone)별로 관리되며, 아래 경로에서 확인할 수 있습니다.
→ 정책 경로 : /etc/firewalld/zones
[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
[root@localhost ~]## cat /etc/firewalld/zones/public.xml
firewalld 로깅(logging) 설정
▷ firewalld 로깅(logging)은 방화벽에 접근한 로그를 남기는 것입니다. 로깅(lgging) 설정 방법은 아래와 같습니다.
[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
[root@localhost ~]## systemctl restart rsyslog.service
[root@localhost ~]## tail -f /etc/firewalld-droppd.log