ros的防火墙非常灵活,如果配上正则表达式则更为强大,
防火Q过滤功能有三个默认的数据链chainsinput, forward和output 他们分别负责从哪里进入路由器的、通过路由器转发的与从路由器发出的数据。用户也可用自定义添加链当然这些链没有默认的传输配置需要在三条默认的链中对action=jump策略中相关的jump-target进行配置。
例:
建立新的跳转数据链chains
add chain=forward protocol=tcp action=jump jump-target=tcp(新数据链名)
add chain=forward protocol=udp action=jump jump-target=udp
add chain=forward protocol=icmp action=jump jump-target=icmp
建立tcp-chain并拒绝一些tcp端口
add chain=tcp protocol=tcp dst-port=69 action=drop comment=”deny TFTP”
add chain=tcp protocol=tcp dst-port=111 action=drop comment=”deny RPC portmapper” add chain=tcp protocol=tcp dst-port=135 action=drop comment=”deny RPC portmapper” add chain=tcp protocol=tcp dst-port=137-139 action=drop comment=”deny NBT”
add chain=tcp protocol=tcp dst-port=445 action=drop comment=”deny cifs”
add chain=tcp protocol=tcp dst-port=2049 action=drop comment=”deny NFS”
add chain=tcp protocol=tcp dst-port=12345-12346 action=drop comment=”deny NetBus” add chain=tcp protocol=tcp dst-port=20034 action=drop comment=”deny NetBus”
add chain=tcp protocol=tcp dst-port=3133 action=drop comment=”deny BackOriffice” add chain=tcp protocol=tcp dst-port=67-68 action=drop comment=”deny DHCP”
在udp-chain中拒绝非法的udp端口Deny udp ports in udp chain:
add chain=udp protocol=udp dst-port=69 action=drop comment=”deny TFTP”
add chain=udp protocol=udp dst-port=111 action=drop comment=”deny PRC portmapper” add chain=udp protocol=udp dst-port=135 action=drop comment=”deny PRC portmapper” add chain=udp protocol=udp dst-port=137-139 action=drop comment=”deny NBT”
add chain=udp protocol=udp dst-port=2049 action=drop comment=”deny NFS”
在防火墙Layer7-protocol目录下你可以添加正则表达式字符串协议定义他们的名称并在防火墙filter目录下丢弃他们的数据。针对一些应用程序如skype、QQ、MSN、魔兽世界……网络程序做限制和过滤
DMZ 配置事例
路由器一般需要3张网卡Public公网Local本地网络DMZ-Zone非军事区
给相应的Interface添加对应的IP地址如下
[admin@gateway] ip address> print
Flags: X – disabled, I – invalid, D – dynamic
# ADDRESS NETWORK BROADCAST INTERFACE
0 192.168.0.2/24 192.168.0.0 192.168.0.255 Public
1 10.0.0.254/24 10.0.0.0 10.0.0.255 Local
2 10.1.0.1/32 10.1.0.2 10.1.0.2 DMZ-zone
3 192.168.0.3/24 192.168.0.0 192.168.0.255 Public
配置DMZ服务器的IP地址为IP地址10.1.0.2网络地址段10.1.0.1/24以及网关10.1.0.1
配置能从因特网访问DMZ服务的dst-nat规则将地址192.168.0.3配置给DMZ服务器 [admin@gateway] ip firewall nat> add chain=dst-nat action=dst-nat \ \… dst-address=192.168.0.3 to-dst-address=10.1.0.2
为网络192.168.0.0/24的所有客户端添加一个限制下载流量为2Mb上传流量1Mb的简单队列规则。
[admin@MikroTik] queue simple> add name=Limit-Local target-address=192.168.0.0/24 max-limit=1000000/2000000
这里不想让服务器192。168。0。1受到我们添加上面规则的任何流量限制我们可以通过添加一个没有任何限制的规则max-limit=0/0代表没有任何限制并把它移到列表的顶部 [admin@MikroTik] queue simple> add name=Server target-addresses=192.168.0.1/32
Queue tree HTB实
通过用new-connection-mark标记向外的连接并采取mark-connection动作。当这个完成时你可以使用new-packet-mark标记属于这个连接的所有数据包并采用mark-packet。 首先VIP数据标记我们通过ip firewall address-list定义VIP用户的地址列表定义完成后通过src-address-list调用
chain=forward action=mark-connection new-connection-mark=vip passthrough=yes src-address-list=vip
chain=forward action=mark-packet new-packet-mark=vip passthrough=no connection-mark=vip
跟着定义web数据这里我们需要针对访问网页的tcp/80端口和域名解析的DNS端口tcp/53和udp/53端口标记
2 ;;; web chain=forward action=mark-connection new-connection-mark=web passthrough=yes protocol=tcp dst-port=80
3 chain=forward action=mark-connection new-connection-mark=web passthrough=yes protocol=tcp dst-port=53
4 chain=forward action=mark-connection new-connection-mark=web passthrough=yes protocol=udp dst-port=53
5 chain=forward action=mark-packet new-packet-mark=web passthrough=no connection-mark=web
标记数据完成后我们进入queue tree中对数据进行优先级的配置
我们进入forward链表添加一条跳转的规则将forward中所有数据首先进入dstgames的链表过滤一次将游戏分离出来 /ip firewall mangle add chain=forward action=jump jump-target=dstgam
连接标记用于区分网页视频的速率 chain=forward action=mark-connection new-connection-mark=web_video passthrough=yes protocol=tcp dst-port=80 connection-bytes=700000-0 connection-rate=70k-10
HTB令牌桶方式控制各个数据的优先级并通过PCQ动态分配带宽我们进入queue的tree设置HTB但我们首先还是要先设置PCQ参数 进入queue type添加PCQ规则我们添加一个down的PCQkind= pcqrate设置每台主机的带宽这里我们选择0即动态分配带宽你也可以设置一个固定值以k或者m为单位选择dst-address为下行的规则
masquerade – 以一个路由策略自动分配的IP地址取代IP包的源地
netmap – 创造一个IP地址从一端到另一端的静态11映像。通常用于分配公用IP地址到专用内网的主机上
passthrough – 忽略次条规则并转到下一个规则
redirect – 把IP包的目的地址替换成一个路由器的本地地址
对公用接口添加公用IP /ip address add address=10.5.8.200/24 interface=Public 添加允许外部网络访问本地服务器的规则 /ip firewall nat add chain=dstnat dst-address=10.5.8.200 action=dst-nat \ to-addresses=192.168.0.109
如果你想从公用IP子网11.11.11.1/32访问本地的2.2.2.2/32你应该使用目的地址翻译以及源地址翻译特性设置action=netmap。
/ip firewall nat add chain=dstnat dst-address=11.11.11.1 \ action=netmap to-addresses=2.2.2.2
/ip firewall nat add chain=srcnat src-address=2.2.2.2 \ action=netmap to-addresses=11.11.11.1
。Mangle标记仅存在于该路由器中他们无法传输到网络中去。 根据数据传输方式不同可以选择
? Prerouting路由前常用于标记策略和端口路由
? Input进入路由器的数据
? Foreward通过路由转发用于修改TTL、TCP-MSS和流量控制规则
? Output数据输出
? Prostrouting路由后
标记IP数据流的三种类型这三种类型会在各种应用中多次出现特别是Queue的流量控制和ip route的路由
? Mark-connection标记所有IP流的连接
? Mark-packet标记IP流中数据包
? Mark-routing标记IP流中IP数据包的路由信息
三种类型的关系所有的在IP数据包传输前首先需要通过建立TCP/UDP连接进行传输。所以当数据通过IP流进入Mangle后建立相应的连接标记并从连接标记中提取数据包做处理