专注做网管的电脑公司
  • 微信公众号
  • 联系我们
  • 客服热线:13726442969
  • MikroTik RouterOS防火墙与过滤详解

    2019-05-28 15:58:03 2019

    MikroTik RouterOS能对包状态过滤;P2P协议过滤;源和目标NAT;对源MAC、IP地址、端口、IP协议、协议(ICMP、TCP、MSS等)、接口、对内部的数据包和连接作标记、ToS 字节、内容过滤、顺序优先与数据频繁和时间控制、包长度控制...

    下面是RouterOS对IP流的处理流程:

    clip_image001

    RouterOS防火墙类型

    MikroTik RouterOS具备强大的防火墙,根据不同的环境和类别我们可以把RouterOS的分未如下几个类型:

    从网络层上分类:分为二层过滤防火墙和三层与三层以上过滤防火墙,他们分别在bridge filter和ip firewall filter下进行操作,能对各层的数据进行处理。

    clip_image002

    从数据传输上分类:分为input、foreward和output三种链表(chain)过滤,不管是二层或者三层过滤上都包含这三个链表。

    clip_image003

    同时RouterOS还支持自定义防火墙链表。如下面的virus病毒链表。我们可以通过jump命令将数据跳转到指定的链表。

    clip_image004

    上面的图片是显示了几个自定义链表,除了我们在右上角,下拉菜单看到的input、forward、output基本链表外(all、dynamic、static是系统状态链表),可以看到自定义的Robotdog、ICMP、virus这三个链表。

    RouterOS IP firewall filter工作原理

    下面是三条预先设置好了的chains,他们是不被能删除的:

    input – 用于处理进入路由器的数据包,即数据包目标IP地址是到达路由器一个接口的IP地址,经过路由器的数据包不会在input-chains处理。
    forward – 用于处理通过路由器的数据包
    output – 用于处理源于路由器并从其中一个接口出去的数据包。
    当处理一个chain(数据链),策略是从chain列表的顶部从上而下执行的。即先进先出法(First In First Out)如图:

    clip_image005

    我们通过先进先出法可以理解到,过滤数据时我们可以通过以下的两种原则“先丢弃后接受和先接受后丢弃”:

    clip_image006

    现在我来看事例中的防火墙规则,我先从input链表开始,这里是对所有访问路由的数据进行过滤和处理:

    clip_image007

    从input链表中可以看到,我们对进入路由器的数据采用先拒绝非法的数据和连接,并将ICMP数据跳转到自定义的ICMP的链表中过滤。

    下面是forward链表一个应用防火墙事例:

    clip_image008

    forward链表,我们首先拒绝大多数机器狗访问的目标地址,然后跳转到机器狗链表中对相应的域名和IP进行过滤,接下来是对非法数据包、TCP连接数、非单播数据、ICMP协议和常见的病毒等进行过滤。

    事例:

    下面是禁止任何地址通过TCP/135端口访问到本地路由器,因为是访问本地路由器的数据,这里进入input链表进行操作:

    clip_image009

    禁止内网192.168.1.100的电脑上网,我们通过forward链表进行控制:

    clip_image010

    我们来看看Jump操作在forward链表中的工作过程:

    clip_image011

    在forward中数据遇到jump规则,会判断数据是否符合定义jump规则,如果满足条件将跳转到指定的链表,如上图的ICMP和virus链表,当在数据进入这些链表执行完后,会返回jump规则所在的forward链表中。

    IP Firewall协议深入解析

    TCP/IP协议和构架

    我们首先理解一下,TCP/IP体系结构:

    clip_image012

    (1)网络接口层
    网络接口层,也被称为网络访问层,包括了能使用TCP/IP与物理网络进行通信的协议,它对应OSI的物理层和数据链路层。TCP/IP标准并没有定义具体的网络接口协议。具体的网络接口协议在实际应用的网络如Ethernet、ATM、FDDI、X.25、PPP、Token-Ring 等中定义。
    (2)网络层
    网络层是在TCP/IP标准中正式定义的第一层。网络层所执行的主要功能是处理来自传输层的分组,将分组形成数据包(IP数据包),并为该数据包进行路径选择,最终将数据包从源主机发送到目的主机,在网络层中,最常用是网络协议IP,其他一些协议用来协助IP的操作。
    网络层的协议有:IP、ARP、RARP、ICMP、IGMP
    (3)传输层
    TCP/IP的传输层也被称为主机至主机层,与OSI的传输层类似,主要负责主机到主机之间的端对端通信,该层使用了两种协议来支持两种数据的传送方法,即TCP协议和UDP协议。
    (4)应用层
    在TCP/IP模型中,应用程序接口是最高层,它与OSI模型中的高三层的任务相同,用于提供网络服务,比如文件传输、远程登录、域名服务和简单网络管理等。

    我们的RouterOS 中,ip firewall filter主要负责的是网络层、传输层和应用层,网络接口层则由bridge filter负责处理。

    clip_image013

    我们从上面的图看到,在RouterOS的filter规则中,可以找到Protocol(协议)的选项,我们可以根据情况,选择自己需要的协议。

    TCP/IP协议是一族协议,包括上百个互为关联的协议,不同功能的协议分布在不同的协议层, 下面是几个常用协议:
    一、网际层协议
    IP:网际协议
    ARP:地址解析协议
    RARP:反向地址解析协议
    ICMP/ICMPv6:Internet 消息控制协议
    IPCP and IPv6CP:IP控制协议和IPV6控制协议
    IGMP:Internet 组管理协议
    二、传输层协议
    TCP:传输控制协议
    UDP:用户数据报协议
    RDP:可靠数据协议,RDP 是一种面向连接的传输协议,其主要设计来为主机监控应用程序如下载 / 上传以及远程调试进行有效的大批数据传输。
    RUDP:可靠用户数据报协议,RUDP 用于传输 IP 网络间的电话信号。
    三、应用层协议应用层协议
    HTTP:超文本传输协议,用于Internet中的客户机与WWW服务器之间的数据传输
    DHCP:动态主机配置协议,实现对主机的地址分配和配置工作
    DNS:域名系统(服务)系统,用于实现主机名与IP地址之间的映射
    FTP:文件传输协议,实现主机之间的文件传送
    TFTP:简单文件传输协议
    TELNET:TCP/IP 终端仿真协议(又称远程登录协议),本地主机作为仿真终端,登录到远程主机上运行应用程序
    SMTP:简单邮件传输协议,实现主机之间电子邮件的传送;
    IMAP4:因特网信息访问协议,用于访问存储在邮件服务器系统内的电子邮件和电子公告板信息。
    POP(POP3):邮局协议,用于用户与服务器之间进行邮件的收发。
    SNMP:简单网络管理协议,实现网络的管理
    NNTP:网络新闻传输协议
    UUCP:Unix到Unix的拷贝程序
    BOOTP:引导协议,用于无盘主机或工作站的启动
    NFS:网络文件系统,实现主机之间的文件系统的共享
    NAT:网络地址转换
    IRCP/IRC:因特网在线聊天协议
    LDAP:轻量级目录访问协议
    NTP:网络时间协议
    RLOGIN:远程登录命令,仅支持Unix到Unix的连接。
    RMON:远程监控
    RWhois:远程目录访问协议
    SLP:服务定位协议
    SNTP:简单网络时间协议
    Finger:用户信息协议

    IP源地址和目标地址概念

    如何判断源地址和目标地址,与他们在ip firewall filter的链表,我们先看看下面的图:

    clip_image014

    我们从该图上可以看到,内网主机192.168.10.88与路由器192.168.10.1通信的情况,内网主机192.168.10.88向路由和外网的web服务器时,不同情况下源目标IP地址的转变和使用的chain链表情况。

    注:在这里要记住任何通信是双向的,而不仅只有源到目标一条链路。

    在RouterOS中两个选择涉及到源和目标地址,General标签中的src-address、dst-address和Advanced的src-address-list、dst-address-list如下图:

    clip_image015

    Src-address和dst-address可以支持子网格式,同样支持一段连续的地址如:“192.168.10.10-192.168.10.100”。在src-address-list和dst-address-list里需要调用/ip firewall address-list的地址列表,通过该地址列表可以设置不同地址段和不连续的IP地址。

    试验:

    1、 允许192.168.10.9和192.168.10.15能访问外网,禁止其他地址访问外网数据

    2、 路由器有两段内网IP地址192.168.10.0/24和192.168.11.0/24,禁止这两个地址段互访,但允许192.168.10.9访问192.168.11.9的主机

    病毒和应用程序过滤

    在RouterOS中能做到内容过滤,即content,对一些明文传输的字符进行过滤,特别是web中的内容

    clip_image016

    上面是一个过滤www.test.com的域名过滤

    至于最新的机器狗病毒我们可以通过导入机器狗的存在的病毒地址和域名进行过滤,我们在对机器狗目标地址过滤时调用了address-list的地址列表。

    clip_image017

    我们在下图中,我们看到对机器狗的目标地址控制我们设置了dst-address-list选择Robotdog,而Robotdog定义则是在ip firewall address-list中定义:

    clip_image018

    在address-list常用于某一组相同类型或属性的IP地址,但这些又不连续,则可以通过address-list来定义。以上的防火墙规则,可以在http://www.mikrotik.com.cn/down.asp下载到。

    在RouterOS3.0中增加了Layer7协议过滤功能,即对应用程序的代码进行过滤,这些代码我们通过Regexp的脚本进行编辑,也可以通过我们预先编辑好的RouterOS脚本导入Layer7协议应用列表(下载http://www.mikrotik.com.cn/down.asp

    clip_image019

    我们可以同在ip firewall filter中调用,操作如下:

    clip_image020

    我们可以同上面的列表看到,RouterOS的Layer7协议能对常见的网络协议、网络程序和游戏进行操作,根据我们需要进行拒绝、接受和跳转等。

    RouterOS防火墙规则操作相对比较灵活,相应的操作人员能掌握常见的网络协议和原理,操作中需要根据不同情况进行自定义,特别是防火墙前中上下结构能灵活的处理。