PacketLab
Suricata · Inline prevention

Drop verification and failure policies

Distinguish policy blocking, inspection exceptions and loss of the inspection process.

Examples target Suricata 8.0.1 on a prepared Linux lab host. Constructed outputs are illustrative, not live sensor results. Commands are lesson examples; no sensor or enforcement is started by this page.

Use a narrow benign enforcement marker

Use either the AF_PACKET pair or the scoped NFQUEUE lab, not both simultaneously. Confirm that GET /ordinary and GET /routecraft-check initially reach the prepared server with the alert-only local policy. Then replace only that marker with the following drop signature and validate the selected rules.

drop http 10.10.10.20 any -> 192.0.2.80 8080 (msg:"LAB PacketLab marker"; flow:established,to_server; http.uri; content:"/routecraft-check"; startswith; sid:1000002; rev:1;)

Correlate three pieces of evidence

EvidenceMarker request after drop policyOrdinary control request
SenderRequest sent; application may time outRequest succeeds
SensorMatching SID and blocking verdict/counterNo marker-rule block
ReceiverMarker request absent at applicationOrdinary request present

This matrix describes expected controlled results, not a performed test. Loss of all traffic indicates a broader path or availability problem, not a precise success. An application may retry, so exact packet and alert counts are not fixed.

Read final verdict carefully

Illustrative output · selected fields
jq -c 'select(.event_type=="alert") | {sid:.alert.signature_id,action:.alert.action,verdict}' /var/log/suricata/eve.json
{"sid":1000002,"action":"blocked","verdict":{"action":"drop"}}

The verdict field requires the corresponding EVE option and is optional. Another individual alert may be allowed while the final engine decision is drop. Match endpoints, time, sensor and flow rather than relying on a text signature name.

Separate engine exceptions from rule matches

A parser error, resource limit or missing stream context can invoke an exception policy. For Suricata 8 IPS, documented defaults commonly favor blocking for relevant exceptions, but individual policy support and settings differ. Inspect the complete installed configuration and exception counters before changing them. An exception drop is not proof that the marker signature matched.

Failure classInspect
Rule matchSID/revision and verdict
Stream/parser/resource exceptionSpecific exception policy and counter
No NFQUEUE consumerQueue bypass setting and kernel behavior
AF_PACKET process exitForwarding pair and hardware/physical fallback
Host or link failureIndependent availability design

Test and restore deliberately

In an isolated lab with separate management, test one failure at a time: remove the consumer, interrupt a data link and exercise the approved rollback. Record both traffic continuity and inspection continuity. No-listener bypass is not a universal answer to a hung consumer or full queue.

Restore the alert-only rule and known-good topology when done; remove the dedicated NFQUEUE table if it was used. Verify ordinary traffic and expected logging again. Prevention validation is complete only when both intended blocking and intended continued service are demonstrated.

Further reading

Key Takeaways

  • A precise drop test includes a benign negative control.
  • Correlate sender, engine verdict and destination evidence.
  • Optional EVE verdict fields depend on logger configuration.
  • Exception-policy drops are different from signature matches.
  • Test no-consumer, process, link and resource failures separately.

Drop verification and failure policies Quiz

Six questions · four options each · select one answer per question. Submit all answers to see your score and explanations.

1. Why include GET /ordinary in the drop test?
2. Does a timeout alone prove a rule blocked the request?
3. Must every EVE alert include verdict?
4. Does a resource exception drop prove a SID matched?
5. Does queue bypass solve every overload condition?
6. What should be checked after rollback?