入站过滤/策略过滤

概述

本文档中说明 RTX820、RTX1200 和 RTX800中搭载的过滤功能。过滤功能分为两大类,即入站过滤策略过滤入站过滤用于在接收到不需要的数据包时、早期进行抛弃。策略过滤实现了全状态检测方式的过滤,提供以连接为单位进行访问控制的手段。

下图表示这两种过滤的定位。

过滤处理的定位

首先,用非法访问检测功能(IDS)检查接收到的数据包,检测出IP头及TCP头等的异常。抛弃异常的数据包。

接下来用入站过滤进行处理。在这里,查看数据包的IP地址、协议、端口号码,决定通过或者抛弃。希望将不需要处理的数据包尽量在这里抛弃掉。并且,有NAT接收端的处理,继续路由控制的处理。

之后,继续策略过滤的处理和NAT发送端的处理,最后向各接口发送数据包。

入站过滤

功能说明

为了尽早地抛弃接收到的数据包而使用入站过滤。入站过滤中,作为指定数据包的条件,可以设置以下项目。

  • 起始地址
  • 结束地址
  • 协议
  • 起始端口号码
  • 结束端口号码

入站过滤可在各个接口进行设置。通常,WAN的接口和LAN的接口中,希望抛弃的数据包不一样,因此设置内容也不同。每个接口最多可设置128个条件。

下图为设置范例。从上往下查看条件,寻找与接收数据包符合的条件。如果存在符合的条件,则根据右边的动作栏决定通过还是抛弃。没有符合的条件时,数据包不通过。但是,原来入站过滤完全未设置时,规格是数据包通过

入站过滤的设置范例

用syslog notice命令设为on时,能够将入站过滤的动作保留在Syslog中。Syslog的格式如下:

  • 接口Passed/Rejected at Inbound Filter(过滤号码)协议数据包的信息

命令

入站过滤的定义

[格式]
ip/ipv6 inbound filter ID ACTION SRC_ADDRESS[/MASK] [DST_ADDRESS[/MASK][PROTOCOL [SRC_PORT [DST_PORT]]]]
no ip/ipv6 inbound filter ID [ACTION [SRC_ADDRESS[/MASK][DST_ADDRESS[/MASK] [PROTOCOL [SRC_PORT [DST_PORT]]]]]]
[设置值]
  • ID ...过滤的标识符 (1..65535)
  • ACTION ...动作
    • pass-log ... 通过,记录日志
    • pass-nolog ... 通过,不记录日志
    • reject-log ... 拦截,记录日志
    • reject-nolog ... 拦截,不记录日志
  • SRC_ADDRESS ...起始地址
    • XXX.XXX.XXX.XXX (XXX为10进制)
    • * (全部的IP地址)
    • 中间隔着-的2个上项目、前面带-的上项目、后面带-的上项目。这些指定范围。
  • DST_ADDRESS ...结束地址
    • 与SRC_ADDRESS相同的格式
    • 省略时同1个*。
  • MASK ...IP地址的位图 (SRC_ADDRESS以及DST_ADDRESS仅在网络地址时可指定)
    • XXX.XXX.XXX.XXX (XXX为10进制)
    • 接在0x后面的16进制
    • 屏蔽位数
    • 省略时同0xffffffff
  • PROTOCOL ...协议
    • 表示协议的10进制 (0..255)
    • 标示协议的助记符
      助记符 10进制 说明
      icmp 1 icmp数据包
      icmp-error - 特定TYPE码的icmp数据包
      icmp-info - 特定TYPE码的icmp数据包
      tcp 6 tcp数据包
      tcpsyn - 竖有SYN标记的tcp数据包
      tcpfin - 竖有FIN标记的tcp数据包
      tcprst - 竖有RST标记的tcp数据包
      established - 竖有ACK标记的tcp数据包
      允许由内向外的连接,但拒绝由外向内的连接的功能
      udp 17 udp数据包
      gre 47 PPTP的gre数据包
      esp 50 IPsec的esp数据包
      ah 51 IPsec的ah数据包
    • 用上项目的逗点隔开排列 (5个以内)
    • tcpflag=flag_value/flag_mask或者 tcpflag!=flag_value/flag_mask
      flag_value(接在0x后面的16进制 0x0000 .. 0xffff)
      flag_mask(接在0x后面的16进制 0x0000 .. 0xffff)
    • * (全部的协议)
    • 省略时同*。
  • SRC_PORT ...源端口号码
    • 表示端口号码的10进制
    • 表示端口号码的助记符(部分)
      助记符 端口号码
      ftp 20,21
      ftpdata 20
      telnet 23
      smtp 25
      domain 53
      gopher 70
      finger 79
      www 80
      pop3 110
      sunrpc 111
      ident 113
      ntp 123
      nntp 119
      snmp 161
      syslog 514
      printer 515
      talk 517
      route 520
      uucp 540
    • 中间隔着-的2个上项目、前面带-的上项目后面带-的上项目。这些指定范围。
    • 用上项目的逗点隔开排列 (10个以内)
    • * (全部的端口)
    • 省略时同*。
  • DST_PORT ...目的地端口号码
    • 格式与SRC_PORT相同。
[说明]
  • 定义希望在接口入口决定抛弃或者通过的数据包的条件。这个命令的设置通过 ip INTERFACE inbound filter命令查看。

入站过滤的适用

[格式]
ip/ipv6 INTERFACE inbound filter list ID ...
no ip/ipv6 INTERFACE inbound filter list [ ID ... ]
[设置值]
  • INTERFACE ...接口
  • ID ...用ip inbound filter命令定义的过滤标识
[说明]

组合ip inbound filter命令进行的设置,限制接口中接收的数据包的种类。
指定多个ID时,根据从先到后指定的顺序评价是否符合相应ip inbound filter命令的条件。

入站过滤的状态显示

[格式]
show status ip/ipv6 inbound filter [TYPE]
[设置值]
  • TYPE ...显示的种类
    • summary ... 只显示摘要
[说明]

显示入站过滤的状态。

入站过滤的状态的清除

[格式]
clear ip/ipv6 inbound filter [ INTERFACE [ID] ]
[设置值]
  • INTERFACE ...接口
    • LAN接口 (lan1、lan2等)
    • PP接口 (pp 1、pp 2等) ※‘pp’和号码之间要有空格
    • TUNNEL接口 (tunnel 1、tunnel 2等) ※‘tunnel’和号码之间要有空格
  • ID ...过滤的标识符 (1 .. 65535)
[说明]
  • 清除指定入站过滤相关的日志等信息。 未指定接口或ID时,对象为所有的接口或ID。

策略过滤

策略

策略过滤相当于原来的固件的动态过滤,实现了全状态检测方式的过滤。也就是说,可以不是以数据包的单位、而是以连接的单位指定通过和抛弃。例如能够进行如下控制:“通过SMTP的连接”、“抛弃TELNET的连接”等。

指定连接需要设置以下项目。

  • 接收接口
  • 发送接口
  • 起始地址
  • 结束地址
  • 服务

服务在大多数情况下支持应用程序,例如获取TELNET、SMTP、POP、FTP、WWW等的值。

动作可以设置通过和抛弃的其中之一。例如,下图示例中定义了以下两个规则:

  • 抛弃从LAN2穿过LAN1的TELNET
  • 允许从LAN1穿过LAN2的ping

雅马哈路由器中,像这样组合了条件和动作的规则称为策略

策略过滤的设置范例

策略的优先级是写在越上面越高,策略将由上而下被依次评价。不属于任何一个策略的连接将被抛弃,不通过。但是,原本完全未设置策略时,数据包通过。可以设置的策略的最大数为128。

策略的动作有以下四种。

动作 图标 说明
pass pass 通过数据包。关于TCP和UDP和ping,以全状态检测方式通过,除此以外的数据包直接通过。
static-pass static-pass 不使用全状态检测方式、通过数据包。
reject reject 抛弃数据包。
restrict restrict 要发送数据包的接口已经上升(up)、成为能够发送数据包的状态即可通过,否则抛弃数据包。通过数据包时,TCP、UDP及ping以全状态检测方式通过,除此以外的数据包直接通过。

显示接口或地址或服务时,能够使用这个概念。组用于集中处理多个值,例如,下图中,汇集了多个接口,创建了名为“Private”“Global”的组。

接口组的范例

下图中,使用组定义了策略。使用组后,设置变更变得更为简单。

使用组的策略的范例

组有接口组、地址组和服务组这3种。任何一个组中最多可定义29个组的成员。也能够分层次定义组,但是层次最多为2层。例如,组1中包含组2时,组2中就不能包含组。并且,不同种类的组不能混在一起,如地址组中包含服务组等。

策略集

将策略依次排列的东西成为策略集。雅马哈路由器中能够定义多个策略集,选择其中的一个进行使用。例如,使用方法为平时使用名为“通常设置”的策略集,发生某种问题后,切换到名为“紧急设置”的策略集。GUI中最多可定义三个策略集。

策略的分层

也能够将策略分层排列。这在锁定条件添加例外的策略时非常方便。例如,下图的范例中,第一行允许WWW的访问,但是,在第二行添加了其例外条件。也就是即使为WWW,如果起始地址为172.16.0.1就拒绝的意思。

分层策略的范例

分层次写策略时,下位策略继承上位策略的条件。也就是说,下位策略的条件将锁定上位策略的条件。

策略的层次最多能够定义四层。

策略集的自动切换

能够事先定义多个策略集,以特定的现象为契机,自动切换策略集。可以指定为契机的现象有下述三个。

  • winny ... 通过非法访问检测功能检测到Winny时
  • ethernet-filter ... 以太网过滤中IP数据包被抛弃时
  • qos-class-control ...DCC(Dynamic Class Control)中检测到带宽的占用时

出现这些现象时,自动切换策略集。并且,当现象消失后,自动返回原来的策略集。详细内容请参照ip policy filter set switch命令的规格。

确认动作的方法

用syslog notice命令设为on时,将策略过滤的动作输出至Syslog。首先,切换了策略集时,输出如下的Syslog。

  • Enabled Policy Set(策略集的号码)

出现不符合策略的连接或数据包时,输出如下Syslog。

  • Passed/Rejected/Restricted at Policy Filter(策略号码):协议 数据包的信息

GUI中,收到符合策略条件的数据包时,表示动作的图标将动画显示。并且,每个策略都有显示日志的图标。点击这个图标即会显示这一行的策略相关的日志。日志累积过去的1000条。

关于策略集的切换,输出如下Syslog。

  • Received the trigger to switch Policy Set(策略集的号码) after downwait的设置值 seconds
    第一次发生切换触发器的现象时输出。
  • There's no more reason to use Policy Set(策略集的号码)
    返回原来的策略集时输出。
  • Enabled Policy Set(策略集的号码)
    切换策略集的时刻输出。

命令

服务的定义

[格式]
ip/ipv6 policy service ID SERVICE_NAME PROTOCOL[SOURCE_PORT DESTINATION_PORT ]
no ip/ipv6 policy service ID [ SERVICE_NAME [ PROTOCOL[SOURCE_PORT DESTINATION_PORT ] ] ]
[设置值]
  • ID ...服务的标识符 (1 .. 65535)
  • SERVICE_NAME ...服务的名称 (最多16个字符)
  • PROTOCOL ...协议
  • SOURCE_PORT ...起始端口号码 (仅在协议为TCP/UDP时能够指定)
    • * ... 全部
    • 号码 (0 .. 65535)
    • 号码的范围 (例: 6000-、6000-6010、-6010)
  • DESTINATION_PORT ...结束端口号码 (仅在协议为TCP/UDP时能够指定)
    • 格式与SOURCE_PORT相同。
[说明]

定义服务。用这个命令定义的服务能够用 ip/ipv6 policy filter命令或 ip/ipv6 policy service group命令进行指定。

[注解]

SERVICE_NAME不能设置整数。

[初始值]

未设置

接口组的定义

[格式]
ip/ipv6 policy interface group ID [name=NAME] [INTERFACE ...][group GROUP_ID ... ]
no ip/ipv6 policy interface group ID [name=NAME] [INTERFACE ...][group GROUP_ID ... ]
[设置值]
  • ID ...接口组的标识符 (1 .. 65535)
  • NAME ...名称(半角32个字符以内)
  • INTERFACE ...接口
    • * ... 全部
    • lan* ... 全部的LAN接口
    • pp* ... 全部的PP接口
    • tunnel* ... 全部的TUNNEL接口
    • local ... 路由器自身
    • lanN-lanM ... LAN接口的范围 (例: lan1-lan3)
    • ppN-ppM ... PP接口的范围 (例: pp1-pp30)
    • tunnelN-tunnelM ... TUNNEL接口的范围 (例: tunnel1-tunnel10)
  • GROUP_ID ...用其他的ip/ipv6 policy interface group命令定义的 接口组的标识符 (1 .. 65535)
[说明]

定义接口的组。 能够通过在group关键字后面记述GROUP_ID,将其他的接口组设为嵌套。 这里定义的组能够用ip/ipv6 policy filter命令进行指定。

地址组的定义

[格式]
ip/ipv6 policy address group ID [name=NAME] [ADDRESS ...][group GROUP_ID ... ]
no ip/ipv6 policy address group ID [name=NAME] [ADDRESS ...][group GROUP_ID ... ]
[设置值]
  • ID ...地址组的标识符 (1 .. 65535)
  • NAME ...名称(半角32个字符以内)
  • ADDRESS ...地址
    • * ... 全部
    • IP地址 ... 单个IP地址
    • IP地址/网络屏蔽长度 ... 单个网络
    • IP地址-IP地址 ... IP地址的范围
  • GROUP_ID ...用其他的ip policy address group命令定义的地址组的标识符 (1 .. 65535)
[说明]

定义地址的组。 能够通过在group关键字后面记述GROUP_ID,将其他的接口组设为嵌套。 用这个命令定义的组能够用 ip/ipv6 policy filter命令进行指定。

服务组的定义

[格式]
ip/ipv6 policy service group ID [name=NAME] [SERVICE ...][group GROUP_ID ... ]
no ip/ipv6 policy service group ID [name=NAME] [SERVICE ...][group GROUP_ID ... ]
[设置值]
  • ID ...服务组的标识符 (1 .. 65535)
  • NAME ...名称(半角32个字符以内)
  • SERVICE ...服务
    • * ... 全部
    • 已定义服务 ... http、ftp、dns等
    • 用户定义服务 ... 用ip policy service命令定义的名称
    • 协议和端口号码 ... tcp/80、udp/500等
  • GROUP_ID ...用其他的ip policy service group命令定义的服务组的标识符 (1 .. 65535)
[说明]

定义服务的组。 能够通过在group关键字后面记述GROUP_ID,将其他的服务组设为嵌套。 用这个命令定义的组能够用 ip/ipv6 policy filter命令进行指定。

策略过滤的定义

[格式]
ip/ipv6 policy filter ID ACTION SOURCE_INTERFACE[ DEST_INTERFACE [ SOURCE_ADDRESS [ DEST_ADDRESS [ SERVICE ]]]]
no ip/ipv6 policy filter ID [ ACTION [ SOURCE_INTERFACE[ DEST_INTERFACE [ SOURCE_ADDRESS [ DEST_ADDRESS [ SERVICE ]]]]]]
[设置值]
  • ID ...策略过滤的标识符 (1 .. 65535)
  • ACTION ...动作
    • pass-log ... 通过,记录至日志
    • pass-nolog ... 通过,不记录至日志
    • reject-log ... 抛弃,记录至日志
    • reject-nolog ... 抛弃,不记录至日志
    • restrict-log ... 仅在线路已连接时通过,记录至日志
    • restrict-nolog ... 仅在线路已连接时通过,不记录至日志
    • static-pass-log ...不使用Stateful Inspection的状态下通过,记录至日志
    • static-pass-nolog ...不使用Stateful Inspection的状态下通过,不记录至日志
  • SOURCE_INTERFACE ...起始接口
    • * ... 全部
    • lan* ... 全部的LAN接口
    • pp* ... 全部的PP接口
    • tunnel* ... 全部的TUNNEL接口
    • local ... 路由器自身
    • lanN-lanM ... LAN接口的范围 (例: lan1-lan3)
    • ppN-ppM ... PP接口的范围 (例: pp1-pp30)
    • tunnelN-tunnelM ... TUNNEL接口的范围 (例: tunnel1-tunnel10)
    • 组号码 ... ip policy interface group命令定义的号码
  • DEST_INTERFACE ...结束接口
    • 格式与起始接口相同
  • SOURCE_ADDRESS ...起始地址
    • * ... 全部
    • IP地址 ... 单个IP地址
    • IP地址/网络屏蔽长度 ... 单个网络
    • IP地址-IP地址 ... IP地址的范围
    • 组号码 ... 用ip policy address group命令定义的号码
  • DEST_ADDRESS ...结束地址
    • 格式与起始地址相同
  • SERVICE ...服务
    • * ... 全部
    • 已定义服务 ... http、ftp、dns等
    • 用户定义服务 ... 用ip policy service命令定义的名称
    • 协议和端口号码 ... tcp/80、udp/500等
    • 组号码 ... 用ip policy service group命令定义的号码
[说明]

定义策略过滤。 省略参数时,作为指定了“*”进行处理。
接口不能定义anonymous接口。
并且,必须设置这个命令的定义ip/ipv6 policy filter set命令或ip/ipv6 policy filter set enable命令方会生效。

[设置范例]

允许LAN1的PC访问LAN2的Web服务器。
# ip policy filter 1 pass-log lan1 lan2 * * http

[初始值]

未设置

策略集的定义

[格式]
ip/ipv6 policy filter set ID [name=NAME] FILTER_SET ...
no ip/ipv6 policy filter set ID [name=NAME] FILTER_SET ...
[设置值]
  • ID ...策略集的标识符 (1 .. 65535)
  • NAME ...名称(半角32个字符以内)
  • FILTER_SET ...用空白隔开的策略号码的排列 (最多128个)
    能够通过“[」或「]”符号表示层次结构
[说明]

定义策略集。每次发生新的连接时,从前向后依次评价是否一致。如果是分层结构,从上位的策略过滤开始依次评价,采用较深层次的策略过滤。
用“[」和「]”」的符号表示层次。 “[”的意思为向下一层移动,“]”的意思为向上一层移动。“[”记述在号码的前面,“]”记述在号码后面。
通过策略过滤的号码的后面添加“-”,能够使该策略过滤无效。
并且,相同的策略过滤不可重复设置。

[初始值]

未设置

[注解]
  • 层次结构的记述范例(三层的范例):
        1 [2 3[4 5] 6] 7
    
                |
                +--(1)
                |   |
                |   +--(2)
                |   |
                |   +--(3)
                |   |   |
                |   |   +--(4)
                |   |   |
                |   |   +--(5)
                |   |
                |   +--(6)
                |
                +--(7)
    

策略集的选择

[格式]
ip/ipv6 policy filter set enable ID
no ip/ipv6 policy filter set enable [ ID ]
[设置值]
  • ID ...策略集的标识符 (1 .. 65535)
[说明]

指定策略集。 只有用这个命令指定的策略集才会实际生效。 同时有效的策略集只有一个。

[初始值]

未设置

策略集的自动切换

[格式]
ip/ipv6 policy filter set switch ORIGINAL BACKUP trigger TRIGGER ...[count=COUNT] [interval=INTERVAL] [recovery-time=TIME]
no ip/ipv6 policy filter set switch ORIGINAL BACKUP[trigger TRIGGER ... [count=COUNT] [interval=INTERVAL] [recovery-time=TIME]]
[设置值]
  • ORIGINAL ...切换前的策略集的号码 (1 .. 65535)
  • BACKUP ...切换后的策略集的号码 (1 .. 65535)
  • TRIGGER ...切换的触发器
    • winny ... 通过非法访问检测功能检测到Winny时
    • ethernet-filter ... 以太网过滤中IP数据包被抛弃时
    • qos-class-control ... 通过DCC(Dynamic Class Control)检测到带宽占用时
  • COUNT ...至切换策略集为止接收的触发器的次数。 INTERVAL中设置的时间内接收到用COUNT设置的个数的触发器后切换策略集。
    • 1 .. 10
  • INTERVAL ...测量触发器发生次数的时间。INTERVAL中设置的时间内收到用COUNT设置德个数的触发器后切换策略集。
    • 秒数 (2 .. 600)
  • TIME ...触发器的现象最后一次发生开始至返回原来的策略集的犹豫时间
    • 秒数 (60 .. 604800)
    • infinity ... 不返回原来的策略集
[说明]

以TRIGGER参数中指定的现象为契机,自动切换策略集。
ORIGINAL・BACKUP参数中指定ip policy filter set命令定义的策略集的识别号码。
能够根据现象改变切换的策略集。 为此,只要如下设置多个命令即可。

  • ip policy filter set switch 1 2 triger winny
  • ip policy filter set switch 1 3 triger ethernet-filter
  • ip policy filter set switch 1 4 triger qos-class-control

发生现象时的切换时机能够通过COUNT和INTERVAL的组合进行指定。 INTERVAL中指定的时间内、发生了COUNT指定次数的现象后,切换策略集。COUNT为1时,第一次发生现象时就立即切换策略集,因此,INTERVAL的设置就没有意义。
自现象消失至返回原来的策略集的时间能够通过TIME指定。TIME指定为infinity时,不会返回原来的策略集。这时,可以通过执行ip policy filter set enable命令返回原来的策略集。
如果在切换过程中更改ip policy filter set命令或ip policy filter set enable命令的设置,切换相关的动作就会中断,返回到切换前的状态。
并且,不可在ORIGINAL和BACKUP中指定相同的策略集。 另外,通过ORIGINAL・BACKUP参数指定的策略集未被定义时,策略集不会切换。

[初始值]
  • COUNT ... 1[次]
  • INTERVAL ... 5[秒]
  • TIME ... 3600[秒]
[设置范例]
  • 以winny的检测和以太网过滤的数据包抛弃为契机,将策略集从1切换至2。
ip policy filter set 1 name="main" 101 102 103 104 105 106
ip policy filter set 2 name="backup" 201 202 203 204 205 206
ip policy filter set switch 1 2 trigger winny ethernet-filter

定时器的设置

[格式]
ip policy filter timer [OPTION=TIMEOUT ... ]
no ip policy filter timer
[设置值]
  • OPTION ...选项名称
    • tcp-syn-timeout ...从收到SYN起、在所设置的时间内 如果没有数据流动,则切断会话
    • tcp-fin-timeout ...从收到FIN起、经过所设置的时间后, 强行释放会话。
    • tcp-idle-time ...如果在所设置的时间内没有TCP会话的数据流动, 则切断会话
    • udp-idle-time ...果在所设置的时间内没有UDP会话的数据流动, 则切断会话
    • dns-timeout ...从收到DNS的query起、在所设置的时间内 如果没有数据流动,则切断会话
    • icmp-timeout ...如果在所设置的时间内没有ICMP会话的数据流动, 则切断会话 (适用于ping)
  • TIMEOUT ...超时时间(秒)
[说明]

设置策略过滤中使用的定时器的值。 这个命令的设置为IPv4和IPv6通用。

[初始值]
  • tcp-syn-timeout=30
  • tcp-fin-timeout=5
  • tcp-idle-time=3600
  • udp-idle-time=30
  • dns-timeout=5
  • icmp-timeout=10

策略过滤的状态显示

[格式]
show status ip/ipv6 policy filter [ID [TYPE]]
[设置值]
  • ID ...显示对象过滤的标识符(1..65535)
    ※省略时显示所有的过滤
  • TYPE ...显示的格式
    • connection ... 显示与指定的过滤有关的连接信息
[说明]

显示策略过滤的状态。

策略过滤的状态的清除

[格式]
clear ip/ipv6 policy filter [ ID ]
[设置值]
  • ID ...过滤的标识符 (1 .. 65535)
[说明]

清除指定的策略过滤相关的日志等信息。 不指定ID时,对象为所有的策略过滤。

返回顶部Return to Top