• 首页
  • 归档
  • 关于
  • 搜索
  • 夜间模式
    ©2026  望时代 Theme by OneBlog

    望时代

    搜索
    标签
    # 教程 # Linux # 脚本 # AI # 影音 # 游戏 # 随笔 # 科技 # 认知
  • 首页>
  • >
  • 正文
  • 使用Proxmox+Suricata对小鸡进行入侵防御检测或阻止

    2026年06月26日 2 阅读 0 评论 8136 字

    使用Proxmox+Suricata对小鸡进行入侵防御检测或阻止 __2023年6月17日 __2条评论 __266次阅读 __0人点赞 __Tao_Qi 背景 从自己的博客转载的。
    为了进行对小鸡的流量审计。找了一圈后决定试试Proxmox suricata或者Proxmox开小鸡使用pfSense/Opnsense/RouterOS透明防火墙。体验下来感觉后者会更方便使用些(以后有时间再写)。
    这里先记录下Proxmox suricata的方法。

    来自ChatGPT:
    Suricata 是一个开源的入侵检测、预防和网络安全监视系统 (IDS/IPS/NSM)。它由 Open Information Security Foundation (OISF) 发展并维护。Suricata 是一个规则驱动的系统,其中规则和签名是用于检测网络入侵和恶意行为的主要部分。
    Suricata 的主要功能包括:
    入侵检测和防止 (IDS/IPS):Suricata 使用一个强大的规则和签名语言,可以检测对网络的各种攻击和威胁。
    网络安全监视 (NSM):除了 IDS/IPS 功能外,Suricata 还可以作为一个网络安全监视器,提供对网络流量的详细观察和记录。
    协议解析:Suricata 能够解析多种网络协议,包括 HTTP, FTP, TLS, SMB 和许多其他常见协议。这使得 Suricata 可以理解网络流量的上下文,以便更准确地检测威胁。
    多线程:Suricata 采用多线程设计,可以充分利用现代多核 CPU 的能力,提供更高的性能。
    输出模式:Suricata 提供多种输出模式,包括详细的日志文件,以及与其他网络安全工具(如 ELK stack,Moloch 等)的集成。
    开源:Suricata 是完全开源的,这意味着任何人都可以查看和修改其代码,以适应其特定的需要。
    它通常与像 pfSense 和 OPNsense 这样的防火墙软件一起使用,提供一种强大的、可定制的网络安全解决方案。

    实际用途可以有很多。比如可以看看谁在偷偷下bt干坏事。或者减少某个小鸡因为设置问题被人黑了变成肉鸡的概率。开NAT鸡应该会挺有用。
    可以有鸡腿吗 在Proxmox上安装Suricata 首先你得有一个安装好的Proxmox系统。 在Proxmox的命令行执行: apt-get install suricata modprobe nfnetlink_queue 启用开机后自动加载nfnetlink_queue依赖模块 echo "nfnetlink_queue" > /etc/modules-load.d/suricata.conf 之后去proxmox的webui。找到左侧的Datacenter->firewall选项
    确保firewall被全局地打开。 这样一来Suricata就算安装完了 配置Suricata 修改Suricata全局配置文件 nano /etc/suricata/suricata.yaml 将里面的

    default-rule-path: /etc/suricata/rules

    改成

    default-rule-path: /var/lib/suricata/rules

    如果你用的是独服并且虚拟机使用的是分配的公网ip(NAT鸡或者proxmox在内网里请忽略): 把

    HOME_NET: "[192.168.0.0/16,10.0.0.0/8,172.16.0.0/12]"

    改成

    HOME_NET: "[你的公网IP段/你的公网ip的网段]"

    然后保存退出。 给防火墙添加转发流量到Suricata的规则 关于防火墙的配置,我们有两种方法。第一种是使用Proxmox自带的防火墙规则。优点是pve-firewall会自动加上相应的iptables规则,可以选择性地在指定的虚拟机上打开IPS。缺点是pve-firewall只会创建输入到虚拟机的流量的规则。完全不管输出的流量。第二种方法是我们手动创建iptables规则。优点是支持全局的IPS并且支持双向流量。缺点是得手动管理规则(我喜欢自动化)。 第一种 如果让Proxmox使用pve-firewall对虚拟机创建NFQUEUE的规则,需要在对应的虚拟机的防火墙文件加上 nano /etc/pve/firewall/.fw

    [OPTIONS]
    ips: 1
    ips_queues: 0`

    第二种 如果想要手动地创建iptables规则 iptables -A INPUT -j NFQUEUE --queue-num 0 --queue-bypass
    iptables -A FORWARD -j NFQUEUE --queue-num 0 --queue-bypass
    iptables -A OUTPUT -j NFQUEUE --queue-num 0 --queue-bypass 这两个命令会把所有输入输出流量都转发到NFQUEUE(默认是第0个通道)进行处理。--queue-bypass的意思是当没有程序在监听nfqueue 0时会直接放走流量而不是drop掉。这保证了万一Suricata挂了我们的主机也不会失联。 Suricarta默认设置会监听NFQUEUE 0并决定数据的去留。 下载并更新Suricata的检测规则 接下来我们就可以来下载Suricata的检测规则了 运行以下命令来更新我们本地的规则集: suricata-update 等命令跑完后我们的规则集就下载好了 使Suricata运行在NFQUEUE模式 接下来要修改systemd service脚本来使suricata运行在nfqueue模式。 nano /etc/systemd/system/multi-user.target.wants/suricata.service 将ExecStart行改成 ExecStart=/usr/bin/suricata -D -c /etc/suricata/suricata.yaml --pidfile /run/suricata.pid -q 0 #使用NFQUEUE 0 接下来运行Suricata来验证运行状态 systemctl daemon-reload
    systemctl start suricata.service 看看规则是否被成功加载: cat /var/log/suricata/suricata.log | grep "rule files processed" 如果输出是类似于这个,证明规则成功加载了

    15/6/2023 -- 23:10:21 - - 1 rule files processed. 34178 rules successfully loaded, 0 rules failed`

    Suricata已经成功运行了。但是如果Suricata使用了太多规则集,内存会有点吃不消。我们可以只启用部分我们感兴趣的规则集。 下一步我们需要进行Suricata的规则集管理。 通过suricata-update来管理规则 方法非常简单。运行 suricata-update list-sources 可以看到suricata-update自带的规则来源列表。默认情况下只有et/open是被启用的。一般情况下et/open已经包含了非常多规则集供我们使用了。 也可以开启其他我们想要的规则集: suricata-update enable-source 规则集名称 #启用
    suricata-update disable-source 规则集名称 #禁用 在et/open有非常多种类的子集规则:https://tools.emergingthreats.net/docs/ETPro Rule Categories.pdf 默认是全部启用的,可以通过以下方法禁用指定的子集规则: nano /etc/suricata/disable.conf

    Disable come with installation rules

    group:app-layer-events.rules
    group:decoder-events.rules
    group:dhcp-events.rules
    group:dnp3-events.rules
    group:dns-events.rules
    group:files.rules
    group:http-events.rules
    group:ipsec-events.rules
    group:kerberos-events.rules
    group:modbus-events.rules
    group:nfs-events.rules
    group:ntp-events.rules
    group:smb-events.rules
    group:smtp-events.rules
    group:stream-events.rules
    group:tls-events.rules
    #Disable ET/Open Rules
    group:3coresec.rules
    group:botcc.portgrouped.rules
    group:botcc.rules
    group:ciarmy.rules
    group:compromised.rules
    group:drop.rules
    group:dshield.rules
    group:emerging-activex.rules
    group:emerging-adware_pup.rules
    group:emerging-attack_response.rules
    group:emerging-chat.rules
    group:emerging-coinminer.rules
    group:emerging-current_events.rules
    group:emerging-deleted.rules
    group:emerging-dns.rules
    group:emerging-dos.rules
    group:emerging-exploit_kit.rules
    group:emerging-exploit.rules
    group:emerging-ftp.rules
    group:emerging-games.rules
    group:emerging-hunting.rules
    group:emerging-icmp_info.rules
    group:emerging-icmp.rules
    group:emerging-imap.rules
    group:emerging-inappropriate.rules
    group:emerging-info.rules
    group:emerging-ja3.rules
    group:emerging-malware.rules
    group:emerging-misc.rules
    group:emerging-mobile_malware.rules
    group:emerging-netbios.rules
    group:emerging-p2p.rules
    group:emerging-phishing.rules
    group:emerging-policy.rules
    group:emerging-pop3.rules
    group:emerging-rpc.rules
    group:emerging-scada.rules
    group:emerging-scan.rules
    group:emerging-shellcode.rules
    group:emerging-smtp.rules
    group:emerging-snmp.rules
    group:emerging-sql.rules
    group:emerging-telnet.rules
    group:emerging-tftp.rules
    group:emerging-user_agents.rules
    group:emerging-voip.rules
    group:emerging-web_client.rules
    group:emerging-web_server.rules
    group:emerging-web_specific_apps.rules
    group:emerging-worm.rules
    group:threatview_CS_c2.rules
    group:tor.rules

    然后执行 suricata-update
    systemctl restart suricata.service #重启Suricata 如果想启用某些规则就手动注释掉对应的行就行。 如果想让某些规则变成触发后拦截(Drop)流量,可以把对应的规则加到/etc/suricata/drop.conf里去。
    流量检测日志在/var/log/suricata/eve.json
    拦截日志在/var/log/suricata/fast.json
    简单的流量统计在/var/log/suricata/stats.log 也可以用crontab来定时更新最新规则,这里就略过了。 这样一来Suricata就大致设置好了。 进阶

    • 可以使用ELK Stack配合Filebeat导出Suricata日志来实现可视化数据分析
    • 设置log rotation并写脚本自动删除老旧log文件(sericata的log文件可不小)

    参考:

    • Poxmox安装Suricata官方文档
    • Setting up IPS/inline for Linux — Suricata 6.0.0 documentation (Suricata官方文档)

    本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议

    1. mocha说道: 2023年6月17日 上午6:11
    2. anshi说道: 2023年6月17日 上午7:29 @Not-Oles #2 Hi Tom

    Thanks for your reply. The link to the blog version of this post is in my blog. It was written in Chinese. If more people interest in it, I can rewrite it into the English version. For the performance of netmap vs libcap. I haven't tried it on my side. I tired both nfqueue mode and netmap(on OPNSense VM) and their performance is good to me (can easily reach 1Gbps without high system load). Best Regards,
    Anshi 回复

    发表回复 取消回复电子邮件地址不会被公开。必填项已用 标注 __ __

    本文著作权归作者 [ doudoudoubao ] 享有,未经作者书面授权,禁止转载,封面图片来源于 [ 互联网 ] ,本文仅供个人学习、研究和欣赏使用。如有异议,请联系博主及时处理。
    取消回复

    发表留言
    回复

    Copyright©2026  All Rights Reserved.  Load:0.003 s
    Theme by OneBlog V3.7.1
    夜间模式

    开源不易,请尊重作者版权,保留基本的版权信息。