ファイアウォールを使用して、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: 

各サービスの定義ファイルに行き、どのポートが開いていると定義されているかを確認できることを知っていますが、これを行うには1行の方法が必要ですが、欠落しているようです。

私は探していません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 --情報-サービス=サービス名

関連情報