pfSense QoS IDS

来源 https://blanboom.org/2018/pfsense-setup/

之前我使用的无线路由器是 RT1900ac,其内置了 QoS 和 IDS/IPS 功能,但由于 CPU 性能有限,在百兆宽带的情况下,两者均会对网络性能造成一定的影响。

前段时间,群晖在 DSM 中推出了 Virtual Machine Manager 工具,可以在 NAS 中运行虚拟机。由于我的 NAS 中恰好有两个以太网接口,就准备在 NAS 中,通过虚拟机实现软路由,并体验一下这两项功能。

简单了解和试用 RouterOSOpenWrt x86VyOSpfSense 等软路由系统后,考虑到功能丰富程度和易用性,最终选择了 pfSense.

本文主要记录我的 pfSense 关键配置。由于大多数配置在网上都能找到完整的配置步骤,文章中将不会过于详细地介绍配置步骤。

pfSense QoS IDS-LMLPHP

通过 ELK Stack 收集并显示路由器中的日志

pfSense QoS IDS-LMLPHP

我的家庭网络拓扑图

QoS

pfSense QoS IDS-LMLPHP

家中的 NAS 上经常进行 PT 下载,另外还有一台迅雷的玩客云,两个设备经常占满上传带宽。使用 RT1900ac 路由器的时候,想开 QoS,降低 BT/PT 协议、以及玩客云设备的优先级,但发现打开 QoS 之后,CPU 负载过高,甚至影响到了整体网速。

对于软路由来说,性能就不会是大问题了。在 pfSense 上,我首先尝试了使用 FAIRQ + CoDel 的方式,来模拟 fq_codel 实现流量整形,而不需要手动配置复杂的规则。如果体验一段时间后,发现效果不太理想,再尝试手动配置规则。

参考资料:

Suricata IDS

pfSense QoS IDS-LMLPHP

Suricata 基础设置

Suricata 是一款 IDS/IPS 工具,能够检测网络中可疑的流量,例如下载恶意软件、端口扫描等。在 RT1900ac 上,Intrusion Prevention 工具也是基于 Suricata 的,但由于这款路由器内存太小,运行后占用资源过多,影响网速。

由于 pfSense 相对于 RouterOS 等操作系统,更侧重于防火墙,所以已经有功能较为全面的 Suricata 软件包,除了命令行工具外,还能在网页上方便地进行配置、更新规则、查看告警等。安装后即可使用。

参考资料:

使用 Kibana 可视化 Suricata 日志

RT1900ac 上的 Intrusion Prevention,拥有比较漂亮的 GUI 界面,能够将 Suricata 状态信息、攻击来源等以直观的形式显示出来。对于 pfSense,想要这样的功能,就需要其他工具了。

经过查找,我发现了 kibana 工具,能够分析 Suricata 的日志信息,并对日志信息进行可视化。初步看来,其可视化的界面效果比 Intrusion Prevention 还要好。

由于 kibana 及相关的工具安装较为复杂,暂时没有可以一键使用的 Docker 镜像,所以暂时还没有配置安装完毕。准备在 NAS 上再开一台 Ubuntu Server 虚拟机,运行 kibana,并尝试在后面有时间的时候,制作一个整合了 Syslog Server、ELK Stack 的 Docker 镜像,使 kibana 直接在 Docker 容器中运行。

Update(2018-06-15):

已制作了一个 Docker 镜像,能够直接收集 pfSense 和 Suricata 的日志信息,并可视化。具体请参考:https://github.com/blanboom/docker-elk-suricata

参考资料:

流量监控

pfSense QoS IDS-LMLPHP

ntopng 控制面板

在我的 pfSense 中,安装有 ntopng 和 bandwidthd,用于监控网络中各个设备的流量。其中,bandwidthd 用于快速查看各设备的流量使用情况,ntopng 则提供了更为详细的流量使用信息。

NAT 设置

pfSense QoS IDS-LMLPHP

对于部分需要在内外网使用同一个 IP 访问的服务,需要在内网 LAN 口,通过 WAN 口 IP 地址,访问已经映射到公网的服务。对于之前的路由器,默认就可以在 LAN 口直接访问 WAN 口 IP,但在 pfSense 中,需要做一下特殊的设置,具体见这篇文章:

=========== End

05-21 07:15