Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

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

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

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

ツールディレクトリ

カテゴリ

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

portclue

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

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

人気

すべて見る →

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

すべてのツールを探索

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

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

PortClue

CI Release License Go

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

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

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

$ 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 は、ソケットがどこで トラフィックを受け入れるかを表します。ファイアウォールがそれを許可していると 主張するものでは意図的にありません。 ポートを指定して完全なローカルファイアウォール分析を確認します:

$ 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 や lsof ではないのか

  • それらを必要としません。 リスナーは ss が使用するのと同じカーネル インターフェースである NETLINK_INET_DIAG から取得し、プロセスの詳細は /proc から取得します。他のツールの出力を解析することはないため、ss も lsof もないコンテナでもリスナーとその所有者を取得できます。ファイアウォール 分析では nft または iptables-save を実行し、それらがない場合は UNKNOWN を 報告します。
  • 次の疑問に答えます。 ss -ltnp はソケットと PID を提供します。 そのバインドがループバック専用かどうか、ファイアウォールルールがそれを許可して いるかどうか、そのポートがホストリスナーではなく Docker の公開ポートかどうかは、 本来手作業で行う必要がある作業です。
  • 推測しません。 PortClue がモデル化できないファイアウォールルールは 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 にインストール され、あなたが所有します:

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 を使用し、ダウンロードや 展開には使用しません):

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。

アンインストール:

# 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 をダウンロードし、チェックサムを 検証してからインストールします:

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.27+ が必要です:

go install github.com/pbxqdown/portclue/cmd/[email protected]

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

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

要件: Linux と Go 1.27 以降。

go build -o portclue ./cmd/portclue
./portclue
./portclue --json
./portclue 8080
./portclue --json 8080

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

./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 を 使用してください:

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 が必要です。 両方の契約には回帰テストがあります。

判定

ツールをダウンロード