{"id":77,"date":"2021-10-09T08:50:38","date_gmt":"2021-10-09T08:50:38","guid":{"rendered":"https:\/\/idstower.com\/blog\/?p=77"},"modified":"2026-10-18T03:10:16","modified_gmt":"2026-10-18T03:10:16","slug":"alerting-on-iocs-using-suricata","status":"publish","type":"post","link":"https:\/\/idstower.com\/blog\/alerting-on-iocs-using-suricata\/","title":{"rendered":"Alerting on IOCs using Suricata"},"content":{"rendered":"\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><strong>Updated October 2026:<\/strong> ThreatFox now requires a free Auth-Key on every API request, and returns at most the last seven days of IOCs. The commands below are updated for both and were re-tested on Suricata 7.0 and 8.0.<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">In our previous post, we talked about <a href=\"https:\/\/idstower.com\/blog\/why-you-should-use-suricata-ids-to-alert-on-iocs\/\">why you should use Suricata IDS to alert on IOCs<\/a>. Suricata&#8217;s <a href=\"https:\/\/docs.suricata.io\/en\/latest\/rules\/datasets.html\">Datasets<\/a> feature is what makes that practical: one rule can match traffic against a list of thousands, or millions, of Indicators of Compromise (IOCs), such as malicious domains, IP addresses and file hashes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">It works in a simple way. You write the indicators to a file, Base64-encoded for strings such as domains and in hex for MD5 and SHA256 hashes, <strong>and a Suricata rule loads that file and matches traffic against it<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In this post we&#8217;ll use Datasets to alert on DNS queries to malicious domains published by abuse.ch <a href=\"https:\/\/threatfox.abuse.ch\/\">ThreatFox<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Before you start: get a ThreatFox Auth-Key<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">ThreatFox requires an <code>Auth-Key<\/code> header on every API request; without one, the API answers <code>401 Unauthorized<\/code>. Keys are free: sign in to the <a href=\"https:\/\/auth.abuse.ch\/\">abuse.ch Authentication Portal<\/a> and generate one from your profile.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">You&#8217;ll also need <code>curl<\/code> and <code>jq<\/code>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt install -y curl jq<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Preparing the IOCs file<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Put your key in a variable, then download the last seven days of IOCs from the <a href=\"https:\/\/threatfox.abuse.ch\/api\/\">ThreatFox API<\/a>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>export THREATFOX_AUTH_KEY='your-auth-key'\n\ncurl -s -X POST https:\/\/threatfox-api.abuse.ch\/api\/v1\/ \\\n  -H \"Auth-Key: ${THREATFOX_AUTH_KEY}\" \\\n  -d '{ \"query\": \"get_iocs\", \"days\": 7 }' > iocs_list.json<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><code>days<\/code> accepts 1 to 7; any other value returns <code>illegal_days<\/code>. For older indicators, ThreatFox publishes <a href=\"https:\/\/threatfox.abuse.ch\/export\/\">export files<\/a>, which need the same key.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Check that ThreatFox accepted the request before going further. Without a key you get <code>{\"error\": \"Unauthorized\"}<\/code>, and with a key ThreatFox doesn&#8217;t recognise, <code>{\"query_status\": \"unknown_auth_key\"}<\/code>; neither contains any IOCs:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>jq -e '.query_status == \"ok\"' iocs_list.json<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">It prints <code>true<\/code> and exits with 0 on a good response, which also makes it a handy guard in scripts.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Now extract the domain IOCs:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>jq -r '.data&#91;] | select(.ioc_type == \"domain\") | .ioc' iocs_list.json | sort -u > domains.txt<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Suricata expects a <code>string<\/code> dataset to be Base64-encoded, one entry per line, so encode each domain:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>while IFS= read -r domain; do printf '%s' \"$domain\" | base64 -w 0; echo; done &lt; domains.txt > threatfox_domains.lst<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Finally, copy the list next to your rules:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo mkdir -p \/etc\/suricata\/rules\nsudo install -m 644 threatfox_domains.lst \/etc\/suricata\/rules\/<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Creating the Suricata rule<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">To alert on DNS queries for any domain in the list, the rule compares the <code>dns.query<\/code> buffer with the dataset:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>alert dns $HOME_NET any -> any any (msg:\"ThreatFox IOC: DNS query for a malicious domain\"; dns.query; dataset:isset,threatfox_domains,type string,load \/etc\/suricata\/rules\/threatfox_domains.lst,memcap 10mb,hashsize 4096; classtype:trojan-activity; sid:1000001; rev:1;)<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>isset<\/code> raises the alert when the queried name is in the set.<\/li>\n\n\n\n<li><code>type string<\/code> with <code>load<\/code> reads the Base64 list we just built. If you load hundreds of thousands of domains, raise <code>memcap<\/code> and <code>hashsize<\/code> to match.<\/li>\n\n\n\n<li><code>sid:1000001<\/code> is in the range reserved for local rules, so it won&#8217;t collide with your ruleset.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">We define the dataset in the rule rather than in <code>suricata.yaml<\/code> on purpose. Suricata re-reads a dataset that a rule only <code>load<\/code>s every time the rules are reloaded. Sets defined in <code>suricata.yaml<\/code> are not reloaded; you would have to update them entry by entry with the <code>dataset-add<\/code> and <code>dataset-remove<\/code> <a href=\"https:\/\/docs.suricata.io\/en\/latest\/unix-socket.html\">unix socket commands<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Save the rule in its own file:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo tee \/etc\/suricata\/rules\/iocs.rules > \/dev\/null &lt;&lt;'EOF'\nalert dns $HOME_NET any -> any any (msg:\"ThreatFox IOC: DNS query for a malicious domain\"; dns.query; dataset:isset,threatfox_domains,type string,load \/etc\/suricata\/rules\/threatfox_domains.lst,memcap 10mb,hashsize 4096; classtype:trojan-activity; sid:1000001; rev:1;)\nEOF<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Then add that file to <code>rule-files<\/code> in <code>\/etc\/suricata\/suricata.yaml<\/code>. Use its absolute path and leave <code>default-rule-path<\/code> as it is, because <code>suricata-update<\/code> keeps writing <code>suricata.rules<\/code> there (<code>\/var\/lib\/suricata\/rules<\/code> on current packages):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>default-rule-path: \/var\/lib\/suricata\/rules\n\nrule-files:\n  - suricata.rules\n  - \/etc\/suricata\/rules\/iocs.rules<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Test the configuration and restart Suricata:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo suricata -T -c \/etc\/suricata\/suricata.yaml\nsudo systemctl restart suricata<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><code>suricata -T<\/code> also fails if <code>suricata.rules<\/code> doesn&#8217;t exist yet. If you have never run <code>suricata-update<\/code>, run <code>sudo suricata-update<\/code> first.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Verifying that alerting works<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">You don&#8217;t need to query a real malicious domain from your network to test this. Add a harmless test entry to the list, and reload the rules so Suricata re-reads it:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>echo \"$(printf '%s' 'threatfox-ioc-test.example' | base64 -w 0)\" | sudo tee -a \/etc\/suricata\/rules\/threatfox_domains.lst\nsudo systemctl reload suricata<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Then look the name up. It doesn&#8217;t exist, which is fine: Suricata only needs to see the query. (<code>nslookup<\/code> comes with the <code>dnsutils<\/code> package.)<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>nslookup threatfox-ioc-test.example<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The alert lands in <code>\/var\/log\/suricata\/eve.json<\/code>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo jq 'select(.event_type == \"alert\" and .alert.signature_id == 1000001)' \/var\/log\/suricata\/eve.json<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Here is a shortened alert from our Suricata 8.0 test, with the addresses changed. Suricata 7.0 logs the name under <code>dns.query<\/code> instead of <code>dns.queries<\/code>.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n  \"timestamp\": \"2026-10-08T03:01:35.146914+0000\",\n  \"event_type\": \"alert\",\n  \"src_ip\": \"192.168.1.20\",\n  \"src_port\": 60871,\n  \"dest_ip\": \"192.168.1.1\",\n  \"dest_port\": 53,\n  \"proto\": \"UDP\",\n  \"alert\": {\n    \"action\": \"allowed\",\n    \"signature_id\": 1000001,\n    \"signature\": \"ThreatFox IOC: DNS query for a malicious domain\",\n    \"category\": \"A Network Trojan was detected\",\n    \"severity\": 1\n  },\n  \"dns\": {\n    \"version\": 3,\n    \"type\": \"request\",\n    \"queries\": &#91;\n      { \"rrname\": \"threatfox-ioc-test.example\", \"rrtype\": \"A\" }\n    ]\n  },\n  \"app_proto\": \"dns\"\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Suricata alerted on the listed domain. The same rule scales to millions of IOCs that would otherwise take tens of thousands of separate rules. Rebuilding the list with the steps above also removes the test entry.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">How IDSTower can help<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The list you just built goes stale fast: ThreatFox adds new IOCs all the time, and the API only returns the last seven days. Keeping it current, on every sensor, is what <a href=\"https:\/\/idstower.com\/\">IDSTower<\/a> does for you:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>ThreatFox is built in.<\/strong> Enable the abuse.ch ThreatFox feed under Settings \u2192 Feeds and add your Auth-Key; IDSTower downloads the IOCs from then on (<a href=\"https:\/\/idstower.com\/docs\/first_cluster\/import_indicators.html\">how to enable a feed<\/a>).<\/li>\n\n\n\n<li><strong>Every host stays current.<\/strong> New indicators reach every managed Suricata host automatically. MISP, TAXII\/STIX and your own CSV or JSON feeds work the same way (<a href=\"https:\/\/idstower.com\/threat-intelligence-feeds.html\">threat intelligence feeds<\/a>).<\/li>\n\n\n\n<li><strong>The rules are written for you.<\/strong> For domains, IDSTower alerts on DNS queries, HTTP Host headers and TLS SNI. For SHA256 hashes, it adds file-hash rules for HTTP, HTTP\/2, SMTP, FTP, SMB and NFS. Each indicator&#8217;s score becomes the alert&#8217;s priority.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Try it in the <a href=\"https:\/\/demo.idstower.com\/\">live demo<\/a> (no signup), or <a href=\"https:\/\/idstower.com\/getLicense.php?type=Standard\">get a free license<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Updated October 2026: ThreatFox now requires a free Auth-Key on every API request, and returns at most the last seven days of IOCs. The commands below are updated for both and were re-tested on Suricata 7.0 and 8.0. In our previous post, we talked about why you should use Suricata IDS to alert on IOCs. [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"default","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"default","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[3],"tags":[9,8,10],"class_list":["post-77","post","type-post","status-publish","format-standard","hentry","category-suricata-ids","tag-iocs","tag-suricata","tag-threat-intelligence"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Alerting on IOCs using Suricata - IDSTower Blog<\/title>\n<meta name=\"description\" content=\"Alert on DNS queries to malicious domains with Suricata Datasets and abuse.ch ThreatFox IOCs. Updated for ThreatFox Auth-Keys, tested on Suricata 7 and 8.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/idstower.com\/blog\/alerting-on-iocs-using-suricata\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Alerting on IOCs using Suricata\" \/>\n<meta property=\"og:description\" content=\"Alert on DNS queries to malicious domains with Suricata Datasets and abuse.ch ThreatFox IOCs. Updated for ThreatFox Auth-Keys, tested on Suricata 7 and 8.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/idstower.com\/blog\/alerting-on-iocs-using-suricata\/\" \/>\n<meta property=\"og:site_name\" content=\"IDSTower Blog\" \/>\n<meta property=\"article:published_time\" content=\"2021-10-09T08:50:38+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-18T03:10:16+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/idstower.com\/blog\/wp-content\/uploads\/2021\/07\/logo-min.png\" \/>\n\t<meta property=\"og:image:width\" content=\"184\" \/>\n\t<meta property=\"og:image:height\" content=\"50\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:title\" content=\"Alerting on IOCs using Suricata\" \/>\n<meta name=\"twitter:description\" content=\"Alert on DNS queries to malicious domains with Suricata Datasets and abuse.ch ThreatFox IOCs. Updated for ThreatFox Auth-Keys, tested on Suricata 7 and 8.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/idstower.com\/blog\/wp-content\/uploads\/2021\/07\/logo-min-1.png\" \/>\n<meta name=\"twitter:creator\" content=\"@IDSTower\" \/>\n<meta name=\"twitter:site\" content=\"@IDSTower\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/idstower.com\\\/blog\\\/alerting-on-iocs-using-suricata\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/idstower.com\\\/blog\\\/alerting-on-iocs-using-suricata\\\/\"},\"author\":{\"name\":\"admin\",\"@id\":\"https:\\\/\\\/idstower.com\\\/blog\\\/#\\\/schema\\\/person\\\/de3006b0e8ec6f07ed283b57edc0137d\"},\"headline\":\"Alerting on IOCs using Suricata\",\"datePublished\":\"2021-10-09T08:50:38+00:00\",\"dateModified\":\"2026-10-18T03:10:16+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/idstower.com\\\/blog\\\/alerting-on-iocs-using-suricata\\\/\"},\"wordCount\":747,\"publisher\":{\"@id\":\"https:\\\/\\\/idstower.com\\\/blog\\\/#organization\"},\"keywords\":[\"IOCs\",\"Suricata\",\"Threat Intelligence\"],\"articleSection\":[\"Suricata IDS\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/idstower.com\\\/blog\\\/alerting-on-iocs-using-suricata\\\/\",\"url\":\"https:\\\/\\\/idstower.com\\\/blog\\\/alerting-on-iocs-using-suricata\\\/\",\"name\":\"Alerting on IOCs using Suricata - IDSTower Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/idstower.com\\\/blog\\\/#website\"},\"datePublished\":\"2021-10-09T08:50:38+00:00\",\"dateModified\":\"2026-10-18T03:10:16+00:00\",\"description\":\"Alert on DNS queries to malicious domains with Suricata Datasets and abuse.ch ThreatFox IOCs. Updated for ThreatFox Auth-Keys, tested on Suricata 7 and 8.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/idstower.com\\\/blog\\\/alerting-on-iocs-using-suricata\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/idstower.com\\\/blog\\\/alerting-on-iocs-using-suricata\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/idstower.com\\\/blog\\\/alerting-on-iocs-using-suricata\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/idstower.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Alerting on IOCs using Suricata\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/idstower.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/idstower.com\\\/blog\\\/\",\"name\":\"IDSTower Blog\",\"description\":\"Suricata tutorials and guides\",\"publisher\":{\"@id\":\"https:\\\/\\\/idstower.com\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/idstower.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/idstower.com\\\/blog\\\/#organization\",\"name\":\"IDSTower\",\"url\":\"https:\\\/\\\/idstower.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/idstower.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/idstower.com\\\/blog\\\/wp-content\\\/uploads\\\/2021\\\/07\\\/logo-min-1.png\",\"contentUrl\":\"https:\\\/\\\/idstower.com\\\/blog\\\/wp-content\\\/uploads\\\/2021\\\/07\\\/logo-min-1.png\",\"width\":184,\"height\":50,\"caption\":\"IDSTower\"},\"image\":{\"@id\":\"https:\\\/\\\/idstower.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/x.com\\\/IDSTower\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/idstower.com\\\/blog\\\/#\\\/schema\\\/person\\\/de3006b0e8ec6f07ed283b57edc0137d\",\"name\":\"admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/446d57f9f6515801789387627928696577a5920591f0aa3658734e8e5f482304?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/446d57f9f6515801789387627928696577a5920591f0aa3658734e8e5f482304?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/446d57f9f6515801789387627928696577a5920591f0aa3658734e8e5f482304?s=96&d=mm&r=g\",\"caption\":\"admin\"},\"sameAs\":[\"http:\\\/\\\/idstower.com\\\/blog\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Alerting on IOCs using Suricata - IDSTower Blog","description":"Alert on DNS queries to malicious domains with Suricata Datasets and abuse.ch ThreatFox IOCs. Updated for ThreatFox Auth-Keys, tested on Suricata 7 and 8.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/idstower.com\/blog\/alerting-on-iocs-using-suricata\/","og_locale":"en_US","og_type":"article","og_title":"Alerting on IOCs using Suricata","og_description":"Alert on DNS queries to malicious domains with Suricata Datasets and abuse.ch ThreatFox IOCs. Updated for ThreatFox Auth-Keys, tested on Suricata 7 and 8.","og_url":"https:\/\/idstower.com\/blog\/alerting-on-iocs-using-suricata\/","og_site_name":"IDSTower Blog","article_published_time":"2021-10-09T08:50:38+00:00","article_modified_time":"2026-10-18T03:10:16+00:00","og_image":[{"width":184,"height":50,"url":"https:\/\/idstower.com\/blog\/wp-content\/uploads\/2021\/07\/logo-min.png","type":"image\/png"}],"author":"admin","twitter_card":"summary_large_image","twitter_title":"Alerting on IOCs using Suricata","twitter_description":"Alert on DNS queries to malicious domains with Suricata Datasets and abuse.ch ThreatFox IOCs. Updated for ThreatFox Auth-Keys, tested on Suricata 7 and 8.","twitter_image":"https:\/\/idstower.com\/blog\/wp-content\/uploads\/2021\/07\/logo-min-1.png","twitter_creator":"@IDSTower","twitter_site":"@IDSTower","twitter_misc":{"Written by":"admin","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/idstower.com\/blog\/alerting-on-iocs-using-suricata\/#article","isPartOf":{"@id":"https:\/\/idstower.com\/blog\/alerting-on-iocs-using-suricata\/"},"author":{"name":"admin","@id":"https:\/\/idstower.com\/blog\/#\/schema\/person\/de3006b0e8ec6f07ed283b57edc0137d"},"headline":"Alerting on IOCs using Suricata","datePublished":"2021-10-09T08:50:38+00:00","dateModified":"2026-10-18T03:10:16+00:00","mainEntityOfPage":{"@id":"https:\/\/idstower.com\/blog\/alerting-on-iocs-using-suricata\/"},"wordCount":747,"publisher":{"@id":"https:\/\/idstower.com\/blog\/#organization"},"keywords":["IOCs","Suricata","Threat Intelligence"],"articleSection":["Suricata IDS"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/idstower.com\/blog\/alerting-on-iocs-using-suricata\/","url":"https:\/\/idstower.com\/blog\/alerting-on-iocs-using-suricata\/","name":"Alerting on IOCs using Suricata - IDSTower Blog","isPartOf":{"@id":"https:\/\/idstower.com\/blog\/#website"},"datePublished":"2021-10-09T08:50:38+00:00","dateModified":"2026-10-18T03:10:16+00:00","description":"Alert on DNS queries to malicious domains with Suricata Datasets and abuse.ch ThreatFox IOCs. Updated for ThreatFox Auth-Keys, tested on Suricata 7 and 8.","breadcrumb":{"@id":"https:\/\/idstower.com\/blog\/alerting-on-iocs-using-suricata\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/idstower.com\/blog\/alerting-on-iocs-using-suricata\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/idstower.com\/blog\/alerting-on-iocs-using-suricata\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/idstower.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Alerting on IOCs using Suricata"}]},{"@type":"WebSite","@id":"https:\/\/idstower.com\/blog\/#website","url":"https:\/\/idstower.com\/blog\/","name":"IDSTower Blog","description":"Suricata tutorials and guides","publisher":{"@id":"https:\/\/idstower.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/idstower.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/idstower.com\/blog\/#organization","name":"IDSTower","url":"https:\/\/idstower.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/idstower.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/idstower.com\/blog\/wp-content\/uploads\/2021\/07\/logo-min-1.png","contentUrl":"https:\/\/idstower.com\/blog\/wp-content\/uploads\/2021\/07\/logo-min-1.png","width":184,"height":50,"caption":"IDSTower"},"image":{"@id":"https:\/\/idstower.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/IDSTower"]},{"@type":"Person","@id":"https:\/\/idstower.com\/blog\/#\/schema\/person\/de3006b0e8ec6f07ed283b57edc0137d","name":"admin","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/446d57f9f6515801789387627928696577a5920591f0aa3658734e8e5f482304?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/446d57f9f6515801789387627928696577a5920591f0aa3658734e8e5f482304?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/446d57f9f6515801789387627928696577a5920591f0aa3658734e8e5f482304?s=96&d=mm&r=g","caption":"admin"},"sameAs":["http:\/\/idstower.com\/blog"]}]}},"_links":{"self":[{"href":"https:\/\/idstower.com\/blog\/wp-json\/wp\/v2\/posts\/77","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/idstower.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/idstower.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/idstower.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/idstower.com\/blog\/wp-json\/wp\/v2\/comments?post=77"}],"version-history":[{"count":10,"href":"https:\/\/idstower.com\/blog\/wp-json\/wp\/v2\/posts\/77\/revisions"}],"predecessor-version":[{"id":156,"href":"https:\/\/idstower.com\/blog\/wp-json\/wp\/v2\/posts\/77\/revisions\/156"}],"wp:attachment":[{"href":"https:\/\/idstower.com\/blog\/wp-json\/wp\/v2\/media?parent=77"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/idstower.com\/blog\/wp-json\/wp\/v2\/categories?post=77"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/idstower.com\/blog\/wp-json\/wp\/v2\/tags?post=77"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}