I believe that IPS mode via af_packet on FW is not possible.
via pcap, yes. No errors.
I think it has to do with the NIC driver´s compatibility
Viable and lightweight IPS mode is via NFQ netfilter, with iptables, in linux.
I removed rules that will give problems for less experienced users.
for tests:
run and verify. After return, ctrl +C.
Bash:
suricata -c /opt/etc/suricata/suricata.yaml --af-packet --simulate-ips
YAML:
%YAML 1.1
---
vars:
address-groups:
HOME_NET: "[192.168.0.0/16,10.0.0.0/8,172.16.0.0/12]"
EXTERNAL_NET: "any"
SMTP_SERVERS: "$HOME_NET"
HTTP_SERVERS: "$HOME_NET"
SQL_SERVERS: "$HOME_NET"
TELNET_SERVERS: "$HOME_NET"
DNP3_SERVER: "$HOME_NET"
DNP3_CLIENT: "$HOME_NET"
MODBUS_SERVER: "$HOME_NET"
MODBUS_CLIENT: "$HOME_NET"
ENIP_SERVER: "$HOME_NET"
ENIP_CLIENT: "$HOME_NET"
FTP_SERVERS: "$HOME_NET"
SSH_SERVERS: "$HOME_NET"
port-groups:
FTP_PORTS: "21"
HTTP_PORTS: "80"
ORACLE_PORTS: "1521"
SSH_PORTS: "29100"
SHELLCODE_PORTS: "!80"
DNP3_PORTS: "20000"
FILE_DATA_PORTS: "$HTTP_PORTS,110,143"
runmode: workers
host-mode: auto
af-packet:
- interface: -> WAN
- interface: br0
pcap:
- interface: auto
checksum-checks: auto
promisc: yes
copy-mode: ips
copy-iface: br0
- interface: br0
checksum-checks: auto
promisc: yes
copy-mode: ips
copy-iface: ppp0
pid-file: /opt/var/run/suricata.pid
default-log-dir: /opt/var/log/suricata
stats:
enabled: no
interval: 8
decoder-events-prefix: "decoder.event"
outputs:
- fast:
enabled: yes
filename: fast.log
append: yes
filetype: regular
- unified2-alert:
enabled: no
filename: unified2.alert
limit: 32mb
sensor-id: 0
xff:
enabled: no
- http-log:
enabled: yes
filename: http.log
append: yes
extended: yes
filetype: regular
- pcap-log:
enabled: no
filename: log.pcap
limit: 32mb
max-files: 1000
mode: normal
- tls-log:
enabled: no
filename: tls.log
extended: yes
- tls-store:
enabled: no
certs-log-dir: certs
- stats:
enabled: yes
filename: stats.log
interval: 10
append: no
- syslog:
enabled: no
identity: suricata
facility: local1
level: notice
- drop:
enabled: yes
filename: drop.log
append: yes
filetype: regular
- file-store:
enabled: no
log-dir: files
force-magic: no
- file-log:
enabled: no
filename: files-json.log
append: yes
filetype: regular
force-magic: no
- dns-log:
enabled: no
filename: dns.log
append: yes
filetype: regular
- eve-log:
enabled: no
filetype: regular
filename: eve-%Y-%m-%d-%H:%M.json
types:
- alert:
tagged-packets: yes
app-layer: true
flow: true
rule: true
metadata: true
raw: false
- drop:
alerts: yes
flows: all
magic-file: /opt/share/misc/magic
detect-engine:
- profile: medium
- custom-values:
toclient-src-groups: 2
toclient-dst-groups: 2
toclient-sp-groups: 2
toclient-dp-groups: 3
toserver-src-groups: 2
toserver-dst-groups: 4
toserver-sp-groups: 2
toserver-dp-groups: 25
- sgh-mpm-context: auto
- inspection-recursion-limit: 3000
threading:
set-cpu-affinity: no
detect-thread-ratio: 1.0
defrag:
memcap: 32mb
hash-size: 65536
trackers: 65535
max-frags: 65535
prealloc: yes
timeout: 60
flow:
memcap: 32mb
hash-size: 65536
prealloc: 10000
emergency-recovery: 30
prune-flows: 5
vlan:
use-for-tracking: true
flow-timeouts:
default:
new: 30
established: 300
closed: 0
emergency-new: 10
emergency-established: 100
emergency-closed: 0
tcp:
new: 60
established: 3600
closed: 120
emergency-new: 10
emergency-established: 300
emergency-closed: 20
udp:
new: 30
established: 300
emergency-new: 10
emergency-established: 100
icmp:
new: 30
established: 300
emergency-new: 10
emergency-established: 100
stream:
memcap: 32mb
checksum-validation: yes
inline: auto
reassembly:
memcap: 64mb
depth: 1mb
toserver-chunk-size: 2560
toclient-chunk-size: 2560
randomize-chunk-size: yes
host:
hash-size: 4096
prealloc: 1000
memcap: 16554432
host-os-policy:
windows: [0.0.0.0/0]
bsd: []
bsd-right: []
old-linux: []
linux: []
old-solaris: []
solaris: []
hpux10: []
hpux11: []
irix: []
macos: []
vista: []
windows2k3: []
logging:
default-log-level: info
outputs:
- console:
enabled: no
- file:
enabled: no
filename: /opt/var/log/suricata/suricata.log
- syslog:
enabled: no
facility: off
default-rule-path: /opt/var/lib/suricata/rules
rule-files:
- botcc.rules
- botcc.portgrouped.rules
- compromised.rules
- drop.rules
- dshield.rules
- emerging-malware.rules
- emerging-mobile_malware.rules
- emerging-worm.rules
- ciarmy.rules
- emerging-attack_response.rules
classification-file: /opt/etc/suricata/classification.config
reference-config-file: /opt/etc/suricata/reference.config
threshold-file: /opt/etc/suricata/threshold.config
asn1-max-frames: 256
engine-analysis:
rules-fast-pattern: yes
rules: yes
pcre:
match-limit: 3500
match-limit-recursion: 1500
app-layer:
protocols:
krb5:
enabled: no
ikev2:
enabled: yes
tls:
enabled: yes
detection-ports:
dp: "[443,444,465,853,993,995]"
dcerpc:
enabled: yes
ftp:
enabled: no
ssh:
enabled: yes
smtp:
enabled: yes
imap:
enabled: detection-only
msn:
enabled: detection-only
smb:
enabled: yes
detection-ports:
dp: 139, 445
dns:
global-memcap: 16777216
state-memcap: 524288
request-flood: 500
tcp:
enabled: yes
detection-ports:
dp: 53
udp:
enabled: yes
detection-ports:
dp: 53
http:
enabled: yes
memcap: 16108864
libhtp:
default-config:
personality: IDS
request-body-limit: 2mb
response-body-limit: 2mb
request-body-minimal-inspect-size: 32kb
request-body-inspect-window: 4kb
response-body-minimal-inspect-size: 32kb
response-body-inspect-window: 4kb
http-body-inline: auto
double-decode-path: no
double-decode-query: no
ntp:
enabled: yes
dhcp:
enabled: yes
sip:
enabled: yes
coredump:
max-dump: unlimited