방화벽을 사용하여 CentOS7에서 열린 포트 목록을 표시하십시오.

방화벽을 사용하여 CentOS7에서 열린 포트 목록을 표시하십시오.

이를 사용하여 열린 모든 포트의 전체 목록을 표시하는 쉬운 방법이 있습니까 firewalld?

명령에 대해 알고 있지만 firewall-cmd --list-all해당 서비스가 열린 것으로 정의된 포트가 아닌 서비스 이름만 표시합니다.

예를 들어:

[root@myserver log]# firewall-cmd --list-all
  dmz (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens160
  sources: 
  services: ssh squid my-icap 
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 

각 서비스의 정의 파일에 가서 어떤 포트가 열려 있는 것으로 정의되어 있는지 확인할 수 있다는 것을 알고 있지만 이를 수행하려면 한 줄 방법이 있어야 하는데 누락된 것 같습니다.

나는 찾고 있지 않습니다 netstat: 이것은 포트에서 무언가가 수신 대기 중인지 알려줍니다. 이는 다른 호스트에서 포트에 액세스할 수 있는지 여부와는 다른 질문입니다.

답변1

나는 또한 이것을 찾고 있었고 현재 나는 이 bash oneliner를 생각해 냈습니다.

for s in $(firewall-cmd --list-services); do firewall-cmd --permanent --service "$s" --get-ports; done;

일반 포트의 경우 다음을 사용하십시오.

$ firewall-cmd --list-ports

그렇지 않으면

$ firewall-cmd --list-all

답변2

이 줄은 직접 인터페이스 서비스와 풍부한 언어 규칙 모두에 적용되어야 하며 포트 번호, 프로토콜 등과 함께 서비스 이름을 표시해야 합니다.

firewall-cmd --list-all | egrep "services|service.*accept" | sed -e 's/.*="\(.*\)".*/\1/g' | sed -e 's/\s\+services:\s\+//g' | tr ' ' '\n' | xargs -I '{}' firewall-cmd --info-service={}

임시로 서비스의 포트 정의를 조회한다는 사실을 쉽게 기억하고 싶다면 다음을 수행하세요.

방화벽-cmd --정보-서비스=서비스 이름

관련 정보