これを使用して開いているすべてのポートの完全なリストを表示する簡単な方法はありますか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 --情報-サービス=サービス名