JooTC
man-and-security-card

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

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

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

먼저 방화벽 서비스 구동 여부는 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
구독
알림
guest

0 Comments
Inline Feedbacks
모든 댓글 보기
0
이 포스트에 대한 의견을 남겨주세요!x