查看: 426|回复: 0

[RouterOS] Firewall防火墙规则事例

[复制链接]

主题

好友

567

积分

中尉

签到天数: 35 天

[LV.5]常住居民I

发表于 2016-9-22 16:55 |显示全部楼层
Anywlan微信公众号
防火墙规则事例
/ M  N" @" y0 T! s  m

" [2 P$ B) h/ b4 e" I6 T! b
我先从 input 链表开始,这里是对所有访问路由的数据进行过滤和处理:
从 input 链表的第一条开始执行,这里一共有三条规则:5 I- b3 q& y* E; }  W; J

5 l! {* s# i+ y8 \$ i
0 ;;; 接受你信任的 IP 地址访问(src-address=填写信任 IP,默认允许任何地址)chain=input src-address=192.168.100.2 action=accept7 z7 s* v$ R8 D. {. w
& G' o0 m1 A5 P% \# [* w# I
! J& J. _7 L: D2 i4 |
1 ;;; 丢弃非法连接
6 J# `( z& J1 F6 c- a+ g
chain=input connection-state=invalid action=drop
1 _8 V  }8 G+ @9 g
2 ;;; 丢弃任何访问数据: w2 w1 R3 C/ h! G- ^  [3 {% i8 v
chain=input action=drop, U, K* X  r! T2 ~
* r3 o- r+ }6 n3 H
下面是 forward 链表
) ]6 i, u: M3 S+ {% Z
forward 链表,一共有 7 条规则,包括两个跳转到自定义链表 ICMP 和 virus 链表:, H1 c- ^& q0 L
8 g% D# f1 ~, k% W! p3 Y, |+ @8 p
0 ;;; 接受已建立连接的数据
% v; s2 A; o# e* c& f, [6 i& p
chain=forward connection-state=established action=accept
) k; T4 {5 X9 \! n8 L
1 ;;; 接受相关数据$ C4 _( r/ ~; R, K) e5 G
chain=forward connection-state=related action=accept
/ j" U  }$ ?) v: W9 G9 O4 F
2 ;;; 丢弃非法数据包
! T- ~+ k$ V4 ?8 U

4 _5 S6 c( U. X' n: f
chain=forward connection-state=invalid action=drop& r  Y2 @* e1 u
3 ;;; 限制每个主机 TCP 连接数为 80 条
8 @: f0 Q, a/ f0 C& y
chain=forward protocol=tcp connection-limit=80,32 action=drop
- @4 t8 f9 o' R/ x* d& W
4 ;;; 丢弃掉所有非单播数据4 h$ K! R* O. T: A# @  a
chain=forward src-address-type=!unicast action=drop' \! U& c. _7 ?: p, E  l! J
5 ;;; 跳转到 ICMP 链表0 h' P; F" Q8 z9 `/ @
chain=forward protocol=icmp action=jump jump-target=ICMP
( l! L8 X  x7 ?% d
6 ;;; 跳转到病毒链表
2 h2 z6 l+ }  ~# X
chain=forward action=jump jump-target=virus
  B# |- Z# ^& S

( m) j& z4 x' g# B
forward 工作过程如下:  $ m) @) W  ~! i

3 o8 |# l2 r+ |! ]- V
在自定义链表 ICMP 中,是定义所有 ICMP(Internet 控制报文协议),ICMP 经常被认为是 IP 层的一个组成部分。它传 递差错报文以及其他需要注意的信息。ICMP 报文通常被 IP 层或更高层协议(TCP 或 UDP)使用。例如:ping、traceroute、 trace TTL 等。我们通过 ICMP 链表来过滤所有的 ICMP 协议:
' F9 F4 d8 D% R7 X( n# q& {
0 H$ O2 L4 j. K: l
ICMP 链表操作过程:
: _. r) w' Z8 m% f( X

; O. h0 F& T5 ]7 p3 M
0 ;;; Ping 应答限制为每秒 5 个包
8 y- ^- b5 J7 Z  H' R. K$ N
chain=ICMP protocol=icmp icmp-options=0:0-255 limit=5,5 action=accept
! j/ `: I( \  H
1 ;;; Traceroute 限制为每秒 5 个包
! v, }. p$ `: f- Y" T' l
7 u5 s6 |# D# r+ Y
chain=ICMP protocol=icmp icmp-options=3:3 limit=5,5 action=accept& o! l0 J) y% N# R  T
2 ;;; MTU 线路探测限制为每秒 5 个包
! i% e" ]& k+ v1 y% }1 `
chain=ICMP protocol=icmp icmp-options=3:4 limit=5,5 action=accept
7 M5 a  G) F! U, Q0 G2 u
3 ;;; Ping 请求限制为每秒 5 个包; `1 p& d3 q9 G- G& [$ M
chain=ICMP protocol=icmp icmp-options=8:0-255 limit=5,5 action=accept) X, H6 ~( F; ]
4 ;;; Trace TTL 限制为每秒 5 个包1 [- @- D  Y0 A
chain=ICMP protocol=icmp icmp-options=11:0-255 limit=5,5 action=accept
; }) k7 i( c9 Z" B  S' v' A$ Y
5 ;;; 丢弃掉任何 ICMP 数据1 L6 k& V7 r  T% N# K' D
chain=ICMP protocol=icmp action=drop/ g! N5 W7 Q$ W5 X+ o6 S
& n; O" r7 H+ ]9 c% M
ICMP 类型:代码值2 P7 d" `/ s& ~+ i. O7 h) s* B

) I) s; l/ C  E* z1 n2 D, r8 B" }& E( R
通过指令保护你的路由器和相连接私有网络,你需要通过配置防火墙丢弃或拒绝 ICMP 协议的传输。然而一些ICMP 数据包则需要用来维护网络和故障判断用。
) ]# @$ s6 f* g( x' U& |: |. d3 M

# g, s/ r0 V2 s( I# l
下面是 ICMP 类型列表:通常下面的 ICMP 传输建议被允许通过
1 u- s; g. \0 `- r! A0 u

' Y9 S* K7 N" x% X
Ping+ j$ c0 u# X: i0 J! l
6 W9 U6 S; C# @7 x) _7 ^
o 8:0 – 回应请求
. A5 y/ Z3 S7 w* d4 c7 ]

/ {: d) g1 H! F& [% \
o 0:0 – 回应答复
3 W3 `; M, @: Z; f
) i' n5 J& X$ \+ s1 x5 }" t
Trace
5 r* l8 n+ B# a, ?% m' H4 ~5 Q8 t

' n! F7 V' m- s) E. a$ T4 `
o 11:0 – TTL 超出
' Z2 o4 F. f, A7 u: O! K
* Q( y6 H6 b8 Z2 Z
o 3:3 – 端口不可到达
$ B6 I& ~1 @7 M$ t( D; G" i
$ j& r$ r4 G+ y' {0 v9 l
路径 MTU 探测
- J/ r7 p8 A0 V8 N' K: h! _$ Y: L4 B
' |1 j7 y6 F8 v) {( J
o 3:4 – 分段存储 Fragmentation-DF-Set9 x. U7 |$ E* ~. G

1 k2 r7 s% `. ]) [2 B
一般 ICMP 过滤建议:) N, q: I3 K8 A. h" J: U

" ~6 L: Z. v. J9 Y+ d
-- 允许 ping—ICMP 回应请求向外发送和回应答复进入
0 e- ^+ Z9 j5 K4 f% o, ?! d

5 I! H+ D3 Q- T7 `% m% W$ d
-- 允许 traceroute—TTL 超出和端口不可到达信息进入
, T1 m5 P! q: N- |0 w3 j

( `) P4 G% X" c; g/ u% V7 K
-- 允许路径 MTU—ICMP Fragmentation-DF-Set 信息进入! e  T6 y6 R* W4 g, v0 E4 j

3 V  `, I, `+ S1 z8 j. W7 D2 g# C& c
-- 阻止其他任何数据
/ i% L' [# ^. K7 Y' Y. C
8 d' s7 Y/ B9 k( `$ Z- p
在 virus 链表中过滤常见的病毒,我可以根据需要在该链表中添加新的病毒对他们做过滤:
阻止不必要的 IP 广播:
; p- ^1 Y8 f! }' G

2 g9 g9 C0 F" J5 W2 Q$ E
add chain=forward src-address=0.0.0.0/8 action=drop add chain=forward dst-address=0.0.0.0/8 action=drop add chain=forward src-address=127.0.0.0/8 action=drop add chain=forward dst-address=127.0.0.0/8 action=drop add chain=forward src-address=224.0.0.0/3 action=drop add chain=forward dst-address=224.0.0.0/3 action=drop
3 _5 P5 ]1 s& n" t* O4 r

8 y( k2 Z1 N6 H8 Q. E: N
建立新的跳转数据链(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
5 F  w; H7 E% A. y
& Z$ F3 q7 j. [* J/ x) G
& o% o1 k9 \2 Z; U& J
# A; x' d+ C; |1 G3 V# h' L/ @
建立 tcp-chain 并拒绝一些 tcp 端口:* l, |% c, O/ e9 {0 w7 W4 E
# @; y0 ]* P' L5 B$ e
add chain=tcp protocol=tcp dst-port=69 action=drop comment="deny TFTP"- R) K0 a1 Y7 v$ U9 |' j. m
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"& ^/ |3 z9 A" B. [/ [/ |2 g" y
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"+ a9 ~; C+ c% v6 ^* B
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"
! x* k7 e" A/ A7 e5 F% L% |* _
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"+ W0 F7 x7 V1 [0 {

5 H/ @: P; n  g" r
在 udp-chain 中拒绝非法的 udp 端口 Deny udp ports in udp chain:add chain=udp protocol=udp dst-port=69 action=drop comment="deny TFTP"
; a- s( j7 A* i+ A8 `7 I' }2 Fadd 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"
+ M9 N0 B& W( Padd chain=udp protocol=udp dst-port=2049 action=drop comment="deny NFS"
' o4 c6 @8 _1 ^3 @4 [/ r7 r1 K8 }! ~2 y- u  v
add chain=udp protocol=udp dst-port=3133 action=drop comment="deny BackOriffice"
6 w4 i$ L# E: Z' |! k. g" G1 i( F6 u) _3 z8 M' ^

1 |9 G% X0 B$ C; P& k
9 P/ ^: s+ y) c" u% o3 P6 a4 R5 A
在 icmp-chain 允许相应需要的 icmp 连接:add chain=icmp protocol=icmp icmp-options=0:0 action=accept comment="drop invalid connections"
) w3 s: W. A- R/ U
add chain=icmp protocol=icmp icmp-options=3:0 action=accept \
' i. Z% `  l6 U  ~  F# ]3 U& p) q
comment="allow established connections"% O9 q$ d% k+ Y, _" ?  I
add chain=icmp protocol=icmp icmp-options=3:1 action=accept \
) I/ s  T$ H: Q( W  o1 d% E! f) p
comment="allow already established connections"
9 P; N# k+ G4 k1 U# l
add chain=icmp protocol=icmp icmp-options=4:0 action=accept \
+ D4 n: ~. c9 k- u, e4 b, `
comment="allow source quench"" I3 M; X, m  f% P! {! R  S" E
add chain=icmp protocol=icmp icmp-options=8:0 action=accept \/ u9 t* \5 C: K
comment="allow echo request"1 p1 K/ i5 |2 x. w+ y' J( j! `- `- J
add chain=icmp protocol=icmp icmp-options=11:0 action=accept \
, X) A4 L5 e' |' a+ m( d1 l- g
comment="allow time exceed"0 V" K1 n/ {. `* F8 u
add chain=icmp protocol=icmp icmp-options=12:0 action=accept \, _' ^" Y/ \: Q9 u3 ^, L; f+ a
comment="allow parameter bad"
5 T7 M7 F( `6 L4 n' L) f1 ]2 r) y
add chain=icmp action=drop comment="deny all other types"
' s" H: o& ~! D  [! ]
# A* P" O0 c6 Q4 d) Q  F
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

Archiver| 手机版| 中国无线门户 ( 粤ICP备11076993 )  |网站地图

GMT+8, 2017-9-21 14:41

Powered by Discuz! X3.2

© 2003-2013 广州威思信息科技有限公司

返回顶部 返回列表