pfSense和Snort:接口上的意外端口扫描stream量

我有一个pfSense框充当我的公共路由器和状态防火墙。

有1个WAN接口和几个使用NAT后面的私有IP的LAN接口。

我期望在WAN接口上看到使用Snort的portscans或各种东西。

我不希望在其中一个LAN接口上看到这个SNORT警报。

Attempted Information Leak PSNG_UDP_PORTSCAN SRC: 165.98.148.2 (some Nicaraguan IP) DST: 192.168.5.15 (a linux file sever on the LAN) 

我没有端口转发到192.168.5.15。 实际上,pfSense盒子上的任何东西都不应该是转发/路由/ NATing / PATING任何东西到内部地址。

我可以理解,如果我的内部机器正在与尼加拉瓜的IP进行通信,但是世界上的UDP数据报如何从WAN接口到LAN接口进行转发?

所以这里有一些事情我正在引起混乱。

首先,Snort是指源和目的地。 虽然Snort确实有能力保存一些状态信息(称为flowbits),但签名是针对单个数据包进行处理的。 这意味着源和目标不映射到客户端和服务器,它们直接映射到IP标头中的源地址和目标地址字段。 这就意味着引发这个规则的特定数据包在目标地址中有192.168.5.15,在源地址中有165.98.148.2。 我们在这里谈论的是一个单一的数据包,与谁发起会议无关。

其次,你的NAT设备在UDP方面比你想像的要多。 TCP很容易。 这是一个面向连接的协议。 整个devise就是谈判沟通,聊一会,然后说再见。 整个过程非常明确,NAT设备遵循这些标准。 他们看到你的SYN出去并在xlate表中添加一个条目,然后当FIN + ACK回来时,或者FIN + RST熄灭,或者足够的时间stream逝,xlate条目被删除。

UDP是无连接的,只是失火而已。 整个想法是,应用程序要么实现自己的握手和/或重发系统,要么不需要它们。 所以你会认为防火墙会允许你的UDP数据包出去,但是任何响应都会被阻塞。 除了没有。 你的NAT设备知道即使像UDP这样的无连接协议也经常有双向通信。 就像这样,它将像传输TCP那样为传出的UDPstream量插入xlate条目。 规则是有点不同,例如,我期望的条目超时在不同的时间间隔,只有当他们超时删除。

第三,这个警报可能是由Snort的sfPortscan预处理器触发的。 在一个严格限制的环境中,我可以看到它非常有用。 否则,可能会相当嘈杂。 问题在于它执行的检测types

  1. 一个主机与一台主机通信并且遇到很多端口的TCP / UDP通信
  2. 许多主机与一台主机通信并遇到多个端口的TCP / UDP通信
  3. TCP / UDP / ICMPstream量,其中一个主机与单个端口上的多个主机通信

很大程度上是因为#3这个警报可以由任何实际提供服务的系统触发。 出于某种原因,Windows SMB文件服务器似乎是误报最严重的罪犯。

现在,这里是事情的乐趣。 假设configuration(服务器,networking和防火墙)都很好。 在这种情况下,您的文件服务器可能会启动与外部IP的通信。 然后,返回通信触发了导致pfSense显示警报的sfPortscan预处理器。 这可能是一件坏事。 如果我,我会开始一个数据包捕获任何文件到/从您的文件服务器和一个外部地址。 然后,您可以开始检查数据包捕获并尝试弄清楚发生了什么事情。

UDP src / dest很容易被Snort误解。 不知道更多的stream量是很难说的。 在UDPstream量,DNS请求和其他事情上,UDP端口扫描规则一直不能使用。 如果您没有任何端口转发或到该内部IP的1:1 NAT,则不是来自远程IP的stream量,而是来自本地IP的stream量。