-
LINUX Centos 7 방화벽 설정 및 확인System of Infra/Linux System 2021. 6. 1. 22:32728x90반응형
LINUX Centos 7 방화벽 설정 및 확인
[root@test_svr1 /]# netstat -ntl Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:6000 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:8088 0.0.0.0:* LISTEN tcp6 0 0 :::3306 :::* LISTEN tcp6 0 0 :::111 :::* LISTEN tcp6 0 0 :::6000 :::* LISTEN tcp6 0 0 :::22 :::* LISTEN tcp6 0 0 ::1:631 :::* LISTEN tcp6 0 0 :::33060 :::* LISTEN
-> 시스템의 방화벽과 관련된 포트를 확인합니다. netstat -ntl 명령어를 통해서 방화벽에서 관리하는 포트를 나타냅니다. 현재 LISTEN 상태로 포트는 열려 있지만 연결을 되어 있지 않은 상태입니다.
[root@test_svr1 /]# firewall-cmd --state running
-> 방화벽의 데몬을 간단하게 확인을 할 수 있습니다. firewall-cmd -state 명령어를 통해서 running 상태를 확인할 수 있습니다.
[root@test_svr1 /]# systemctl status firewalld * firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled) Active: active (running) since Fri 2021-05-28 14:21:11 KST; 2h 3min ago(현재 활성화 되어 있는 상태) Docs: man:firewalld(1) Main PID: 4540 (firewalld) Tasks: 2 CGroup: /system.slice/firewalld.service `-4540 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid May 28 16:08:29 test_svr1 firewalld[4540]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w2 -w --tabl...n?). May 28 16:08:29 test_svr1 firewalld[4540]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w2 -w --tabl...n?). May 28 16:08:29 test_svr1 firewalld[4540]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w2 -w --tabl...n?). May 28 16:08:29 test_svr1 firewalld[4540]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w2 -w --tabl...ame. May 28 16:08:29 test_svr1 firewalld[4540]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w2 -w --tabl...ame. May 28 16:08:29 test_svr1 firewalld[4540]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w2 -w --tabl...n?). May 28 16:08:29 test_svr1 firewalld[4540]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w2 -w --tabl...n?). May 28 16:08:29 test_svr1 firewalld[4540]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w2 -w --tabl...n?). May 28 16:08:29 test_svr1 firewalld[4540]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w2 -w --tabl...n?). May 28 16:08:29 test_svr1 firewalld[4540]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w2 -w --tabl...n?). Hint: Some lines were ellipsized, use -l to show in full.
-> firewall의 데몬의 상태를 자세하게 확인을 하기 위해서 해당 명령어를 사용하여 확인합니다.
[root@test_svr1 /]# firewall-cmd --get-zones block dmz drop external home internal public trusted work
-> 현재 시스템의 방화벽에 설정되어 있는 ZONE을 모두 확인할 수 있는 명령어 입니다. 출력을 통해서 block, dmz, drop, external, home, internal, public, trusted, work의 ZONE으로 구성되어 있는걸 확인 할 수입니다. 추가적으로 Public의 경우 일반적으로 default로 지정되어 있는 ZONE일 가능성이 높습니다.
[root@test_svr1 /]$ firewall-cmd --get-default-zone public
-> 여러 ZONE 중에서 현재 default의 ZONE이 public 인 것을 확인할 수 있습니다.
[root@test_svr1 /]$ firewall-cmd --get-active-zones public interfaces: bond0 enp7s0f1 enp7s0f0
-> 추가적으로 현재 default의 ZONE이 public 이면서 IP 통신을 할 수 있는 Interface의 구성도 함께 확인을 할 수 있습니다.
[root@test_svr1 bonding]$ cat bond0 Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011) Bonding Mode: fault-tolerance (active-backup) Primary Slave: enp7s0f0 (primary_reselect always) Currently Active Slave: enp7s0f0 MII Status: up MII Polling Interval (ms): 100 Up Delay (ms): 0 Down Delay (ms): 0 Slave Interface: enp7s0f1 MII Status: up Speed: 1000 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: 80:c1:6e:6d:xx:xx Slave queue ID: 0 Slave Interface: enp7s0f0 MII Status: up Speed: 1000 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: 80:c1:6e:6d:xx:xx Slave queue ID: 0
-> 해당 시스템의 경우 Interface를 통해서 bonding 이중화로 네트워크 구성되어 있는 것을 확인할 수 있습니다.
[root@test_svr1 /]# firewall-cmd --list-all public (active) target: default icmp-block-inversion: no interfaces: bond0 enp7s0f1 enp7s0f0 sources: services: ssh dhcpv6-client http https ports: 22/tcp protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
-> 방화벽 설정 항목 list를 통해서 현재 bonding으로 구성되어 있는 Interface와 현재 사용하고 있는 서비스 프로토콜 및 포트를 확인할 수 있습니다.
[root@test_svr1 /]# firewall-cmd --zone=public --list-all public (active) target: default icmp-block-inversion: no interfaces: bond0 enp7s0f1 enp7s0f0 sources: services: ssh dhcpv6-client http https ports: 22/tcp protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
-> 현재 default가 public으로 구성되어 있고 public ZONE에 구성되어 있는 설정 상태를 확인할 수 있습니다. 현재는 ssh, dhcpv6-client, http, https와 같은 서비스 프로토콜을 사용하고 있고 있고 포트는 22/tcp 포트를 사용하고 있는 것을 볼 수 있습니다.
[root@test_svr1 /]# firewall-cmd --add-service=ftp success
-> 현재 구성되어 있는 서비스 외에 서비스를 방화벽 설정에 추가를 할 경우 add 명령어를 통해서 ftp 서비스를 추가해 보도록 하겠습니다.
[root@test_svr1 /]# firewall-cmd --zone=public --list-all public (active) target: default icmp-block-inversion: no interfaces: bond0 enp7s0f1 enp7s0f0 sources: services: ssh dhcpv6-client http https ftp(추가) ports: 22/tcp protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
-> default인 public ZONE에서 서비스 부분에 https의 뒤로 ftp 서비스가 추가된 것을 확인할 수 있습니다.
[root@test_svr1 /]# firewall-cmd --remove-service=ftp success
-> 반대로 방화벽 설정에 추가되었던 ftp 포트를 remove를 통해서 삭제해보도록 하겠습니다.
[root@test_svr1 /]# firewall-cmd --zone=public --list-all | grep -i services services: ssh dhcpv6-client http https
-> 마찬가지로 default인 public ZONE에서 서비스 부분에 https의 뒤로 ftp 서비스가 사라진 것을 확인할 수 있습니다.
[root@test_svr1 /]# netstat -an | grep -i 8090
-> 이번에는 프로토콜이 아닌 포트를 추가해주기 위해서 임시로 8090 포트가 현재 사용 중인지 확인을 하였고 현재 netstat 경로에 8090 포트가 사용되지 않는 것을 확인할 수 있습니다.
[root@test_svr1 /]# firewall-cmd --add-port=8090/tcp success
-> 8090 포트를 방화벽 설정에 추가합니다.
[root@test_svr1 /]#iptables -nL Chain IN_public_allow (1 references) target prot opt source destination ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22 ctstate NEW ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 ctstate NEW ...(생략) ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:8090 ctstate NEW
-> iptable에 추가한 방화벽 포트가 룰로 생성되어 있는 것을 확인할 수 있습니다.
[root@test_svr1 /]# iptables -nL | grep -i 8090 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:8090 ctstate NEW
-> 특정 포트를 grep으로 필터링하여 확인합니다.
[root@test_svr1 /]# firewall-cmd --zone=public --list-all | grep -i 8090/tcp ports: 22/tcp 8090/tcp
-> 방화벽의 설정에서 기존 22 ssh 포트만 사용하고 있던 방화벽 설정에서 8090 포트가 추가된 것을 확인할 수 있습니다.
[root@test_svr1 /]# firewall-cmd --remove-port=8090/tcp success
-> 추가하였던 8090 포트를 삭제하도록 합니다.
[root@test_svr1 /]# iptables -nL | grep -i 8090 Chain IN_public_allow (1 references) target prot opt source destination ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22 ctstate NEW ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 ctstate NEW ...(생략)
-> iptable에 추가되었던 8090 포트가 사라진 것을 확인할 수 있습니다.
[root@test_svr1 /]# firewall-cmd --zone=public --list-all public (active) target: default icmp-block-inversion: no interfaces: bond0 enp7s0f1 enp7s0f0 sources: services: ssh dhcpv6-client http https ports: 22/tcp protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
-> firewall 방화벽 설정 역시 port 항목에 처음과 같이 22/tcp 포트만 남고 삭제가 된 것을 확인할 수 있습니다.
[root@test_svr1 /]# firewall-cmd --list-all block target: %%REJECT%% icmp-block-inversion: no interfaces: sources: services: ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules: ...(생략) dmz target: default icmp-block-inversion: no interfaces: sources: services: ssh ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
-> 현재 시스템의 방화벽 ZONE list를 모두 확인합니다.
[root@test_svr1 /]# firewall-cmd --zone=dmz --add-service=ftp success
-> 그렇다면 기존에는 default에 add 항목으로 자동으로 추가되었지만 사용하지 않고 있는 ZONE에 서비스 프로토콜에 추가를 하기 위해서 DMZ ZONE에 ftp 서비스를 추가하도록 하겠습니다.
[root@test_svr1 /]# firewall-cmd --list-all-zone dmz target: default icmp-block-inversion: no interfaces: sources: services: ssh ftp ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
-> default의 ZONE public이 아닌 DMZ에 할당을 해주었기 때문에 services: ftp가 추가된 것을 확인할 수 있습니다.
[root@test_svr1 /]# firewall-cmd --zone=dmz --remove-service=ftp success
-> 위에서 사용했던 명령어 동일하게 ZONE을 dmz로 주고 ftp를 삭제하도록 합니다.
[root@test_svr1 /]# firewall-cmd --list-all-zone dmz target: default icmp-block-inversion: no interfaces: sources: services: ssh ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
-> 방화벽 DMZ 설정에서 해당 서비스가 ssh와 ftp로 구성되어 있는 상태에서 ftp가 삭제된 것을 확인할 수 있습니다. 이와 마찬가지로 포트를 추가해주는 것도 동일하게 적용시키면 될 것 같습니다.
PS. 포스팅의 내용은 제 기준으로 작성한 것이기 때문에 참고해서 보시면 감사하겠습니다.
포스팅 과정의 오류 및 오타 그리고 궁금한 점에 대해서는 댓글 남겨주세요.
728x90반응형'System of Infra > Linux System' 카테고리의 다른 글
LINUX Locale 언어 변경하는 방법 (0) 2021.07.23 LINUX Centos 7 타임스탬프 설정 (0) 2021.07.08 LINUX Redhat8 NTP 설정 (0) 2021.05.25 LINUX Bonding 구성 확인하는 방법 (0) 2021.04.08 LINUX Secuve TOS Agent 사용하는 방법 (1) 2021.04.05