Integrationshttps://ip-db.com/api/v1/feed.txt?key=YOUR_API_KEYGet an API key
Integrations
IP Blocklist Integrations for Firewalls and SIEM
IP-DB is a plain, key-authenticated REST API that works with anything speaking HTTP: a live blocklist for your firewall, enrichment for your SIEM, automatic reporting from your servers.
Feed addresses40,125hourly snapshot
Categories10
Platforms29copy-paste guides
Formats4plain · cidr · json · csv
Blocklist feed
A live blocklist, one IP per line, that your firewall refreshes from a URL on its own schedule. The feed is the highest-scoring addresses from redistributable sources, confirmed by at least two independent source families — no noise, no unlicensed data. Build your feed URL below.
Format hands you the same list as the file the target product expects — FortiGate CLI, an ipset script, nftables, RouterOS, Suricata rules, a Wazuh CDB list. Delta returns only the addresses first listed inside the window you choose, so a scheduled job need not pull the whole list every time. Existing feed URLs keep working exactly as before: the default format has not changed.
The feed uses your API key (create a key) and counts toward your daily usage; every fetch returns the latest snapshot. For the complete bulk download use /datasets (CSV, JSON, TXT, MMDB · CC BY-SA 4.0).
WordPress plugin
A ready-made plugin for WordPress. It mirrors IP-DB's blocklist into your own site, checks the address behind login, comment, registration and checkout requests, and reports what attacks you back to the pool. Beyond your API key there is nothing to configure.
Monitor mode: everything is logged, nothing is blocked. Switch to blocking in the settings once the log looks right.
Blocked today128requests refused
Blocked this week1,40642 comments flagged, 17 held
Addresses on the local list5,000synced 12 mins ago
Reported to IP-DB93last 7 days
Status
Protection
Monitoring
API key
Verified
Blocklist feed
Fresh
Next sync
in 48 mins
Your address
198.51.100.24
Sync blocklist nowVerify API key
Most active addresses, last 7 days
Address
Hits
Score
203.0.113.9
412
98
198.51.100.24
287
91
203.0.113.77
164
86
198.51.100.5
103
74
Full activity log →
The plugin's own dashboard. The figures are illustrative.
What it does
The login page
Refuses the login page to listed addresses, and counts failed sign-ins per address.
Comments and pingbacks
Marks, holds or outright refuses comments and pingbacks — whichever you choose.
Independent switches
Independent switches for registration, WooCommerce checkout, unauthenticated REST calls and XML-RPC.
Dashboard and activity log
A dashboard for what was blocked, held and reported, plus a filterable activity log you can export as CSV.
Reverse proxies
Explicit reverse-proxy handling: Cloudflare, X-Forwarded-For and a trusted-proxy list — because anything a client can send, a client can forge.
Everyday operation
WP-CLI commands, Site Health checks, a translated interface and self-updating — updates appear on the Plugins screen the usual way.
How it decides
Two sources of truth, deliberately kept apart.
hot path
The mirrored blocklist
One indexed query. It can run on the hot path — on every anonymous page view, if you want it to — and spends nothing from your quota.
spends quota
A live API lookup
Only on the requests that are worth a call: a login attempt, a comment, a sign-up, a checkout.
It was written to be safe to switch on. Monitor mode logs every decision without blocking anything, so you can read a day of real traffic before trusting a threshold. The address you activate it from goes on the allow list, administrators are exempt in any case, and an unanswered lookup lets the request through — the plugin never fails closed.
Installation
Download the plugin, then install it with Plugins → Add New → Upload Plugin and activate it.
Paste your free API key into IP-DB → Settings.
Press Sync blocklist now on the dashboard. WP-Cron keeps it fresh from then on.
Leave it in monitor mode for a day, read the activity log, then switch to blocking.
If you want to give something back, switch reporting on under the Reporting tab.
The sync runs on WP-Cron; on a quiet site a real cron entry hitting wp-cron.php is more reliable. When the list goes stale the plugin raises it on the Site Health screen, so the problem surfaces where you already look for problems.
Turn reporting on and the brute-force runs and comment spam your site absorbs go back into the pool — including comments a moderator marks as spam by hand, which is the most reliable signal a site has to offer. Reports do not count against your lookup quota.
The moment the plugin makes its first call with your key, your site appears in My shields in your dashboard, tagged WordPress, with its version, last report and call count. While it keeps reporting, your account stays on the contributor tier.
Updates are served from ip-db.com: the plugin uses WordPress 5.8’s Update URI header, so a new version shows up on the Plugins screen exactly as it would for a directory plugin.
fail2ban
Have fail2ban automatically report the same IP to IP-DB the moment it bans it. Create /etc/fail2ban/action.d/ipdb-report.conf:
Wire our pool directly into PAN-OS as an External Dynamic List (EDL) — no separate sync script needed, the firewall pulls the list itself on a schedule.
FortiGate's Threat Feed external connector consumes the same plain-text URL.
GUI: Security Fabric → External Connectors → Create New → Threat Feed → IP Address. Or via CLI:
config system external-resource
edit "ipdb-blacklist"
set type address
set resource "https://ip-db.com/api/v1/feed.txt?key=YOUR_API_KEY"
set refresh-rate 30
next
end
Then reference that external-resource as the source address in a firewall policy set to deny.
Paginate /api/v1/blacklist to pull the whole pool into an ipset, then block it with a single iptables rule. Running it every 30 minutes via cron is enough — the pool itself refreshes on that same cadence.
One-time setup — add the rule that actually enforces the ipset:
iptables -I INPUT -m set --match-set ipdb-blacklist src -j DROP
Cisco Secure Firewall (FTD / FMC)
Cisco Secure Firewall (FTD) consumes a URL feed natively through FMC — no script needed. Define it as a Security Intelligence network list and block it on the access control policy's Security Intelligence tab.
Check Point R80.20 and later pulls an external indicator source as a Custom Intelligence Feed. Our feed carries one value per line, so the value column is 1.
SRX can feed an external list into a dynamic address group. Define the feed server, then use the address group as the source in a security policy.
set security dynamic-address feed-server ipdb url "https://ip-db.com/api/v1/feed.txt?key=YOUR_API_KEY"
set security dynamic-address feed-server ipdb update-interval 1800
set security dynamic-address feed-server ipdb feed-name blocklist path "/"
set security dynamic-address address-name ipdb-blocklist profile feed-name blocklist
set security policies from-zone untrust to-zone trust policy block-ipdb \
match source-address ipdb-blocklist destination-address any application any
set security policies from-zone untrust to-zone trust policy block-ipdb then deny
pfSense / pfBlockerNG
pfBlockerNG accepts URL-based IPv4 lists directly: <span class="mono">Firewall → pfBlockerNG → IPv4 → Add</span>, with the feed URL as the source.
Format: Auto
Source: https://ip-db.com/api/v1/feed.txt?key=YOUR_API_KEY
Header/Label: ipdb_blacklist
Update Frequency: Every 1 hour
List Action: Deny Both
OPNsense
In OPNsense create an alias of type URL Table; the firewall refreshes the list on its own schedule.
On modern distributions running nftables, a named set is the direct equivalent of an ipset.
nft add table inet filter
nft add set inet filter ipdb '{ type ipv4_addr; flags interval; }'
nft add rule inet filter input ip saddr @ipdb drop
# cron: her 30 dakikada bir / every 30 minutes
curl -fsS "https://ip-db.com/api/v1/feed.txt?key=YOUR_API_KEY" \
| grep -E '^[0-9]' | paste -sd, - \
| xargs -I{} nft flush set inet filter ipdb \; add element inet filter ipdb { {} }
Windows Firewall
On Windows Server, create one rule with PowerShell and update its remote address list. Use a category filter — a single rule holds a limited number of addresses.
Since Wazuh isn't a firewall, the logic runs the other way: instead of a firewall pulling data from us, Wazuh reports to us the moment it raises an alert. This uses Wazuh's custom integration script mechanism — the structure below is a solid starting point, adapt it to your environment.
Load the feed into a KV Store lookup and match at search time, so every event whose source IP is in the pool gets flagged.
# $SPLUNK_HOME/etc/apps/ipdb/bin/sync.sh — cron, 30 dk / 30 min
curl -fsS "https://ip-db.com/api/v1/feed.txt?key=YOUR_API_KEY" \
| awk 'BEGIN{print "cidr"} /^[0-9]/{print}' \
> $SPLUNK_HOME/etc/apps/ipdb/lookups/ipdb_blacklist.csv
# SPL — kaynak IP havuzda mi? / is the source IP in the pool?
index=firewall
| lookup ipdb_blacklist cidr AS src_ip OUTPUT cidr AS ipdb_match
| where isnotnull(ipdb_match)
| stats count by src_ip, dest_port
Elastic Security
For Elastic Security's indicator match rule, write the feed into a threat indicator index.
# gostergeleri indekse yaz / write indicators into the index
curl -fsS "https://ip-db.com/api/v1/feed.txt?key=YOUR_API_KEY&category=botnet_c2" \
| grep -E '^[0-9]' | sed 's|/32$||' \
| while read ip; do
echo '{"index":{}}'
echo "{\"@timestamp\":\"$(date -u +%FT%TZ)\",\"threat\":{\"indicator\":{\"type\":\"ipv4-addr\",\"ip\":\"$ip\",\"provider\":\"ip-db.com\"}}}"done | curl -s -XPOST "$ES/logs-ti_ipdb-default/_bulk" -H 'Content-Type: application/x-ndjson' --data-binary @-
# Security → Rules → Create → Indicator Match# Index: logs-ti_ipdb-* | Field: threat.indicator.ip ↔ source.ip
Microsoft Sentinel
In Microsoft Sentinel the practical route is a watchlist, joined against in analytics rules.
# Watchlist olarak yukle / upload as a watchlist
curl -fsS "https://ip-db.com/api/v1/feed.txt?key=YOUR_API_KEY&category=botnet_c2" \
| awk 'BEGIN{print "IPAddress"} /^[0-9]/{sub("/32","");print}' > ipdb.csv
# Sentinel → Watchlist → New → alias: ipdb, search key: IPAddress// KQLlet ipdb = _GetWatchlist('ipdb') | project IPAddress;
CommonSecurityLog
| where SourceIP in (ipdb)
| summarize count() by SourceIP, DestinationPort
IBM QRadar
Create a reference set in QRadar, populate it over the API, then test against it in your rules.
# referans kumesi olustur / create the reference set
curl -s -X POST -H "SEC: $QRADAR_TOKEN" \
"https://$QRADAR/api/reference_data/sets?name=ipdb_blacklist&element_type=IP"# toplu doldur / bulk load
curl -fsS "https://ip-db.com/api/v1/feed.txt?key=YOUR_API_KEY" \
| grep -E '^[0-9]' | sed 's|/32$||' | jq -Rn '[inputs]' \
| curl -s -X POST -H "SEC: $QRADAR_TOKEN" -H "Content-Type: application/json" \
"https://$QRADAR/api/reference_data/sets/bulk_load/ipdb_blacklist" --data-binary @-
# Rule: when the source IP is contained in any of ipdb_blacklist
Graylog
Define a lookup table in Graylog with the CSV file adapter and query it for the source IP in your pipeline.
# /etc/graylog/server/ipdb.csv — cron ile yenile / refresh by cron
curl -fsS "https://ip-db.com/api/v1/feed.txt?key=YOUR_API_KEY" \
| awk 'BEGIN{print "ip,listed"} /^[0-9]/{sub("/32","");print $0",true"}' \
> /etc/graylog/server/ipdb.csv
# System → Lookup Tables: Data Adapter = CSV File, Cache = In-Memory# Pipeline rule:
rule "ipdb lookup"when has_field("src_ip")
then
set_field("ipdb_listed", lookup_value("ipdb", to_string($message.src_ip)));
end
SIEM /Automation Platforms
There's no official plugin — you don't need one. The API is plain JSON over REST with a Key header, so it works directly with the generic "HTTP request" / "Webhook" step in Zapier, Make, n8n, Splunk (via an HEC-forwarding script), or any SOAR playbook. Auth: a custom header, Key: YOUR_API_KEY.
Suricata
Suricata 6 and later can match datasets directly inside a rule.
# /var/lib/suricata/ipdb.list
curl -fsS "https://ip-db.com/api/v1/feed.txt?key=YOUR_API_KEY" \
| grep -E '^[0-9]' | sed 's|/32$||' > /var/lib/suricata/ipdb.list
# local.rules
alert ip [!$HOME_NET] any -> $HOME_NET any (msg:"ip-db.com listed source"; \
dataset:isset,ipdb,type string,load ipdb.list; sid:9000001; rev:1;)
Snort
Snort 2.9's reputation preprocessor reads a plain IP list file.
Our free, open-source honeypot sensor waits on ports your server does not use and reports the scanners and attackers that connect to a shared blocklist.
Thousands of CVEs are published every week; a handful matter. The bulletin collects what actually started being exploited that week, plus the critical vulnerabilities worth your time, in one email.
Exploited firstEvery CISA KEV addition that week
One email a weekNo noise, no marketing mail
No account neededOne-click unsubscribe; the address is never shared
CVSS, KEV and EPSS togetherNot just a score — what to patch first