向 Vyatta 5400 添加防火墙功能(无状态和有状态)
在使用 Brocade 5400 vRouter (Vyatta) 设备时,将防火墙规则集应用到每个接口是一种防火墙方法。 每个接口有三个可能的防火墙实例(In、Out 和 Local),每个实例可应用相应的规则。 默认操作是“丢弃”,允许特定流量的规则以规则 1 到 N 的方式应用。 一旦匹配成功,防火墙就会执行匹配规则的特定操作。
对于以下任何防火墙实例,只能应用一个。
- IN- 防火墙过滤进入接口并穿越 Brocade 系统的数据包。 您必须允许某些 SoftLayer IP 范围访问前端和后端进行管理(ping、监控等)。
- OUT- 防火墙过滤离开接口的数据包。 这些包可以遍历 Brocade 系统或以该系统为源。
- LOCAL- 防火墙过滤通过系统接口发送到 Brocade vRouter 系统的数据包。 您应该对从不受限制的外部 IP 地址进入 Brocade vRouter 设备的访问端口建立限制。
请按照以下步骤设置防火墙规则示例,以关闭 Brocade 5400 vRouter's接口上的 Internet 控制消息协议 (ICMP) (ping - IPv4 echo 回复消息)(这是一个无状态操作;有状态操作将在后面讨论):
-
在命令提示符中输入 show configuration commands 以查看设置了哪些配置。 您将看到在设备上设置的所有命令的列表(如果您决定迁移并希望查看所有配置,这将非常方便)。 请注意命令 set firewall all-ping 'enable',这表明设备仍启用了 ICMP。
-
输入 configure。
-
输入 set firewall all-ping 'disable'。
-
输入 commit。
如果现在尝试 ping Brocade 5400 vRouter 设备,则不会收到任何响应。
要为路由流量指定防火墙规则,必须将规则应用到 Brocade 5400 vRouter's 接口或 创建区域,然后应用到区域。
在本例中,将为迄今为止使用过的 VLAN 创建区域。
bond1 = dmz
bond1.2007 = prod(用于生产环境)
bond0.2254 = private(用于开发环境)
bond1.1280 = 保留以供未来使用
bond1.1894 = 保留以供未来使用
创建防火墙规则
在创建防区之前,最好先创建应用于防区的防火墙规则。 先创建规则再创建区域,可以立即应用这些规则,而先创建区域再创建规则,必须返回到区域才可应用规则。
**注:**区域和规则集都有缺省操作语句。 使用区域策略时,缺省操作由 zone-policy 语句设置,并由规则 10,000 表示。 同样重要的是要记住,防火墙规则集的默认操作是 删除所有流量。
下列命令:
- 创建名为 dmz2private 的防火墙规则,其缺省操作为丢弃所有包。
- 针对名为 dmz2private 的规则,启用已接受和已拒绝流量的日志记录。
-
在命令提示符中输入 configure。
-
在提示符中输入以下命令:
- set firewall name dmz2private default-action drop
- set firewall name dmz2private enable-default-log
下一组命令用于使 iptables 允许返回已建立会话的流量。 缺省情况下,iptables 不允许这样做,这就是为什么需要显式规则的原因。
- set firewall name dmz2private rule 1 action accept
- set firewall name dmz2private rule 1 state established enable
- set firewall name dmz2private rule 1 state related enable
第三组命令允许 TCP/UDP 流经端口 22(用于 SSH 的缺省端口)。
- set firewall name dmz2private rule 2 action accept
- set firewall name dmz2private rule 2 protocol tcp_udp
- set firewall name dmz2private rule 2 destination port 22
最后一组命令允许 TCP/UDP 流经端口 80(用于 HTTP 的缺省端口)。
- set firewall name dmz2private rule 3 action accept
- set firewall name dmz2private rule 3 protocol tcp_udp
- set firewall name dmz2private rule 3 destination port 80
-
键入 commit,以确保在完成后执行所有规则。
-
通过在命令提示符中输入 show firewall name dmz2private 以查看配置。
下一条防火墙规则将应用于 dmz 区域。 该规则名为 公共。 输入以下命令:
- set firewall name public default-action drop
- set firewall name public enable-default-log
- set firewall name public rule 1 action accept
- set firewall name public rule 1 state established enable
- set firewall name public rule 1 state related enable
防火墙规则需要通过 prod 出站流至 dmz。 使用以下命令来帮助对网络流进行故障诊断:sudo tcpdump -i any host 10.52.69.202。
创建区域
区域是接口的逻辑表示。 下列命令:
- 创建一个区域和一个名为 dmz 的策略,默认操作是丢弃以该区域为目的地的数据包。
- 将 dmz 策略设置为使用 bond1 接口。
- 将 prod 策略设置为使用 bond1.2007 接口。
- 创建一个名为 private 的区域策略,其默认操作是丢弃以该区域为目标的数据包。
- 将名为 private 的策略设置为使用 bond0.2254 接口。
-
在提示符中输入以下命令:
- 配置
- set zone policy zone dmz default-action drop
- set zone-policy zone dmz interface bond1
- set zone-policy zone prod default-action drop
- set zone-policy zone prod interface bond1.2007
- set zone-policy zone private default-action drop
- set zone-policy zone private interface bond0.2254
-
使用以下命令为区域设置防火墙策略:
- set zone-policy zone private from dmz firewall name dmz2private
- set zone-policy zone prod from dmz firewall name dmz2private
- set zone-policy zone dmz from prod firewall name public4
- commit
请注意,如果不想将某个防火墙规则应用于区域策略,那么可以将其应用于特定接口。 使用以下命令将规则应用到接口。
- set interfaces bonding bond1 firewall local name public
- commit
有状态防火墙
有状态防火墙会保存一份以前查看过的流量表,可以根据数据包与以前数据包的关系接受或丢弃数据包。 一般来说,在应用流量较多的地方,有状态防火墙是首选。
Brocade 5400 vRouter 默认配置不跟踪连接状态。 在满足以下条件之一之前,防火墙是无状态的:
- 配置防火墙和具有状态参数的任一规则
- 配置防火墙 state-policy
- 配置 NAT
- 启用透明 Web 代理服务
- 启用 WAN 负载均衡配置
无状态防火墙
无状态防火墙孤立地考虑每个数据包。 数据包只能根据基本的访问控制列表 (ACL) 标准(如 IP 或传输控制协议/用户数据报协议 (TCP/UDP) 标头中的源字段和目标字段)被接受或丢弃。 无状态 Brocade 5400 vRouter 不存储连接信息,也不需要查找每个数据包与之前数据流的关系,这两方面都会消耗少量内存和 CPU 时间。 因此,无状态系统的原始转发性能最好。 如果不需要特定于有状态的功能,Brocade 建议使路由器保持无状态,以获得最佳性能。