Suricata
Note: This page is quite old and is likely out of date. My opinions may have also changed dramatically since this was written. It is here as a reference until I get around to updating it.
Installation
yum install suricata -y
Configuration
Network Configuration for IPS
I purchased a dedicated two NIC PCIe card to make use of Suricata in IPS mode. When connected these interfaces were reported to me as devices p1p1 and p2p1. I want the IPS to show up transparently, at no point should the IPS be addressable on it's sniffing interfaces. The bridge interface that will handle the filtering, sniffing etc will be br256. Here are the various configuration files:
/etc/sysconfig/network-scripts/ifcfg-p1p1
DEVICE="p1p1"
NM_CONTROLLED="no"
HWADDR="00:0A:CD:20:86:EC"
ONBOOT="yes"
BOOTPROTO="none"
BRIDGE=br256
IPV6INIT=no
IPV6_AUTOCONF=no
NAME="Transparent TAP"
/etc/sysconfig/network-scripts/ifcfg-p2p1
DEVICE="p2p1"
NM_CONTROLLED="no"
HWADDR="00:0A:CD:20:86:ED"
ONBOOT="yes"
BOOTPROTO="none"
BRIDGE=br256
IPV6INIT=no
IPV6_AUTOCONF=no
NAME="Transparent TAP"
/etc/sysconfig/network-scripts/ifcfg-br256
# br256 - No VLAN - Transparent Intercept Bridge
DEVICE=br256
NM_CONTROLLED=no
ONBOOT=yes
TYPE=Bridge
STP=off
DELAY=0
BOOTPROTO=none
IPV6INIT=no
IPV6_AUTOCONF=no
NAME="Transparent Intercept Bridge"
Sysctl Configuration Options
The following changes will need to be made to sysctl settings to allow filtering of traffic across bridges:
# Ensure all traffic is forwarded where appropriate
net.ipv4.ip_forward = 1
net.ipv6.conf.default.forwarding = 1
net.ipv6.conf.all.forwarding = 1
# Enable netfilter on bridges.
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-arptables = 0
net.bridge.bridge-nf-filter-pppoe-tagged = 0
net.bridge.bridge-nf-filter-vlan-tagged = 0
net.bridge.bridge-nf-pass-vlan-input-dev = 1
Initial Firewall Rules
Initially we want to allow all the traffic across the bridges.
First iptables:
# Traffic across the transparent bridge
-A FORWARD -i br256 -o br256 -j ACCEPT
And then ip6tables:
# Traffic across the transparent bridge
-A FORWARD -i br256 -o br256 -j ACCEPT
After restarting the network, applying the sysctl file, connecting the card's ports and bringing up the interfaces you can start watching traffic with tshark:
tshark -i br256
e0ae306a @ 2024-07-15