<div dir="ltr"><div><div>Here you go these should work, I have also done one for HOST header being missing which is also common. with no positive content match I worry these may FP for various odd reasons on otherwise legit traffic but hopefully not. Also one for connection to IP which is also common where a user would go to your site by its name like <a href="http://mysite.com">mysite.com</a> but a automated attack tool, scanner, exploit etc will hit it by IP so this gets a large percentage of them.<br><br>All of these will have TERRIBLE performance and you are better off deploying a web firewall if you can either commercial or modsecurity which also has information rules like this but you also have the ability to see in HTTPS. You can then use auditconsole to monitor alerts and things.<br><br>alert http $EXTERNAL_NET any -> $HTTP_SERVERS $HTTP_PORTS (msg:"LOCAL-WEB Connection Missing User-Agent Header Common In Automated Malicious Traffic"; flow:established,to_server; content:!"User-Agent|3A 20|"; http_header; classtype:web-application-attack; sid:134991; rev:1;)<br><br>alert http $EXTERNAL_NET any -> $HTTP_SERVERS $HTTP_PORTS (msg:"LOCAL-WEB Connection Missing Host Header Common In Automated Malicious Traffic"; flow:established,to_server; content:!"Host|3A 20|"; http_header; classtype:web-application-attack; sid:134992; rev:1;)<br><br>This rule can be improved locally in following ways:<br></div>- If you know what IPs your server have simply create one such as instead of all the content matches stuff and PCRE to match an IP in the header use simply content:"Host|3A 20|10.10.10.10"; http_header; (with the address being what it is yours). This would drastically increase the performance and accuracy of this rule for you and make it actually of the 3 the most worthwhile one to use as it will get most attack traffic and as a result of your IP being defined (or multiple rules with each/PCRE to match them) will be much better.<br></div>- You could also add in something like content:!"Host|3A 20|<a href="http://mysitename.com">mysitename.com</a>"; http_header; and negate next matches too if you are using the below rule.<br><br><div><div>alert http $EXTERNAL_NET any -> $HTTP_SERVERS $HTTP_PORTS (msg:"LOCAL-WEB Connection To Server IP Rather Than Hostname Common In Automated Malicious Traffic"; flow:established,to_server; content:"Host|3A 20|"; http_header; content:|2E|"; http_header; distance:1; within:3; content:|2E|"; http_header; distance:1; within:3; content:|2E|"; http_header; distance:1; within:3; pcre:"/Host\x3A\x20\d{1,3}\x2E\d{1,3}\x2E\d{1,3}\x2E\d{1,3}/H"; classtype:web-application-attack; sid:134993; rev:1;)<br><br></div><div>Anyway I hope this helps you but again I would recommend you look at a web firewall of some sort as it is better equipped although in theory the combination of the 3 rules above can detect a large percentage of the automated attack activity.<br><br></div><div>Kind Regards,<br>Kevin Ross<br></div></div></div><div class="gmail_extra"><br><div class="gmail_quote">On 30 October 2014 10:21, Evrard, Benjamin <span dir="ltr"><<a href="mailto:benjamin.evrard@adelpha.be" target="_blank">benjamin.evrard@adelpha.be</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi everyone !<br>
<br>
I've been trying to find if it's possible to write a rule that's<br>
triggered when specific fields are completely absent from a request or<br>
empty.<br>
<br>
In this specific case, I'd like to trigger an alert when no user agent<br>
is sent with an HTTP request.<br>
<br>
I have found rulesets achieving the same kind of match I try to<br>
(<a href="https://github.com/decanio/suricata/blob/master/rules/http-events.rules" target="_blank">https://github.com/decanio/suricata/blob/master/rules/http-events.rules</a>)<br>
but could see no trace of a way to specifically match the absence of<br>
user-agent. I also looked at the source code of the app-layer-htp<br>
module (<a href="https://github.com/inliniac/suricata/blob/master/src/app-layer-htp.c" target="_blank">https://github.com/inliniac/suricata/blob/master/src/app-layer-htp.c</a>)<br>
but could not find any lead there either.<br>
<br>
Does this feature exist somewhere else or is it planned to be included<br>
in some future release ?<br>
<br>
Best regards,<br>
Evrard B.<br>
_______________________________________________<br>
Suricata IDS Users mailing list: <a href="mailto:oisf-users@openinfosecfoundation.org">oisf-users@openinfosecfoundation.org</a><br>
Site: <a href="http://suricata-ids.org" target="_blank">http://suricata-ids.org</a> | Support: <a href="http://suricata-ids.org/support/" target="_blank">http://suricata-ids.org/support/</a><br>
List: <a href="https://lists.openinfosecfoundation.org/mailman/listinfo/oisf-users" target="_blank">https://lists.openinfosecfoundation.org/mailman/listinfo/oisf-users</a><br>
Training now available: <a href="http://suricata-ids.org/training/" target="_blank">http://suricata-ids.org/training/</a><br>
</blockquote></div><br></div>