防火墙规则

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

  • input – 用于处理进入路由器的数据包,即数据包目标IP地址是到达路由器一个接口的IP地址,经过路由器的数据包不会在input-chains处理。
  • forward – 用于处理通过路由器的数据包
  • output – 用于处理源于路由器并从其中一个接口出去的数据包。

他们具体的区别如下:

1

当处理一个chain(数据链),策略是从chain列表的顶部从上而下执行的。如果一个数据包满足策略的条件,这时会执行该操作。

我们来看看防火墙过滤原则:

2

现在我来看事例中的防火墙规则:

我先从input链表开始,这里是对所有访问路由的数据进行过滤和处理:

3

从input链表的第一条开始执行,这里一共有三条规则:

0 ;;; 接受你信任的IP地址访问(src-address=填写信任IP,默认允许任何地址)

chain=input src-address=192.168.100.2 action=accept

1 ;;; 丢弃非法连接

chain=input connection-state=invalid action=drop

2 ;;; 丢弃任何访问数据

chain=input action=drop

下面是forward链表

4

forward链表,一共有7条规则,包括两个跳转到自定义链表ICMP和virus链表:

0 ;;; 接受已建立连接的数据

chain=forward connection-state=established action=accept

1 ;;; 接受相关数据

chain=forward connection-state=related action=accept

2 ;;; 丢弃非法数据包

chain=forward connection-state=invalid action=drop

3 ;;; 限制每个主机TCP连接数为80条

chain=forward protocol=tcp connection-limit=80,32 action=drop

4 ;;; 丢弃掉所有非单播数据

chain=forward src-address-type=!unicast action=drop

5 ;;; 跳转到ICMP链表

chain=forward protocol=icmp action=jump jump-target=ICMP

6 ;;; 跳转到病毒链表

chain=forward action=jump jump-target=virus

forward工作过程如下:

5

在自定义链表ICMP中,是定义所有ICMP(Internet控制报文协议),ICMP经常被认为是IP层的一个组成部分。它传递差错报文以及其他需要注意的信息。ICMP报文通常被IP层或更高层协议(TCP或UDP)使用。例如:ping、traceroute、trace TTL等。我们通过ICMP链表来过滤所有的ICMP协议:

6

ICMP链表操作过程:

0 ;;; Ping应答限制为每秒5个包

chain=ICMP protocol=icmp icmp-options=0:0-255 limit=5,5 action=accept

1 ;;; Traceroute限制为每秒5个包

chain=ICMP protocol=icmp icmp-options=3:3 limit=5,5 action=accept

2 ;;; MTU线路探测限制为每秒5个包

chain=ICMP protocol=icmp icmp-options=3:4 limit=5,5 action=accept

3 ;;; Ping请求限制为每秒5个包

chain=ICMP protocol=icmp icmp-options=8:0-255 limit=5,5 action=accept

4 ;;; Trace TTL限制为每秒5个包

chain=ICMP protocol=icmp icmp-options=11:0-255 limit=5,5 action=accept

5 ;;; 丢弃掉任何ICMP数据

chain=ICMP protocol=icmp action=drop

在virus链表中过滤常见的病毒,我可以根据需要在该链表中添加新的病毒对他们做过滤:

7

Tracking设置

这里我们可以设置是否启用tracking连接跟踪,以及TCP、UDP和ICMP等协议的timeout时间,和TCP-syncookie设置,RouterOS在2.9.16中增加了TCP-syncookie参数。

在使用NAT时需要启用Tracking连接跟踪,如果你的RouterOS没有使用NAT(如在使用bridge模式下),可以选择关闭tracking,降低系统资源。

8

SYN Cookie原理
SYN Flood是一种非常危险而常见的DoS***方式。到目前为止,能够有效防范SYN Flood***的手段并不多,而SYN Cookie就是其中最著名的一种

SYN Cookie是对TCP服务器端的三次握手协议作一些修改,专门用来防范SYN Flood***的一种手段。它的原理是,在TCP服务器收到TCP SYN包并返回TCP SYN+ACK包时,不分配一个专门的数据区,而是根据这个SYN包计算出一个cookie值。在收到TCP ACK包时,TCP服务器在根据那个cookie值检查这个TCP ACK包的合法性。如果合法,再分配专门的数据区进行处理未来的TCP连接。