You dont have javascript enabled! Please download Google Chrome!
맨 위로 스크롤

리눅스 방화벽 상태 확인 명령어로 실행 중인지 파악하기


Jneer - 2018-08-03 - 0 개의 댓글

리눅스 시스템에서 방화벽이 구동 중인지 확인하려면 몇가지 명령어를 통해 서비스 실행 여부를 확인해야 합니다.

 

리눅스 방화벽 상태 확인 방법


먼저 방화벽 서비스 구동 여부는 service 또는 systemctl 명령어를 사용하여 확인할 수 있습니다. systemctl(systemd)최신 리눅스에서만 지원하기 때문에 운영체제에 따라 올바른 명령어를 사용해야 합니다.

 

iptables

주의 : 최신 리눅스에서는 iptables가 아닌 firewalld 를 사용하는 경우가 있습니다.

하단의 명령어로 iptables.service unit not found 에러가 발생한다면 건너뛰고 firewalld 서비스를 확인합니다.

# service iptables status
또는
# systemctl status iptables

출력된 결과에서 Active의 값에 따라 구동 여부를 확인할 수 있습니다.

  • 실행 중인 경우
    Active:  active (exited)
  • 실행 중이지 않은 경우
    Active: inactive (dead)

 

 

ufw (Ubuntu에서만 해당됨)

ufw의 경우 두 가지 명령어가 있습니다.

# ufw status

이 명령어를 사용하면 간단하게 실행 여부를 확인할 수 있습니다.

  • 실행 중인 경우
    Status: active
  • 실행 중이지 않은 경우
    Status: inactive

 

또 다른 명령어는 위와 같습니다.

# service ufw status
또는
# systemctl status ufw

출력된 결과에서 Active의 값에 따라 구동 여부를 확인할 수 있습니다.

  • 실행 중인 경우
    Active:  active (exited)
  • 실행 중이지 않은 경우
    Active: inactive (dead)

 

 

firewalld

firewalld는 최신 리눅스에서 기본으로 구성되는 방화벽 소프트웨어입니다. firewalld가 설치되어 있다면 iptables가 비활성화 되어있을 수 있습니다.

마찬가지로 두 가지 방법이 있습니다.

# firewall-cmd --state

이 명령어를 사용하면 간단하게 실행 여부를 확인할 수 있습니다.

  • 실행 중인 경우
    not running
  • 실행 중이지 않은 경우
    running

 

servicesystemctl 명령어로도 확인이 가능합니다.

# service firewalld status
또는
# systemctl status firewalld

출력된 결과에서 Active의 값에 따라 구동 여부를 확인할 수 있습니다.

  • 실행 중인 경우
    Active:  active (exited)
  • 실행 중이지 않은 경우
    Active: inactive (dead)

 

 

리눅스 방화벽 규칙 확인 방법


이제 실행 중인 방화벽에서 어떠한 규칙이 사용되고 있는지 확인해보도록 하겠습니다. root 권한을 사용해야 될 수도 있습니다.

 

iptables로 확인

# iptables -L [chain [rulnum]]

대략적인 결과는 아래와 같습니다.

# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
ACCEPT     all  --  anywhere             anywhere            
INPUT_direct  all  --  anywhere             anywhere            
INPUT_ZONES_SOURCE  all  --  anywhere             anywhere            
INPUT_ZONES  all  --  anywhere             anywhere            
DROP       all  --  anywhere             anywhere             ctstate INVALID
REJECT     all  --  anywhere             anywhere             reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
ACCEPT     all  --  anywhere             anywhere            
FORWARD_direct  all  --  anywhere             anywhere            
FORWARD_IN_ZONES_SOURCE  all  --  anywhere             anywhere            
FORWARD_IN_ZONES  all  --  anywhere             anywhere            
FORWARD_OUT_ZONES_SOURCE  all  --  anywhere             anywhere            
FORWARD_OUT_ZONES  all  --  anywhere             anywhere            
DROP       all  --  anywhere             anywhere             ctstate INVALID
REJECT     all  --  anywhere             anywhere             reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
OUTPUT_direct  all  --  anywhere             anywhere            

Chain FORWARD_IN_ZONES (1 references)
target     prot opt source               destination         
FWDI_public  all  --  anywhere             anywhere            [goto] 
FWDI_public  all  --  anywhere             anywhere            [goto] 

... (생략)

전체 규칙 리스트 -L 옵션만 붙이면 되지만, 결과가 많아지기 때문에 특정 체인(INPUT, OUTPUT, FORWARD 등)의 값을 입력하거나 grep 을 사용하여 원하는 프로토콜 이름으로만 검색해볼 수 있습니다.

# iptables -L INPUT
또는
# iptables -L | grep ssh

 

 

ufw로 확인

ufw는 간단한 명령어로 확인이 가능합니다. 위에서 입력했던 ufw status 명령어로 현재 열려있는 포트 확인이 바로 가능합니다. 내용이 없을 경우 규칙이 설정되지 않았다는 의미입니다.

root@myServer:~# ufw status
Status: active

To                         Action      From
--                         ------      ----
22                         ALLOW       Anywhere                  
177/udp                    ALLOW       Anywhere                  
6000:6010/tcp              ALLOW       Anywhere                  
80/tcp                     ALLOW       Anywhere                  
177/tcp                    ALLOW       Anywhere                  
22 (v6)                    ALLOW       Anywhere (v6)             
177/udp (v6)               ALLOW       Anywhere (v6)             
6000:6010/tcp (v6)         ALLOW       Anywhere (v6)             
80/tcp (v6)                ALLOW       Anywhere (v6)             
177/tcp (v6)               ALLOW       Anywhere (v6)

 

 

firewalld로 확인

firewalldfirewall-cmd 명령어를 사용하여 규칙을 추가하거나 확인할 수 있습니다.

firewalld는 다양한 zone을 가지고 있습니다. 각 zone에 대한 규칙을 지정할 수 있고 일반적으로 public 으로 zone이 기본 지정되어 있습니다. 아래 명령어로 확인이 가능합니다.

# firewall-cmd --get-default-zone
public

 

public zone에 대한 방화벽 규칙을 확인하려면 아래 명령어를 사용합니다. 먼저 알려진 서비스로 규칙을 추가하였다면 –list-services 옵션을 붙여 확인할 수 있습니다.

# firewall-cmd --zone=public --list-services 
ssh dhcpv6-client smtp

 

방화벽 규칙을 추가할 때 알려진 서비스가 아닌 임의 포트 규칙을 사용함으로서 특정 포트를 추가했다면, 아래 명령어로 허용된 포트를 확인할 수 있습니다.

public zone에 대해 허용되고 있는 포트를 확인하려면 –list-ports 옵션을 붙여서 사용할 수 있습니다. –zone 옵션을 붙이지 않으면 모든 zone에 대한 정책을 보여줍니다.

# firewall-cmd --zone=public --list-ports
22/tcp 80/tcp 3360/tcp 21/tcp

 

관련 포스트

댓글 달기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다

error: 경고: 콘텐츠가 보호되고 있습니다. 복사 및 무단 사용을 금지합니다.