리눅스 시스템에서 방화벽이 구동 중인지 확인하려면 몇가지 명령어를 통해 서비스 실행 여부를 확인해야 합니다.
먼저 방화벽 서비스 구동 여부는 service 또는 systemctl 명령어를 사용하여 확인할 수 있습니다. systemctl(systemd)은 최신 리눅스에서만 지원하기 때문에 운영체제에 따라 올바른 명령어를 사용해야 합니다.
주의: 최신 리눅스에서는 iptables가 아닌 firewalld 를 사용하는 경우가 있습니다. 하단의 명령어로 iptables.service unit not found 에러가 발생한다면 건너뛰고 firewalld 서비스를 확인합니다.
# service iptables status 또는 # systemctl status iptables
출력된 결과에서 Active의 값에 따라 구동 여부를 확인할 수 있습니다.
ufw의 경우 두 가지 명령어가 있습니다.
# ufw status
이 명령어를 사용하면 간단하게 실행 여부를 확인할 수 있습니다.
또 다른 명령어는 위와 같습니다.
# service ufw status 또는 # systemctl status ufw
출력된 결과에서 Active의 값에 따라 구동 여부를 확인할 수 있습니다.
firewalld는 최신 리눅스에서 기본으로 구성되는 방화벽 소프트웨어입니다. firewalld가 설치되어 있다면 iptables가 비활성화 되어있을 수 있습니다.
마찬가지로 두 가지 방법이 있습니다.
# firewall-cmd --state
이 명령어를 사용하면 간단하게 실행 여부를 확인할 수 있습니다.
service와 systemctl 명령어로도 확인이 가능합니다.
# service firewalld status 또는 # systemctl status firewalld
출력된 결과에서 Active의 값에 따라 구동 여부를 확인할 수 있습니다.
이제 실행 중인 방화벽에서 어떠한 규칙이 사용되고 있는지 확인해보도록 하겠습니다. root 권한을 사용해야 될 수도 있습니다.
# 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 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는 firewall-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
INSTALL_FAILED_INSUFFICIENT_STORAGE 문제 안드로이드 스튜디오에서 에뮬레이터를 실행하고 개발중인 애플리케이션을 실행하려 하면 로그 창에 아래와 같이 표시되면서…
리눅스 명령어 - kill, killall 리눅스 kill 명령어는 특정 프로세스를 종료해주는 명령어입니다. 백그라운드에서 실행되고 있는…
JavaScript는 역사가 긴 스크립트 프로그래밍 언어입니다. 세월이 흐르면서 많은 자바스크립트 표준이 만들어졌고, 현재는 많은 문법적…
NodeJS 테스트 프레임워크인 Mocha는 비동기 테스트를 지원합니다. 간혹 특정 테스트 스크립트를 작성하고 실행하면 아래와 같이…
언제부턴가 윈도우 11을 처음 설치할 때 마이크로소프트(Microsoft) 계정 로그인을 강제로 요구하게 되었습니다. 물론 마이크로소프트 계정이…