1、FPM(也叫NGACL)

FPM是Cisco IOS新一代的ACL,叫做Flexible Packet Matching,灵活的包匹配。

  • 根据任意条件,无状态的匹配数据包的头部,负载,或者全部。
  • 分析协议,更易于规则的创建。
  • 用于替代传统的ACL,对特定的恶意流量的基础架构过滤。

如下是一个示例:

FPM的限制:

①无状态的,如果是有状态的,那和防火墙也没啥差别了。

②只能匹配IPv4单播包。

③不能去分析报文的IP options 。

④不支持tunnel或者MPLS接口。

⑤一些特殊的网卡FlexWAN Cards也不支持。

⑥非初始化的fragment也不能匹配。

FPM三种匹配流量的方式:

①使用协议头描述文件(Protocol Header Description File,PHDF);

②基于offset(偏移量)和length直接匹配流量;

③以上两种的混合。

比如,如下是ip.phdf的一部分(XML文件):

注意:可能以后配置都是xml or JSON的文件格式了!

2、举例说明FPM功能:

2-1、PHDF文件

我们看一下Router上的PHDF文件:

R1#dir system:/fpm/phdf/?
system:/fpm/phdf/ether.phdf  system:/fpm/phdf/icmp.phdf
system:/fpm/phdf/ip.phdf     system:/fpm/phdf/tcp.phdf
system:/fpm/phdf/udp.phdf

例如我们查看ip.phdf文件:

R1#more system:/fpm/phdf/ip.phdf <<<这会显示出“1”中截图所示信息

2-2、以login invalid为例

R1尝试去Telnet R2,这里故意输错密码,可以看到如下结果:

R1#telnet 12.1.1.2
Trying 12.1.1.2 ... Open

User Access Verification

Username: cisco
Password:
% Login invalid <<<这个信息肯定是在PHDF文件中的一个信息

Username:

对这个过程进行分析:

其中的报文中,主要包含Telnet Data,这里面主要的信息是在建立Telnet远程连接时,输入的username,另一个是password,这里有10个包是包含了cisco这个信息(如果手速够快,多个字符也可能在一个包中)。另一个是错误的密码“123”有三个包。

注意:我们输入用户名cisco能看到,是因为对端回显,而不是我们键盘直接输入在显示器显示的效果,所以,我们这里抓取到了10个报文,而密码123是看不到的,没有回显,所以是3个报文。

后续出现的关键信息:

这里,我们就可以写class-map和policy-map去实现,让这个信息不出现在我们的显示中。还是如之前所说的,关键的参数是“偏移量”(也就是指定一个位置算起,到我们需要匹配的数据的地方,到底有多少个字节),然后是长度有多长字节,匹配的信息是哪些等。

例如这里吧invalid给deny掉:它的偏移量是10个字节(包含\r\n% Login)包括2个字节的空格,也就是在invalid出现之前,有10个字节,而invalid有7个字节(ASCII)。

3、配置操作:

3-1 加载PHDF文件

由于Telnet是TCP的,所以我们加载ip.phdf和tcp.phdf就好了

R1(config)#load protocol system:/fpm/phdf/ip.phdf
R1(config)#load protocol system:/fpm/phdf/tcp.phdf

3-2 配置Class-map

Class-map分为stack(堆栈类,就是匹配所有的TCP流量)和access-control(访问控制器类)

R1(config)#class-map type stack match-all ip-tcp
R1(config-cmap)#match field ip protocol eq 0x6 next tCP  (IP协议号6-TCP;17-UDP;1-ICMP;47-GRE;50-ESP;51-AH)

R1(config)#class-map type access-control match-all DENY-invalid
R1(config-cmap)#match field TCP source-port eq 23
R1(config-cmap)#match field IP length eq 0x47 (这里是IP长度)
R1(config-cmap)#match start TCP payload-start offset 10 size 7 string invalid   (string invalid可以换为正则表达式regex [Ii][Nn][Vv][Aa][Ll][Ii][Dd])

注意,关键是看从哪个头部开始计算,这里是TCP负载开始,如果是IP负载开始,那么offset就是30,如果是L3开始,那就还要加上IP头部,offset就是50。

命令分别如下:

R1(config-cmap)#match start size 7 string invalid

R1(config-cmap)#match start size 7 string invalid

另外,上面IP长度包中显示的是10进制,16进制为47:

3-3 配置Policy-map

Policy-map只是access-control类型的。

R1(config)#policy-map type access-control TCP-Policy
R1(config-pmap)#class DENY-invalid
R1(config-pmap-c)#drop
R1(config-pmap-c)#exit
R1(config-pmap)#exit

R1(config)#policy-map type access-control FPM-POlicy
R1(config-pmap)#class ip-tcp
R1(config-pmap-c)#service-policy TCP-Policy

3-4 在接口调用Policy-map

R1(config)#int f0/0
R1(config-if)#service-policy type access-control input FPM-POlicy

查看匹配情况:

R1#show policy-map type access-control interface f0/0
 FastEthernet0/0

Service-policy access-control input: FPM-POlicy

Class-map: ip-tcp (match-all)
      39 packets, 2579 bytes
      5 minute offered rate 0 bps
      Match: field IP protocol eq 0x6 next TCP

Service-policy access-control : TCP-Policy

Class-map: DENY-invalid (match-all)
          3 packets, 255 bytes
          5 minute offered rate 0 bps
          Match: field TCP source-port eq 23
          Match: field IP length eq 0x47
          Match: start TCP payload-start offset 10 size 7 string "invalid"
      drop

Class-map: class-default (match-any)
          36 packets, 2324 bytes
          5 minute offered rate 0 bps, drop rate 0 bps
          Match: any
          
    Class-map: class-default (match-any)
      0 packets, 0 bytes
      5 minute offered rate 0 bps, drop rate 0 bps
      Match: any

验证,输入了错误的密码后,一直卡在这里

R1#telnet 12.1.1.2
Trying 12.1.1.2 ... Open

User Access Verification

Username: cisco
Password:

在查看一下接口上的信息:

R1#show policy-map type access-control interface f0/0
 FastEthernet0/0

Service-policy access-control input: FPM-POlicy

Class-map: ip-tcp (match-all)
      83 packets, 5648 bytes
      5 minute offered rate 0 bps
      Match: field IP protocol eq 0x6 next TCP

Service-policy access-control : TCP-Policy

Class-map: DENY-invalid (match-all)
          9 packets, 765 bytes
          5 minute offered rate 0 bps
          Match: field TCP source-port eq 23
          Match: field IP length eq 0x47
          Match: start TCP payload-start offset 10 size 7 string "invalid"
      drop

Class-map: class-default (match-any)
          74 packets, 4883 bytes
          5 minute offered rate 0 bps, drop rate 0 bps
          Match: any
          
    Class-map: class-default (match-any)
      0 packets, 0 bytes
      5 minute offered rate 0 bps, drop rate 0 bps
      Match: any

路由器安全-FPM的更多相关文章

  1. win7下利用ftp实现华为路由器的上传和下载

    win7下利用ftp实现华为路由器的上传和下载 1.  Win7下ftp的安装和配置 (1)开始->控制面板->程序->程序和功能->打开或关闭Windows功能 (2)在Wi ...

  2. Angular2学习笔记——路由器模型(Router)

    Angular2以组件化的视角来看待web应用,使用Angular2开发的web应用,就是一棵组件树.组件大致分为两类:一类是如list.table这种通放之四海而皆准的通用组件,一类是专为业务开发的 ...

  3. 提升网速的路由器优化方法(UPnP、QoS、MTU、交换机模式、无线中继)

    在上一篇<为什么房间的 Wi-Fi 信号这么差>中,猫哥从微波炉.相对论.人存原理出发,介绍了影响 Wi-Fi 信号强弱的几大因素,接下来猫哥再给大家介绍几种不用升级带宽套餐也能提升网速的 ...

  4. 树莓派 连接wifi与路由器ip绑定

    先推荐几个手机软件 在酷安网里应该能找到 1.JuiceSSH  橘子ssh软件  手机连上路由器 就可以控制局域网内的树莓派 2.VNC Viewer  远程桌面软件VNC 也是连接局域网的树莓派 ...

  5. 中大东校小米路由器mini实现inode上网,ipv6 wifi【中大】【东校】【inode】【ipv6】

    还有不到4个月就要毕业了,前几天半夜没事捣鼓小米路由没想到竟然实现了wifi的ipv6. 正好又安利了同学一台小米路由mini,从刷机到inode到ipv6全搞了一遍. 这里将教程写出来,服务学弟妹. ...

  6. hub,桥,交换机,路由器的区别

    1.四种设备在网络中的物理位置 如下图 2.这四种设备的本质 这四种设备,不管怎样,他们都是进行包的转发,只不过转发的行为有些不一样而已 3.逐一介绍 对于hub,一个包过来后,直接将包转发到其他口. ...

  7. 智能路由器操作系统OpenWrt

    小米路由器的“MiWiFi”又让路由器成了关键词,每台智能路由器的系统是该款产品的亮点之一,其系统肯定有不少“好玩”的地方.为自己的智能路由器量身打造系统,并且纷纷开发了适合智能手机.平板电脑等使用的 ...

  8. 开发OpenWrt路由器上LuCI的模块

    [题外话] 学校里最近改造了校园网,要求必须用iNode验证,万幸的是路由器能刷OpenWrt,并且OpenWrt上有好多iNode认证的开源项目,比如njit8021xclient(以下简称njit ...

  9. CentOS 6编译安装lamp,并分别安装event模块方式和FPM方式的PHP

    任务目标: 编译安装LAMP 要求(1) 安装一个模块化的PHP 要求(2) 安装一个FPM的PHP 注意PHP需要最后一个安装,因为需要前两者的支持. 所以这里的安装次序为 1.httpd 2.Ma ...

随机推荐

  1. D. Mahmoud and Ehab and another array construction task 因子分界模板+贪心+数学

    D. Mahmoud and Ehab and another array construction task 因子分解模板 题意 给出一个原序列a 找出一个字典序大于a的序列b,使得任意 \(i!= ...

  2. (c#)最小绝对差

    题目 解

  3. nmon +java nmon Alalizy agent 动态交互监控

    下载地址:1. Download and install nmon. - for linux platform, you can download form: http://nmon.sourcefo ...

  4. codeforce 427 C. Checkposts(tarjan 强连通分量)

    题目链接:http://codeforces.com/contest/427/problem/C 题目大意是有n个junctions,这些junctions之间有m条道路,两两相连,现在在juncti ...

  5. unidac 断线重连

    unidac 断线重连 因为物理网络断连或数据库超时踢掉连接等原因,Tuniconnection建立的连接可能会断掉. 在默认状态下,程序会抛出异常框,并罢工. 其实Tuniconnection是可以 ...

  6. python接口自动化测试 - requests库的post请求进行文件上传

    前言 如果需要发送文件到服务器,比如上传图片.视频等,就需要发送二进制数据. 一般上传文件使用的都是 Content-Type: multipart/form-data; 数据类型,可以发送文件,也可 ...

  7. css之变形(transform)

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. Python偶斐波那契数

    斐波那契数列中的每一项都是前两项的和.由1和2开始生成的斐波那契数列前10项为 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, … 考虑该斐波那契数列中不超过四百万的项,求其中为 ...

  9. IntelliJ IDEA 2017.3尚硅谷-----修改类头的文档注释信息

    /** @author shkstart @create ${YEAR}-${MONTH}-${DAY} ${TIME} */ ${PACKAGE_NAME} - the name of the ta ...

  10. Permission denied 解决办法

    Permission denied 解决的办法: $ sudo chmod -R 777 某一目录 其中-R 是指级联应用到目录里的所有子目录和文件777 是所有用户都拥有最高权限