{"id":89,"date":"2022-07-22T14:45:29","date_gmt":"2022-07-22T14:45:29","guid":{"rendered":"https:\/\/idstower.com\/blog\/?p=89"},"modified":"2026-10-19T02:52:28","modified_gmt":"2026-10-19T02:52:28","slug":"configuring-suricata-ids-to-alert-on-malicious-file-hashes","status":"publish","type":"post","link":"https:\/\/idstower.com\/blog\/configuring-suricata-ids-to-alert-on-malicious-file-hashes\/","title":{"rendered":"Configuring Suricata IDS to alert on Malicious File Hashes"},"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 and returns at most the last seven days of IOCs.<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">Continuing our posts on <a href=\"https:\/\/idstower.com\/blog\/why-you-should-use-suricata-ids-to-alert-on-iocs\/\">why<\/a> and <a href=\"https:\/\/idstower.com\/blog\/alerting-on-iocs-using-suricata\/\">how to alert on Indicators of Compromise with Suricata&#8217;s Datasets<\/a>, this post shows how to alert on known-malicious files seen on the network, using SHA256 hashes published by abuse.ch <a href=\"https:\/\/threatfox.abuse.ch\/\">ThreatFox<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">But first: why use hashes as IOCs at all, when attackers can change them so easily?<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Why hash IOCs are still relevant today<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Relying only on malicious file hashes won&#8217;t make a solid defence, but as an extra detection angle they help, for three reasons.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1. Hash IOCs are everywhere<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Most, if not all, commercial and free threat intelligence feeds publish hash IOCs. Traditionally they go into EDR and antivirus tools to block malicious files on endpoints. Suricata lets you do the same at the network level, which also covers servers, IoT devices and anything else without an EDR agent.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">2. Not every attacker is that advanced<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Once a system is on the internet, it will see threats of every kind. Some may come from a real APT, but most will be opportunistic attacks by criminals who reuse published malware and tools without changing their hashes. That&#8217;s a detection opportunity: attackers aren&#8217;t invincible, and we should use that.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">3. Hashes have no false positives<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Unlike IDS signatures, which can produce false positives for many reasons, a file&#8217;s hash either matches a known-bad hash or it doesn&#8217;t. As long as you trust your feed, a match means you saw that exact file.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">How Suricata detects files by hash<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Suricata <a href=\"https:\/\/docs.suricata.io\/en\/latest\/file-extraction\/file-extraction.html\">extracts files<\/a> from several protocols, including HTTP, HTTP\/2, SMTP, FTP, SMB and NFS, and can hash them as they pass. Rules then match the hash with the <a href=\"https:\/\/docs.suricata.io\/en\/latest\/rules\/file-keywords.html\"><code>filemd5<\/code>, <code>filesha1<\/code> and <code>filesha256<\/code> keywords<\/a>. Which one you use depends on the hashes your feeds publish. This post sticks to SHA256, today&#8217;s standard.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">We used Ubuntu 24.04 with Suricata 8.0 (<a href=\"https:\/\/docs.suricata.io\/en\/latest\/install\/ubuntu.html\">Ubuntu install guide<\/a>), and ran the same steps on Suricata 7.0.<\/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 hash list<\/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. 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\">Then extract the SHA256 hashes and copy the list next to your rules:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>jq -r '.data&#91;] | select(.ioc_type == \"sha256_hash\") | .ioc' iocs_list.json | sort -u > threatfox_sha256.lst\nwc -l threatfox_sha256.lst\n\nsudo mkdir -p \/etc\/suricata\/rules\nsudo install -m 644 threatfox_sha256.lst \/etc\/suricata\/rules\/<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Make sure the list isn&#8217;t empty: Suricata refuses to load a <code>filesha256<\/code> rule whose list has no entries.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Creating the Suricata rule<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>alert http any any -> any any (msg:\"ThreatFox IOC: malicious file transferred over HTTP\"; flow:established; filesha256:\/etc\/suricata\/rules\/threatfox_sha256.lst; classtype:trojan-activity; sid:1000002; rev:1;)<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The rule alerts when a file whose SHA256 is in the list crosses the network over HTTP, in either direction. The <code>filesha256<\/code> keyword also makes Suricata compute the hash, so nothing else needs switching on. To cover other protocols, copy the rule and change <code>http<\/code> to <code>http2<\/code>, <code>smtp<\/code>, <code>ftp-data<\/code>, <code>smb<\/code> or <code>nfs<\/code>, giving each copy its own <code>sid<\/code>.<\/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 http any any -> any any (msg:\"ThreatFox IOC: malicious file transferred over HTTP\"; flow:established; filesha256:\/etc\/suricata\/rules\/threatfox_sha256.lst; classtype:trojan-activity; sid:1000002; 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<h2 class=\"wp-block-heading\">Let Suricata see whole files<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">This is the step the first version of this post missed. Suricata can only hash a file it has seen from start to finish, and two default settings cut files short:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong><code>response-body-limit<\/code><\/strong> (and <code>request-body-limit<\/code>, for uploads) in the HTTP section: <strong>100 KB<\/strong> by default. A larger file downloaded over HTTP is cut off at 100 KB, never hashed, and never alerts.<\/li>\n\n\n\n<li><strong><code>stream.reassembly.depth<\/code><\/strong>: <strong>1 MB<\/strong> by default, for every TCP protocol. A file that runs past it is cut off too.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">In our tests on Suricata 7.0 and 8.0 with the defaults, a 200 KB file and a 3 MB file both went unhashed (<code>\"state\": \"TRUNCATED\"<\/code> in <code>eve.json<\/code>). With both limits raised to 10 MB, both raised the alert. Edit the existing keys in <code>\/etc\/suricata\/suricata.yaml<\/code>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>app-layer:\n  protocols:\n    http:\n      libhtp:\n        default-config:\n          request-body-limit: 10mb\n          response-body-limit: 10mb\n\nstream:\n  reassembly:\n    depth: 10mb<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">These keys are already in the file, so change their values rather than adding a second copy. <code>0<\/code> removes a limit entirely, but higher limits cost memory for every flow, so on a busy sensor raise them step by step and watch memory use.<\/p>\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 a live malware sample to test the rule: any file works once its hash is in the list. On a second machine whose traffic Suricata can see, create a 2 MB test file, note its hash, and serve it over HTTP:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>head -c 2000000 \/dev\/urandom > ioc-test.bin\nsha256sum ioc-test.bin\npython3 -m http.server 8000<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">On the Suricata host, add that hash to the list and reload the rules:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>echo '&lt;the sha256 from above>' | sudo tee -a \/etc\/suricata\/rules\/threatfox_sha256.lst\nsudo systemctl reload suricata<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Then download the file from the Suricata host:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>curl -o \/dev\/null http:\/\/&lt;second-machine-ip>:8000\/ioc-test.bin<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Check <code>fast.log<\/code>, or <code>eve.json<\/code> for the full picture:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo grep ':1000002:' \/var\/log\/suricata\/fast.log\nsudo jq 'select(.event_type == \"alert\" and .alert.signature_id == 1000002)' \/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:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n  \"timestamp\": \"2026-10-08T03:06:58.406643+0000\",\n  \"event_type\": \"alert\",\n  \"src_ip\": \"192.168.1.30\",\n  \"src_port\": 8000,\n  \"dest_ip\": \"192.168.1.20\",\n  \"dest_port\": 57678,\n  \"proto\": \"TCP\",\n  \"alert\": {\n    \"action\": \"allowed\",\n    \"signature_id\": 1000002,\n    \"signature\": \"ThreatFox IOC: malicious file transferred over HTTP\",\n    \"category\": \"A Network Trojan was detected\",\n    \"severity\": 1\n  },\n  \"http\": {\n    \"hostname\": \"192.168.1.30\",\n    \"http_port\": 8000,\n    \"url\": \"\/ioc-test.bin\",\n    \"http_method\": \"GET\",\n    \"status\": 200\n  },\n  \"files\": &#91;\n    {\n      \"filename\": \"\/ioc-test.bin\",\n      \"gaps\": false,\n      \"state\": \"CLOSED\",\n      \"sha256\": \"10029d095ad4134ed193f2695a8429beae302937c245853b05222a2f61b5154b\",\n      \"stored\": false,\n      \"size\": 2000000\n    }\n  ],\n  \"app_proto\": \"http\"\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><code>\"state\": \"CLOSED\"<\/code> and the <code>sha256<\/code> field show that Suricata saw the whole file. If your <code>fileinfo<\/code> events show <code>\"state\": \"TRUNCATED\"<\/code> instead, go back to the limits above. Rebuilding the list with the steps above removes the test hash again.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Testing with a real sample.<\/strong> If you&#8217;d rather use real malware in an isolated lab, pick a hash from your list and download the sample from <a href=\"https:\/\/bazaar.abuse.ch\/\">MalwareBazaar<\/a>. Samples come as password-protected zips (the password is <code>infected<\/code>). Unzip it on the serving machine, not on the Suricata host, and serve the file as above; the zip itself has a different hash.<\/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 hash 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 SHA256 hashes, IDSTower adds file-hash rules for downloads and uploads over HTTP, HTTP\/2, SMTP, FTP, SMB and NFS. For domains from the same feeds, it alerts on DNS queries, HTTP Host headers and TLS SNI. 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 and returns at most the last seven days of IOCs. Continuing our posts on why and how to alert on Indicators of Compromise with Suricata&#8217;s Datasets, this post shows how to alert on known-malicious files seen on the network, using SHA256 hashes published by abuse.ch ThreatFox. [&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":"","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":"","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,11,8,7],"class_list":["post-89","post","type-post","status-publish","format-standard","hentry","category-suricata-ids","tag-iocs","tag-malicious-files","tag-suricata","tag-threat-intelligence-feeds"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Configuring Suricata IDS to alert on Malicious File Hashes - IDSTower Blog<\/title>\n<meta name=\"description\" content=\"Alert when a known-malicious file crosses your network by matching its SHA256 hash against abuse.ch ThreatFox IOCs in Suricata. 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\/configuring-suricata-ids-to-alert-on-malicious-file-hashes\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Configuring Suricata IDS to alert on Malicious File Hashes\" \/>\n<meta property=\"og:description\" content=\"Alert when a known-malicious file crosses your network by matching its SHA256 hash against abuse.ch ThreatFox IOCs in Suricata. Tested on Suricata 7 and 8.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/idstower.com\/blog\/configuring-suricata-ids-to-alert-on-malicious-file-hashes\/\" \/>\n<meta property=\"og:site_name\" content=\"IDSTower Blog\" \/>\n<meta property=\"article:published_time\" content=\"2022-07-22T14:45:29+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-19T02:52:28+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=\"Configuring Suricata IDS to alert on Malicious File Hashes\" \/>\n<meta name=\"twitter:description\" content=\"Alert when a known-malicious file crosses your network by matching its SHA256 hash against abuse.ch ThreatFox IOCs in Suricata. Tested on Suricata 7 and 8.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/idstower.com\/blog\/wp-content\/uploads\/2021\/07\/logo-min.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=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/idstower.com\\\/blog\\\/configuring-suricata-ids-to-alert-on-malicious-file-hashes\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/idstower.com\\\/blog\\\/configuring-suricata-ids-to-alert-on-malicious-file-hashes\\\/\"},\"author\":{\"name\":\"admin\",\"@id\":\"https:\\\/\\\/idstower.com\\\/blog\\\/#\\\/schema\\\/person\\\/de3006b0e8ec6f07ed283b57edc0137d\"},\"headline\":\"Configuring Suricata IDS to alert on Malicious File Hashes\",\"datePublished\":\"2022-07-22T14:45:29+00:00\",\"dateModified\":\"2026-10-19T02:52:28+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/idstower.com\\\/blog\\\/configuring-suricata-ids-to-alert-on-malicious-file-hashes\\\/\"},\"wordCount\":1079,\"publisher\":{\"@id\":\"https:\\\/\\\/idstower.com\\\/blog\\\/#organization\"},\"keywords\":[\"IOCs\",\"Malicious Files\",\"Suricata\",\"Threat Intelligence Feeds\"],\"articleSection\":[\"Suricata IDS\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/idstower.com\\\/blog\\\/configuring-suricata-ids-to-alert-on-malicious-file-hashes\\\/\",\"url\":\"https:\\\/\\\/idstower.com\\\/blog\\\/configuring-suricata-ids-to-alert-on-malicious-file-hashes\\\/\",\"name\":\"Configuring Suricata IDS to alert on Malicious File Hashes - IDSTower Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/idstower.com\\\/blog\\\/#website\"},\"datePublished\":\"2022-07-22T14:45:29+00:00\",\"dateModified\":\"2026-10-19T02:52:28+00:00\",\"description\":\"Alert when a known-malicious file crosses your network by matching its SHA256 hash against abuse.ch ThreatFox IOCs in Suricata. Tested on Suricata 7 and 8.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/idstower.com\\\/blog\\\/configuring-suricata-ids-to-alert-on-malicious-file-hashes\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/idstower.com\\\/blog\\\/configuring-suricata-ids-to-alert-on-malicious-file-hashes\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/idstower.com\\\/blog\\\/configuring-suricata-ids-to-alert-on-malicious-file-hashes\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/idstower.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Configuring Suricata IDS to alert on Malicious File Hashes\"}]},{\"@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":"Configuring Suricata IDS to alert on Malicious File Hashes - IDSTower Blog","description":"Alert when a known-malicious file crosses your network by matching its SHA256 hash against abuse.ch ThreatFox IOCs in Suricata. 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\/configuring-suricata-ids-to-alert-on-malicious-file-hashes\/","og_locale":"en_US","og_type":"article","og_title":"Configuring Suricata IDS to alert on Malicious File Hashes","og_description":"Alert when a known-malicious file crosses your network by matching its SHA256 hash against abuse.ch ThreatFox IOCs in Suricata. Tested on Suricata 7 and 8.","og_url":"https:\/\/idstower.com\/blog\/configuring-suricata-ids-to-alert-on-malicious-file-hashes\/","og_site_name":"IDSTower Blog","article_published_time":"2022-07-22T14:45:29+00:00","article_modified_time":"2026-10-19T02:52:28+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":"Configuring Suricata IDS to alert on Malicious File Hashes","twitter_description":"Alert when a known-malicious file crosses your network by matching its SHA256 hash against abuse.ch ThreatFox IOCs in Suricata. Tested on Suricata 7 and 8.","twitter_image":"https:\/\/idstower.com\/blog\/wp-content\/uploads\/2021\/07\/logo-min.png","twitter_creator":"@IDSTower","twitter_site":"@IDSTower","twitter_misc":{"Written by":"admin","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/idstower.com\/blog\/configuring-suricata-ids-to-alert-on-malicious-file-hashes\/#article","isPartOf":{"@id":"https:\/\/idstower.com\/blog\/configuring-suricata-ids-to-alert-on-malicious-file-hashes\/"},"author":{"name":"admin","@id":"https:\/\/idstower.com\/blog\/#\/schema\/person\/de3006b0e8ec6f07ed283b57edc0137d"},"headline":"Configuring Suricata IDS to alert on Malicious File Hashes","datePublished":"2022-07-22T14:45:29+00:00","dateModified":"2026-10-19T02:52:28+00:00","mainEntityOfPage":{"@id":"https:\/\/idstower.com\/blog\/configuring-suricata-ids-to-alert-on-malicious-file-hashes\/"},"wordCount":1079,"publisher":{"@id":"https:\/\/idstower.com\/blog\/#organization"},"keywords":["IOCs","Malicious Files","Suricata","Threat Intelligence Feeds"],"articleSection":["Suricata IDS"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/idstower.com\/blog\/configuring-suricata-ids-to-alert-on-malicious-file-hashes\/","url":"https:\/\/idstower.com\/blog\/configuring-suricata-ids-to-alert-on-malicious-file-hashes\/","name":"Configuring Suricata IDS to alert on Malicious File Hashes - IDSTower Blog","isPartOf":{"@id":"https:\/\/idstower.com\/blog\/#website"},"datePublished":"2022-07-22T14:45:29+00:00","dateModified":"2026-10-19T02:52:28+00:00","description":"Alert when a known-malicious file crosses your network by matching its SHA256 hash against abuse.ch ThreatFox IOCs in Suricata. Tested on Suricata 7 and 8.","breadcrumb":{"@id":"https:\/\/idstower.com\/blog\/configuring-suricata-ids-to-alert-on-malicious-file-hashes\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/idstower.com\/blog\/configuring-suricata-ids-to-alert-on-malicious-file-hashes\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/idstower.com\/blog\/configuring-suricata-ids-to-alert-on-malicious-file-hashes\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/idstower.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Configuring Suricata IDS to alert on Malicious File Hashes"}]},{"@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\/89","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=89"}],"version-history":[{"count":21,"href":"https:\/\/idstower.com\/blog\/wp-json\/wp\/v2\/posts\/89\/revisions"}],"predecessor-version":[{"id":160,"href":"https:\/\/idstower.com\/blog\/wp-json\/wp\/v2\/posts\/89\/revisions\/160"}],"wp:attachment":[{"href":"https:\/\/idstower.com\/blog\/wp-json\/wp\/v2\/media?parent=89"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/idstower.com\/blog\/wp-json\/wp\/v2\/categories?post=89"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/idstower.com\/blog\/wp-json\/wp\/v2\/tags?post=89"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}