当人们想到IPsec时,他们会想到数据加密,但它也可以用来丢弃数据包或允许数据包没有任何加密。它可以根据源和目的IP地址和端口号来实现这一点。这正是防火墙的作用;所以你可以把VOS的IPsec功能当作防火墙使用。
举个例子,比如你有一个内部文档服务应用,它的监听端口是*.12345,也就是说,它监听的端口是12345,会接受模块上任何接口的连接。模块上刚刚添加了一个新的接口,它连接到一个供应商的网络。该网络的人不应该连接到文档服务。理想情况下,在模块和供应商网络之间的网络上有一个防火墙,可以屏蔽12345端口,但"深度防御"的原则是,基于网络和主机的防火墙比单纯的网络防火墙更好。
有几种方法可以配置IPsec,使其放弃来自供应商网络的连接。最简单的方法是放弃任何连接到12345端口的连接,其目标IP地址与新接口相对应。假设新接口的IP地址是172.16.1.1,那么IPsec策略将是这样的
{daddr 172.16.1.1 `ulp tcp dport 12345 dir in} drop {}。
IPsec策略是通过ipsec_policy_admin命令添加的,默认的配置文件是>system>stcp>ipsec.conf,但可以指定任何文件。默认的配置文件是 >system>stcp>ipsec.conf,但可以指定任何文件。要做到这一点,模块必须不转发数据包,否则会转发172.16.1.1接口上收到的连接请求到模块的另一个接口。由于目标不是172.16.1.1 IPsec将允许连接。除非你知道实际需要使用转发,否则最好关闭转发功能。你用IP_forwarding命令关闭转发,是的,IP是大写的。
如果没有添加新的接口,而且你的内部用户和你的供应商都将使用同一个接口,你必须根据源地址而不是目标地址来制定策略。如果我们假设供应商的网络是192.168.1.0/24,那么该策略将看起来像是
{saddr 192.168.1.0/24 ulp tcp dport 12345 dir in} drop {}.
当然,这仍然允许供应商网络上的主机连接到模块上的其他服务。你可以限制供应商只使用一个服务,比如说使用以下策略监听端口24680的那个服务
{saddr 192.168.1.0/24 ulp tcp dport 24680 dir in} bypass {}.
{saddr 192.168.1.0/24 ulp tcp dir in} drop{}。
如果文档服务只托管一个部门的文档,你可以设置一个策略,只允许从该部门的子网,例如10.1.1.0/28连接到12345端口,策略如下
{saddr 10.1.1.0/28 ulp tcp dport 12345 dir in} bypass {}.
{saddr 0.0.0.0/0 ulp tcp dport 12345 dir in} drop {}。
策略的顺序很重要,如果你颠倒了顺序,就没有人能够连接到12345端口。
如果你的CIO要求他也能访问这些文件,你可以为CIO的工作站地址添加策略
{saddr 10.1.1.0/28 ulp tcp dport 12345 dir in} bypass {}.
{saddr 10.7.7.7 ulp tcp dport 12345 dir in} bypass {} {saddr 0.0.7.7 ulp tcp dport 12345 dir in}。
{saddr 0.0.0.0/0 ulp tcp dport 12345 dir in} bypass {} {saddr 0.0.0.0/0 ulp tcp dport 12345 dir in} drop {}
当你尝试使用IPsec时,一定要确保你有一个允许你连接的策略,IPsec策略一经添加就会被执行,你不需要重新启动或重启任何东西,所以一个不正确的策略可能会使你与模块断开连接。例如,假设你的工作站的IP地址是10.1.100.50,我总是在我的策略文件中首先放置以下策略
{saddr 10.1.100.50 ulp tcp dir in} bypass {}.