Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
portclue — LinuxのTCPポートが到達可能かどうかの理由を説明する | Kitploit
ツール/GitHubGitHub/pbxqdown/portclue
防御ツールコンテナセキュリティ構成監査情報収集ネットワークセキュリティユーティリティとフレームワーク
GitHubpbxqdown/portclue

portclue

LinuxのTCPポートが到達可能かどうかの理由を説明する

リポジトリを見る
32日前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有
ウェブサイト

PortClue

CI Release License Go

PortClue は Linux マシン上の TCP ポートが到達可能か、あるいは到達不可能か、その理由を説明します。 ソケット、プロセス、ファイアウォール、Docker の状態を短い証拠チェーンに変換し、 ss、/proc、nftables、iptables、docker inspect を手作業で突き合わせる必要をなくします。

PortClue デモ: ローカル TCP リスナーの概要と、ポート 8080 の証拠チェーン

ポートを指定せずに実行すると、注目すべきローカル TCP エンドポイントを発見できます:

root@kitploit:~
$ sudo portclue
LOCAL TCP LISTENERS

PORT    SERVICE                   CONFIDENCE BIND            OWNER       SOURCE BIND SCOPE
22      OpenSSH server            HIGH       0.0.0.0,::      ssh.service host   ALL_INTERFACES
8080    NGINX web server          HIGH       0.0.0.0,::      nginx       host   ALL_INTERFACES
8443    api service               MEDIUM     192.0.2.10      demo-api    docker SPECIFIC_INTERFACE
9000    Python HTTP server        MEDIUM     127.0.0.1       python3     host   LOOPBACK_ONLY

BIND SCOPE describes socket binding, not firewall reachability.
Run `portclue PORT` for the complete evidence chain and local exposure verdict.

ALL_INTERFACES、SPECIFIC_INTERFACE、LOOPBACK_ONLY は、ソケットがどこでトラフィックを受け入れるかを表します。 これらはファイアウォールがそれを許可していると主張するものでは意図的にありません。 完全なローカルファイアウォール分析を行うには、ポートを検査します:

root@kitploit:~
$ sudo portclue 8080
POTENTIAL EXTERNAL EXPOSURE

TCP port 8080

  0.0.0.0:8080/tcp  [POTENTIAL]
    Service            NGINX web server
    Category           web
    Confidence         HIGH
    Identity evidence  executable basename matched "nginx"
    -> LISTEN             NETLINK_INET_DIAG reports socket inode 123456 bound to 0.0.0.0:8080/tcp
    -> OWNED              PID 4242 (nginx), systemd unit nginx.service
    -> ALL_INTERFACES     0.0.0.0 accepts traffic addressed to any local interface
    -> ACCEPT             nftables: a direct rule matches TCP destination port 8080 and returns accept

Unknown outside this machine:
  - router port forwarding
  - cloud firewall or security group
  - upstream NAT, including carrier-grade NAT

[!IMPORTANT] PortClue v0.1 は初期段階の保守的な Linux プロトタイプです。POTENTIAL は 観測されたローカルパスがトラフィックを許可していることを意味し、そのポートが パブリックインターネットから到達可能であると主張するものではありません。サポートされていない ファイアウォール式は UNKNOWN を生成します。

読み取る内容

  • ss の出力をスクレイピングするのではなく、NETLINK_INET_DIAG を通じた TCP リスナー
  • /proc を通じたプロセスの所有権、実行ファイル、コマンドライン、cgroup、ネットワーク名前空間
  • インストール済みユニットファイルからの systemd ユニット記述と、systemctl show を通じたアクティブなソケットトリガー
  • nft --json list ruleset を通じた nftables
  • nftables が利用できない場合の iptables-save を通じた iptables
  • ローカル Docker Engine HTTP API を通じた Docker 公開ポート(イメージとラベルを含む)

サービス識別

PortClue は露出を説明する前に、ポートが何に属しているかを識別します。証拠は 次の順序でランク付けされます:

  1. 観測された実行ファイル、systemd ユニット、アクティブなソケットトリガー;
  2. Docker イメージ、コンテナ名、ラベル;
  3. 組み込みのキュレーションされたサービスカタログ;
  4. ローカルの /etc/services ポート規約。

実際の所有者は常に慣例的なポート名を上書きします。ポート規約のみが 判明している場合、識別情報は明示的に LOW 信頼度とマークされます。組み込みカタログは internal/identify/catalog.json に保存され、単一のバイナリ内に同梱されます。 PortClue は実行時に識別データをダウンロードしません。

PortClue は読み取り専用です。クエリ対象のポートに接続したり、別のホストをスキャンしたり、 ファイアウォールルールを変更したり、プロセスやコンテナを停止したり、データをアップロードしたり、 デーモンを実行したりしません。

インストール

インストールスクリプト(推奨)

Linux(amd64 および arm64)で動作します。スクリプトは一致する GitHub Release アーカイブをダウンロードし、SHA256SUMS を検証して、単一のバイナリをインストールします。 シェル設定は変更しません。

ユーザーインストール(デフォルト、root 不要)。 あなたが所有する ~/.local/bin にインストールします:

root@kitploit:~
curl -fsSL https://raw.githubusercontent.com/pbxqdown/portclue/v0.1.2/scripts/install.sh | sh
portclue

ユーザーインストールは root なしで実行され、あなたのアカウントで利用可能な証拠を報告し、 不足しているものを指摘します。これはリスナーと Docker マッピングを調べるのに十分です。 sudo は ~/.local/bin を検索せず、このバイナリはあなたのユーザーが書き込み可能であるため、 このコピーを sudo で実行しないでください。

システムインストール(root 所有、sudo portclue 用)。 PortClue は root として 最も完全な証拠(制限された /proc、完全なファイアウォール状態)を読み取ります。そのためには、 root 所有のバイナリを /usr/local/bin にインストールします(スクリプトは最終インストールステップにのみ sudo を使用し、ダウンロードや展開には使用しません):

root@kitploit:~
curl -fsSL https://raw.githubusercontent.com/pbxqdown/portclue/v0.1.2/scripts/install.sh | sh -s -- --system
sudo portclue

オプションの上書き: PORTCLUE_VERSION=0.1.2(先頭の v なし)と、 どちらのモードでも PORTCLUE_INSTALL_DIR。

アンインストール:

root@kitploit:~
# user install
rm ~/.local/bin/portclue
# system install
sudo rm /usr/local/bin/portclue
# or, matching how you installed:
curl -fsSL https://raw.githubusercontent.com/pbxqdown/portclue/v0.1.2/scripts/install.sh | sh -s -- --uninstall
curl -fsSL https://raw.githubusercontent.com/pbxqdown/portclue/v0.1.2/scripts/install.sh | sh -s -- --system --uninstall

リリースアーカイブ

GitHub Releases から一致する portclue-VERSION-linux-ARCH.tar.gz と SHA256SUMS をダウンロードし、チェックサムを検証してから インストールします:

root@kitploit:~
sha256sum -c SHA256SUMS --ignore-missing
tar -xzf portclue-0.1.2-linux-amd64.tar.gz   # or linux-arm64
sudo install -m 0755 portclue-0.1.2-linux-amd64/portclue /usr/local/bin/portclue
portclue --version

アーキテクチャのマッピング:

uname -mArchive
x86_64linux-amd64
aarch64, arm64linux-arm64

各アーカイブにはバイナリ、README、Apache-2.0 ライセンス、サードパーティ通知が含まれます。

Go install

Linux と Go 1.25+ が必要です:

root@kitploit:~
go install github.com/pbxqdown/portclue/cmd/[email protected]

これによりバイナリが $(go env GOPATH)/bin に配置されます。再現可能なインストール成果物が必要な場合は、 チェックサム検証済みのリリースアーカイブまたはインストールスクリプトを優先してください。

ソースからのビルドと実行

要件: Linux と Go 1.25 以降。

root@kitploit:~
go build -o portclue ./cmd/portclue
./portclue
./portclue --json
./portclue 8080
./portclue --json 8080

概要モードはオプションのフィルターを受け付けます(無視されたフィールドは制約なしのままです):

root@kitploit:~
./portclue --bind-scope ALL_INTERFACES,SPECIFIC_INTERFACE
./portclue --source docker
./portclue --min-confidence MEDIUM
./portclue --json --bind-scope ALL_INTERFACES --min-confidence HIGH

--bind-scope は ALL_INTERFACES、SPECIFIC_INTERFACE、LOOPBACK_ONLY の カンマ区切りリストを受け付けます。--source は host および/または docker を受け付けます。--min-confidence は HIGH、MEDIUM、LOW、 または UNKNOWN 以上のエントリを保持します。これらのフラグは PORT が省略された場合にのみ適用されます。

root なしで実行しても、有用なリスナー、Docker マッピング、バインドアドレスの 証拠が得られます。/proc やファイアウォール状態が制限されている場合、プロセス識別情報と ファイアウォール証拠が不完全になることがあります。PortClue はこれを Incomplete evidence の下に報告します。 最も完全な結果を得るには sudo を使用してください:

root@kitploit:~
sudo ./portclue
sudo ./portclue --bind-scope ALL_INTERFACES,SPECIFIC_INTERFACE
sudo ./portclue 8080

バージョン付き JSON

JSON 形式はスクリプトとエージェントを対象としています。概要 JSON は schema_version: 2、mode: "overview"、および service_identity と bind_scope を持つ entries を使用します。詳細レポートは schema_version: 1、query、verdict、service_identity、unknowns、warnings を持つ paths を使用します。

スキーマバージョン内では、既存のフィールド名と意味は安定しているものとして扱われます。 新しいオプションのフィールドが追加されることがあります。削除、名前変更、または互換性のない意味の変更には 新しい schema_version が必要です。両方の契約には回帰テストがあります。

判定

VerdictMeaning
POTENTIAL非ループバックのローカルパスが観測され、サポートされているファイアウォール証拠がそれを許可しています。外部ルーティングは不明です。

v0.1 でサポート

  • Linux、TCP、ホストネットワーク名前空間
  • IPv4 リスナーとローカルフィルタリング分析
  • 正しい IPv6 リスナー/バインド分類; 完全な IPv6 ファイアウォールシミュレーションは約束されていません
  • 単純な nftables/iptables ベースチェーン、直接的な TCP 宛先ポートルール、ベースポリシー
  • Docker ブリッジ公開ポートの帰属
  • systemd ソケットアクティベート TCP サービスの帰属
  • ターミナルおよび JSON 出力
  • 概要フィルター: --bind-scope、--source、--min-confidence

含まれないもの: UDP、Podman、Kubernetes、クラウドセキュリティグループ、ルーター検出、 リモートスキャン、eBPF、継続的監視、または修復。

保守的なファイアウォール動作

PortClue は Netfilter 仮想マシン全体を実装しようと意図的に試みません。 最初のバージョンは少数の直接ルールを理解します。複数のベース チェーン、ジャンプ、セット、マップ、fib、動的式、またはその他の認識されないロジックは、 クエリに影響を与える可能性がある場合に UNKNOWN を引き起こします。これは、解析されていないルールを 暗黙に accept または drop として扱うよりも安全です。

開発

スコープ、テスト、ファイアウォール UNKNOWN 結果の報告方法については CONTRIBUTING.md を参照してください。

root@kitploit:~
make check
make release VERSION=0.1.2

make release はクリーンな Git ワークツリーを必要とし、バージョン付きの amd64/arm64 アーカイブと dist/SHA256SUMS を作成します。設定された GitHub リモートに v* タグをプッシュすると、同じチェックが実行され、GitHub リリースが作成されます。 Makefile によってタグは作成されません。

長期的な設計では、アナライザー、因果モデル、レンダラーをプラットフォーム中立に保ちます。 Linux が最初の証拠バックエンドです; Linux プロトタイプが実際の使用に値するなら、 Windows がおそらく 2 番目のバックエンドになります。

ライセンス

PortClue は Apache License 2.0 の下でライセンスされています。LICENSE を参照してください。 バイナリアーカイブには THIRD_PARTY_NOTICES も含まれます。

リリース履歴と JSON 互換性の注意については CHANGELOG.md、 サポートされているバージョンと非公開の脆弱性報告については SECURITY.md、 貢献については CONTRIBUTING.md を参照してください。

ツールをダウンロード
NOT_EXPOSED_LOCALLYリスナー/マッピングが存在しない、バインドがループバックのみ、またはサポートされているローカルファイアウォール証拠がパスをブロックしています。
UNKNOWN必要な事実が利用できない、または潜在的に重要なファイアウォール式がサポートされていません。
CONFIRMED将来の明示的な外部プローブ用に予約されています。現在のローカルのみの CLI はこれを決して出力しません。