Repolode
shizunge

shizunge/endlessh-go

Prometheusメトリクスと攻撃者統計用Grafanaダッシュボードを備えた、endlesshのGo実装。

スター
1,455
フォーク
55
未解決の Issue
18
最終コミット
8 日前

これは何?

endlessh-goは、SSH接続を受け付けてバナー行をゆっくり送信し、ブルートフォース攻撃ボットをできるだけ長く接続状態に留めるtarpit、endlesshのGo移植版です。元のC版のようにテキストログを書き出すだけでなく、接続数、送信バイト数、拘束時間を含む構造化されたPrometheusメトリクスを公開します。

攻撃者のIPアドレスをip-apiまたはオフラインのMaxMindデータベースでgeohashに変換する機能もあり、国、位置情報、geohashをラベルとして付与できます。Grafanaダッシュボード(grafana.comでもID 15156として公開)は、指定した期間のメトリクスを可視化し、IPアドレスからARINの検索ページに移動できます。

単体バイナリまたはDockerコンテナとして動作し、デフォルトではポート2222で待ち受けます。複数ポートとPROXY protocolヘッダーに対応し、任意でHTTPヘルスチェックエンドポイントも利用できます。メトリクスを有効にした場合、メモリ使用量はC実装より約10MB多いとされています。

主な機能

  • 01接続数、送信バイト数、拘束時間をPrometheusメトリクスとして公開します。
  • 02ip-apiまたはMaxMindデータベースを使って攻撃者のIPアドレスを調べ、国、位置情報、geohashを取得します。
  • 03攻撃元を時系列で可視化するGrafanaダッシュボードが付属します。
  • 04複数の待ち受けポート、IPv4/IPv6の選択、PROXY protocolヘッダーに対応します。
  • 05任意でHTTPヘルスチェックエンドポイントを利用でき、HEALTHCHECKを組み込んだDockerイメージも提供します。

ユースケース

  • 公開サーバーに届くSSHブルートフォース攻撃を監視し、攻撃元を把握する。
  • 攻撃者の統計情報を既存のPrometheus・Grafana環境に取り込む。
  • 自動化されたSSHスキャナーをtarpitに誘導して時間を浪費させつつ、別のポートで本物のsshdを稼働させる。

クイックスタート

  1. 1

    リポジトリをクローンし、ソースからビルドします

    go build .
  2. 2

    サーバーを起動します

    ./endlessh-go &
  3. 3

    接続してtarpitをテストします(クライアントが応答しなくなるはずです)

    ssh -p 2222 localhost

使う前に知っておきたいこと

  • ip-api経由でGeoIP検索を有効にすると、レート制限や商用利用の制限が適用される場合があります。
  • 元のC実装よりメモリを約10MB多く使用します。
  • コピーレフトライセンスであるGPL-3.0の下でライセンスされています。

トピック

よくある質問

endlessh-go とは?
Prometheusメトリクスと攻撃者統計用Grafanaダッシュボードを備えた、endlesshのGo実装。 endlessh-goは、SSH接続を受け付けてバナー行をゆっくり送信し、ブルートフォース攻撃ボットをできるだけ長く接続状態に留めるtarpit、endlesshのGo移植版です。元のC版のようにテキストログを書き出すだけでなく、接続数、送信バイト数、拘束時間を含む構造化されたPrometheusメトリクスを公開します。
endlessh-go は無料で使えますか?ライセンスは?
endlessh-go は GPL-3.0 ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
endlessh-go は今もメンテナンスされていますか?
活発にメンテナンス中。endlessh-go の最終コミットは 2026年10月13日 です。
endlessh-go は何に使えますか?
公開サーバーに届くSSHブルートフォース攻撃を監視し、攻撃元を把握する。 攻撃者の統計情報を既存のPrometheus・Grafana環境に取り込む。 自動化されたSSHスキャナーをtarpitに誘導して時間を浪費させつつ、別のポートで本物のsshdを稼働させる。
endlessh-go のインストール方法は?
リポジトリをクローンし、ソースからビルドします: go build . サーバーを起動します: ./endlessh-go & 接続してtarpitをテストします(クライアントが応答しなくなるはずです): ssh -p 2222 localhost
endlessh-go はどこで入手できますか?
ソースコードとインストール手順は GitHub にあります:https://github.com/shizunge/endlessh-go

概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。

関連プロジェクト