Suricata 入侵检测防御系统部署教程

Suricata 是由 OISF(Open Information Security Foundation)开发的高性能网络入侵检测和防御引擎。它支持 IDS(入侵检测)和 IPS(入侵防御)两种模式,能够实时分析网络流量并根据规则检测恶意行为。本文将详细介绍如何在搬瓦工 VPS 上部署和配置 Suricata。

一、Suricata 简介

Suricata 具有以下核心特性:

  • 多线程架构:充分利用多核 CPU,处理高带宽流量。
  • 协议识别:自动识别 HTTP、TLS、DNS、SSH 等应用层协议。
  • 文件提取:可以从网络流量中提取文件进行分析。
  • EVE JSON 日志:输出结构化的 JSON 日志,便于后续分析。
  • 兼容 Snort 规则:可以直接使用大部分 Snort 规则。

二、系统要求

  • 操作系统:Ubuntu 20.04+、Debian 11+、CentOS 7+。
  • 内存:至少 1GB,建议 2GB 以上(规则越多需要的内存越大)。
  • CPU:至少 1 核,建议 2 核以上。
  • 磁盘:至少 1GB 用于规则和日志。

三、安装 Suricata

3.1 Ubuntu/Debian 安装

apt update
apt install software-properties-common -y
add-apt-repository ppa:oisf/suricata-stable -y
apt update
apt install suricata -y

3.2 CentOS 安装

yum install epel-release -y
yum install suricata -y

3.3 验证安装

suricata --build-info
suricata -V

四、基础配置

Suricata 的主配置文件位于 /etc/suricata/suricata.yaml,需要根据实际环境进行调整。

4.1 配置网络接口

首先确认 VPS 的网络接口名称:

ip addr show

编辑配置文件,设置监听接口(通常为 eth0ens3):

# /etc/suricata/suricata.yaml 中的关键配置
af-packet:
  - interface: eth0
    cluster-id: 99
    cluster-type: cluster_flow
    defrag: yes
    use-mmap: yes
    tpacket-v3: yes

4.2 配置 HOME_NET

设置需要保护的内网地址范围:

vars:
  address-groups:
    HOME_NET: "[YOUR_VPS_IP/32]"
    EXTERNAL_NET: "!$HOME_NET"

YOUR_VPS_IP 替换为搬瓦工 VPS 的实际 IP 地址。

4.3 配置日志输出

outputs:
  - eve-log:
      enabled: yes
      filetype: regular
      filename: eve.json
      types:
        - alert:
            payload: yes
            payload-printable: yes
        - http:
            extended: yes
        - dns:
        - tls:
            extended: yes
        - files:
            force-magic: no
        - ssh
        - flow

五、规则管理

5.1 使用 suricata-update 更新规则

# 更新规则
suricata-update

# 查看可用规则源
suricata-update list-sources

# 启用 ET/Open 规则集
suricata-update enable-source et/open

# 再次更新以下载新规则
suricata-update

5.2 自定义规则

创建自定义规则文件:

cat > /etc/suricata/rules/local.rules << 'EOF'
# 检测 SSH 暴力破解
alert ssh any any -> $HOME_NET 22 (msg:"SSH brute force attempt"; flow:to_server,established; threshold:type both, track by_src, count 5, seconds 60; sid:1000001; rev:1;)

# 检测端口扫描
alert tcp any any -> $HOME_NET any (msg:"Possible port scan"; flags:S; threshold:type both, track by_src, count 20, seconds 10; sid:1000002; rev:1;)
EOF

5.3 验证规则

suricata -T -c /etc/suricata/suricata.yaml -v

如果输出中没有错误信息,说明规则加载正常。

六、IDS 模式运行

IDS 模式下 Suricata 只监控和告警,不会主动阻断流量:

systemctl enable suricata
systemctl start suricata
systemctl status suricata

查看告警日志:

tail -f /var/log/suricata/eve.json | jq 'select(.event_type=="alert")'

如果没有安装 jq,先安装:

apt install jq -y

七、IPS 模式配置

IPS 模式下 Suricata 可以主动阻断恶意流量。需要配合 nftables 使用:

7.1 配置 nftables 将流量转发到 Suricata

nft add table inet filter
nft add chain inet filter input { type filter hook input priority 0 \; }
nft add rule inet filter input queue num 0 bypass

7.2 修改 Suricata 配置启用 IPS

suricata.yaml 中启用 nfqueue 模式:

nfq:
  mode: accept
  repeat-mark: 1
  repeat-mask: 1
  route-queue: 2
  fail-open: yes

7.3 以 IPS 模式启动

suricata -c /etc/suricata/suricata.yaml -q 0

注意:启用 IPS 模式前务必测试规则,错误的规则可能导致正常流量被阻断。建议先在 IDS 模式下运行一段时间,确认规则无误后再切换。

八、性能调优

# 在 suricata.yaml 中调整线程配置
threading:
  set-cpu-affinity: yes
  cpu-affinity:
    - management-cpu-set:
        cpu: [ 0 ]
    - receive-cpu-set:
        cpu: [ 0 ]
    - worker-cpu-set:
        cpu: [ "all" ]
        mode: "exclusive"

对于搬瓦工 VPS,如果只有 1-2 个 CPU 核心,可以使用默认线程配置。多核方案可以根据实际情况分配。

九、日志分析

# 统计告警类型
cat /var/log/suricata/eve.json | jq -r 'select(.event_type=="alert") | .alert.signature' | sort | uniq -c | sort -rn | head -20

# 统计告警来源 IP
cat /var/log/suricata/eve.json | jq -r 'select(.event_type=="alert") | .src_ip' | sort | uniq -c | sort -rn | head -20

# 查看 HTTP 请求日志
cat /var/log/suricata/eve.json | jq 'select(.event_type=="http")' | head -50

十、常见问题

Suricata 启动后没有告警

检查网络接口配置是否正确,确认 Suricata 在正确的接口上监听:

cat /var/log/suricata/suricata.log | grep -i "interface"

内存占用过高

减少加载的规则数量,或在配置文件中调整内存限制:

detect:
  profile: low
  custom-values:
    toclient-groups: 2
    toserver-groups: 25

日志文件过大

配置日志轮转:

cat > /etc/logrotate.d/suricata << 'EOF'
/var/log/suricata/*.log /var/log/suricata/*.json {
    daily
    rotate 7
    compress
    missingok
    notifempty
    postrotate
        systemctl reload suricata
    endscript
}
EOF

总结

Suricata 是一款功能强大的网络入侵检测与防御引擎,能够为搬瓦工 VPS 提供实时的网络安全监控。通过合理配置规则和日志分析,可以及时发现和阻断各类网络攻击。建议搭配 CrowdSec 联防使用,形成多层防御体系。选购搬瓦工 VPS 请查看全部方案,购买时使用优惠码 NODESEEK2026 可享受折扣。如有问题可通过搬瓦工官网提交工单。

关于本站

搬瓦工VPS中文网(bwgvps.com)是非官方中文信息站,整理搬瓦工的方案、优惠和教程。我们不销售主机,不提供技术服务。

新手必读
搬瓦工优惠码

NODESEEK2026(优惠 6.77%)

购买时填入即可抵扣。