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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
NFtables-IPtables-integration-script — NFtablesまたはIPtables上でQ-Feedsを直接実装するスクリプト | Kitploit
ツール/GitHubGitHub/q-feeds/nftables-iptables-integration-script
防御ツールスクリプトと自動化構成監査ネットワークセキュリティ脅威インテリジェンスインシデントレスポンス
GitHubq-feeds/nftables-iptables-integration-script

NFtables-IPtables-integration-script

NFtablesまたはIPtables上でQ-Feedsを直接実装するスクリプト

人気

すべて見る →

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

すべてのツールを探索

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

すべてのツールを見る →
共有
リポジトリを見るウェブサイト
269日前未レビュー

🛡️ Q-Feeds Linux ファイアウォールブロックリスト統合

Linux サーバー向けの自動マルウェア IP ブロックリスト — nftables と iptables+ipset をサポート

License Linux


📋 目次

  • クイックスタート
  • 概要
  • 仕組み
  • 前提条件
  • 詳細なインストール
  • 設定
  • 使用方法と確認
  • トラブルシューティング
  • アンインストール
  • ライセンス

🚀 クイックスタート

ステップ 1: API トークンを取得する

tip.qfeeds.com で無料の API キーを取得してください。

ステップ 2: スクリプトをダウンロードする

git clone https://github.com/Q-Feeds/NFtables-IPtables-integration-script.git
cd NFtables-IPtables-integration-script
chmod +x qfeeds-installer.sh qfeeds-uninstaller.sh

ステップ3: インストーラーをrootとして実行する

sudo ./qfeeds-installer.sh

インストーラーは以下を実行します:

  1. 自動検出 ファイアウォールバックエンド(nftables または iptables)
  2. API トークン、ブロックオプション、任意のホワイトリストの入力を促します
  3. すべての依存関係、アップデータースクリプト、cron ジョブをインストールします
  4. 最初の完全同期を即座に実行します

ステップ 4:完了

サーバーは保護されました。cron ジョブは 20 分ごと(設定可能)に更新を確認し、実際の API 呼び出しはライセンスが許可する場合にのみ行われます。


📖 概要

このソリューションは、Q-Feeds から最新の脅威インテリジェンスフィードを定期的にダウンロードし、ファイアウォールルールとして適用します(ステップバイステップガイド:NFtables/IPtables セットアップ)。これにより、以下が可能になります:

  • ✅ 着信接続をブロック 既知の悪意のある IP からの接続
  • ✅ 発信接続をブロック 既知の悪意のある IP への接続
  • ✅ 自分の IP/CIDR をホワイトリストに登録 自分自身をロックアウトしないように
  • ✅ 自動スケジューリング Q-Feeds ライセンスに基づく
  • ✅ 差分更新 差分ベースの同期による最小限のリソース使用

このアプローチを選ぶ理由

  • ✅ バックエンドを自動検出 — 手動選択なしで nftables または iptables+ipset で動作
  • ✅ 高速 — 最適化されたハッシュセット(nftables)または ipset(iptables)を使用して 40 万以上の IP を数秒で読み込み
  • ✅ 安全 — 専用のテーブル/セットを使用 — 既存のファイアウォールルールには一切触れません
  • ✅ 効率的 — 差分ベースの更新は変更のみを処理し、全リストは処理しません
  • ✅ 信頼性 — 自己修復:空または不完全なローカルセット(例:再起動後)を検出して再構築し、差分が失敗した場合は自動的に完全同期にフォールバック
  • ✅ 柔軟 — 着信/発信ブロック、オプションのホワイトリストを選択可能

🔧 仕組み

バックエンド検出

インストーラーは利用可能なファイアウォールバックエンドを自動検出します:

優先度検出バックエンド
1 番目nft コマンドが見つかるnftables
2 番目iptables コマンドが見つかるiptables+ipset
—どちらも見つからないエラー(終了)

検出されたバックエンドは設定ファイルに保存されます。アップデーターとアンインストーラースクリプトはこれを使用して正しいファイアウォールコマンドを実行します。

アーキテクチャ:2 つのセットタイプ

両方のバックエンドは最大パフォーマンスのために同じ分割セット戦略を使用します:

nftables バックエンド:

┌─────────────────────────────────────────────────────────┐
│  table ip qfeeds                                        │
│                                                         │
│  ┌─────────────────────────┐  ┌───────────────────────┐ │
│  │ qfeeds_blacklist_v4     │  │ qfeeds_blacklist_v4   │ │
│  │ (hash set)              │  │ _nets (interval set)  │ │
│  │                         │  │                       │ │
│  │ Individual IPs          │  │ CIDR ranges           │ │
│  │ ~99% of entries         │  │ ~1% of entries        │ │
│  │ O(1) lookup & insert    │  │ O(log n) lookup       │ │
│  └─────────────────────────┘  └───────────────────────┘ │
│                                                         │
│  ┌─────────────────────────┐                            │
│  │ qfeeds_whitelist_v4     │                            │
│  │ (interval set)          │                            │
│  │ Your allowed IPs/CIDRs  │                            │
│  └─────────────────────────┘                            │
│                                                         │
│  chain input-chain (hook input, priority 0, accept)     │
│    → ip saddr @qfeeds_whitelist_v4 accept               │
│    → ip saddr @qfeeds_blacklist_v4 drop                 │
│    → ip saddr @qfeeds_blacklist_v4_nets drop            │
│                                                         │
│  chain output-chain (if enabled)                        │
│    → ip daddr @qfeeds_whitelist_v4 accept               │
│    → ip daddr @qfeeds_blacklist_v4 drop                 │
│    → ip daddr @qfeeds_blacklist_v4_nets drop            │
└─────────────────────────────────────────────────────────┘

iptables+ipset バックエンド:

┌──────────────────────────────────────────────────────────┐
│  ipset sets                                              │
│                                                          │
│  ┌─────────────────────────┐  ┌────────────────────────┐ │
│  │ qfeeds_blacklist_v4     │  │ qfeeds_blacklist_v4    │ │
│  │ (hash:ip)               │  │ _nets (hash:net)       │ │
│  │ maxelem 1000000         │  │ maxelem 65536          │ │
│  │                         │  │                        │ │
│  │ Individual IPs          │  │ CIDR ranges            │ │
│  └─────────────────────────┘  └────────────────────────┘ │
│                                                          │
│  ┌─────────────────────────┐                             │
│  │ qfeeds_whitelist_v4     │                             │
│  │ (hash:net)              │                             │
│  └─────────────────────────┘                             │
│                                                          │
│  iptables: INPUT/OUTPUT jump to a dedicated chain        │
│  (jump rule tagged -m comment "qfeeds"):                 │
│                                                          │
│  chain QFEEDS_INPUT (rebuilt each run, in order):        │
│    -m set --match-set whitelist_v4 src -j ACCEPT         │
│    -m set --match-set blacklist_v4 src -j DROP           │
│    -m set --match-set blacklist_v4_nets src -j DROP      │
│    (QFEEDS_OUTPUT mirrors this with dst, if enabled)     │
└──────────────────────────────────────────────────────────┘

IPv6 でも同じ構造が存在します(ip6 qfeeds テーブル、または ip6tables + family inet6 の ipsets)。

なぜ 2 種類のセットを使うのか?

  • ハッシュセットは個々の IP を O(1) の挿入と検索で保存します — 400k 以上の IP の読み込みは数秒で完了します
  • ネット/インターバルセットは、フィード内の少数の CIDR 範囲にのみ使用されます
  • これにより、数十万のエントリを持つ単一のセットを遅くするような高コストなマージ操作を回避できます

更新フロー

┌──────────────────────────────────────────────────────┐
│  1. Check license schedule (licenses.php API)        │
│     → Skip run if not yet time for next update       │
│  2. Determine sync mode (full or diff)               │
│  3. Fetch IPv4 feed (ipv6=0) and IPv6 feed           │
│     (ipv6=only) separately                           │
│  4. Separate IPs from CIDRs in awk                   │
│  5. Batch-load into hash set (IPs) and net/interval  │
│     set (CIDRs)                                      │
│  6. Update whitelist sets from config                 │
│  7. Persist rules                                    │
└──────────────────────────────────────────────────────┘

フルシンクと差分シンク

モード実行タイミング動作内容
フルシンク初回実行時、強制更新時、差分失敗後、ローカルセットがベースラインを失った場合(空または予想よりはるかに小さい場合)、または最後のシンクが FULL_SYNC_MAX_AGE(デフォルト24時間)より古い場合各フィードを最初に取得して検証し、その後ブラックリストセットをフラッシュして再ロードします。セットは有効なデータを取得した後にのみフラッシュされるため、フェッチが失敗しても保護が失われることはありません
差分シンク以降の実行(malware_ip フィードのみ)で、ローカルセットが正常な場合最後のプル以降の追加(+)と削除(-)のみを取得します

差分シンクは APIキーごと です — APIは最後の成功したプルを追跡し、それ以降の変更のみを返します。差分が失敗した場合、スクリプトは自動的にフルシンクにフォールバックします。

自己修復: 差分更新は既存のセットにのみパッチを適用します。そのセットが失われたり切り詰められたりした場合 — 例えば、ファイアウォールルールが永続化されなかった再起動、手動フラッシュ、または以前の部分的なシンク — アップデーターは欠落したベースライン(ライブ要素数が0または最後に記録された数よりはるかに少ない)を検出し、空のセットに差分を適用する代わりに完全な再構築を強制します。追加の安全策として、定期的なフルシンクも強制します(デフォルトでは FULL_SYNC_MAX_AGE により24時間ごと)。

ライセンスベースのスケジューリング

アップデーターは毎回の実行前にQ-FeedsライセンスAPI(licenses.php)をチェックします。ライセンスの next_update タイムスタンプにまだ達していない場合、スクリプトは不要なAPI呼び出しを行わずに早期終了します。cronジョブは頻繁に実行されます(デフォルト:20分ごと)が、実際の更新はライセンスが許可した場合にのみ行われます。


✅ 前提条件

インストール前に、以下を確認してください:

  • nftables または iptables を備えた Linuxサーバー(Debian、Ubuntu、CentOS、Fedora、Arch、Alpine)
  • rootアクセス — インストーラーとアップデーターはrootとして実行する必要があります
  • Q-Feeds APIトークン — tip.qfeeds.com で無料で取得できます
  • インターネットアクセス — サーバーは api.qfeeds.com に到達できる必要があります
ツールをダウンロード