
NFtables या IPtables पर सीधे Q-Feeds लागू करने की स्क्रिप्ट
Linux सर्वर के लिए स्वचालित मैलवेयर IP ब्लॉकलिस्ट — nftables और iptables+ipset का समर्थन करता है
tip.qfeeds.com पर एक निःशुल्क API कुंजी प्राप्त करें।
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
sudo ./qfeeds-installer.sh
इंस्टॉलर यह करेगा:
आपका सर्वर अब सुरक्षित है। क्रॉन जॉब हर 20 मिनट में अपडेट की जाँच करता है (कॉन्फ़िगर करने योग्य), और वास्तविक API कॉल केवल तब होते हैं जब आपका लाइसेंस अनुमति देता है।
यह समाधान समय-समय पर Q-Feeds से नवीनतम थ्रेट इंटेलिजेंस फ़ीड डाउनलोड करता है और इसे फ़ायरवॉल नियमों के रूप में लागू करता है (चरण-दर-चरण मार्गदर्शिका: NFtables/IPtables सेटअप), जिससे आप यह कर सकते हैं:
इंस्टॉलर स्वचालित रूप से पता लगाता है कि कौन सा फ़ायरवॉल बैकएंड उपलब्ध है:
| प्राथमिकता | पहचान | बैकएंड |
|---|---|---|
| पहली | nft कमांड मिला | nftables |
| दूसरी | iptables कमांड मिला | iptables+ipset |
| — | कोई नहीं मिला | त्रुटि (बाहर निकलें) |
पता लगाया गया बैकएंड कॉन्फ़िगरेशन फ़ाइल में संग्रहीत किया जाता है। अपडेटर और अनइंस्टॉलर स्क्रिप्ट इसका उपयोग सही फ़ायरवॉल कमांड चलाने के लिए करते हैं।
दोनों बैकएंड अधिकतम प्रदर्शन के लिए समान स्प्लिट-सेट रणनीति का उपयोग करते हैं:
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)।
दो सेट प्रकार क्यों?