当人们想到IPsec时,首先联想到的是数据加密功能,但它同样能用于丢弃数据包或允许数据包通过而不进行加密。这种操作可基于数据包的源地址、目标地址及端口号来实现——这恰恰是防火墙的核心功能。因此,您完全可以将VOS的IPsec特性作为防火墙使用。
例如,假设您有一个内部文档服务应用程序监听*.12345端口,即监听12345端口并接受来自模块上任何接口的连接。该模块刚新增了一个连接供应商网络的接口。 该网络中的任何节点都不应连接文档服务。理想情况下,模块与供应商网络之间应部署防火墙阻断12345端口。但"深度防御"原则指出:网络防火墙与主机防火墙的双重防护,比仅依赖网络防火墙更为有效。
配置IPsec以丢弃来自供应商网络的连接有多种方法。 最简便的方法是拦截所有目标IP地址对应新接口的12345端口连接。假设新接口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,但可指定任意文件。为确保正常工作,模块必须处于非转发状态,否则发往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)也需要访问这些文档,可为其工作站地址添加策略:
{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.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 {}
