查看: 418|回复: 0

[RouterOS] Firewall防火墙规则事例

[复制链接]

主题

好友

567

积分

中尉

签到天数: 35 天

[LV.5]常住居民I

发表于 2016-9-22 16:55 |显示全部楼层
Anywlan微信公众号
防火墙规则事例+ f7 R- N( [3 {% T- P

& y. {& x: B2 d: V" V  _
我先从 input 链表开始,这里是对所有访问路由的数据进行过滤和处理:
从 input 链表的第一条开始执行,这里一共有三条规则:8 t8 [; \' ?6 M# B+ q5 x
. L) ]3 X8 j7 c9 d
0 ;;; 接受你信任的 IP 地址访问(src-address=填写信任 IP,默认允许任何地址)chain=input src-address=192.168.100.2 action=accept
! e9 {. M/ C& ^- m% Z/ F6 n: m) e& y

. O" A$ V5 y$ T% J" n; W+ @4 V8 G! g
1 ;;; 丢弃非法连接
7 x4 n& {- k; @* P) }5 R- i( F7 K
chain=input connection-state=invalid action=drop+ G8 r3 m+ d% v: }. W. z
2 ;;; 丢弃任何访问数据
, O" @  t( w$ E/ j
chain=input action=drop
" ~2 J% v( X4 e0 q1 q7 M9 H

* s* ]( m. C) T" ^! M0 |! V
下面是 forward 链表
7 l' o, T+ {- ~
forward 链表,一共有 7 条规则,包括两个跳转到自定义链表 ICMP 和 virus 链表:$ i; n8 ]! G2 Z

  ?  D5 ]: c0 I2 Y3 V5 W6 R
0 ;;; 接受已建立连接的数据
0 D* u! I2 A) c2 W
chain=forward connection-state=established action=accept& E/ A  U0 B: _
1 ;;; 接受相关数据
) Y/ i8 o; _  ~9 A% L- x
chain=forward connection-state=related action=accept
+ e; L9 K, w" S; R: }
2 ;;; 丢弃非法数据包& {3 p, x) B. ~6 a
1 O; q4 ~( |6 |; V' \$ R+ o1 s0 Z( y  g0 H
chain=forward connection-state=invalid action=drop
2 f9 s6 o+ K1 o7 ?$ S
3 ;;; 限制每个主机 TCP 连接数为 80 条6 @, G5 [+ \# f, M2 j1 _
chain=forward protocol=tcp connection-limit=80,32 action=drop5 g9 c) L) g  o, D% h- T1 `
4 ;;; 丢弃掉所有非单播数据
1 Z- k! h6 L. m/ x' }1 j
chain=forward src-address-type=!unicast action=drop
3 P3 D! \, }& P3 C0 N
5 ;;; 跳转到 ICMP 链表
5 K; ~5 M. _+ U! k" `
chain=forward protocol=icmp action=jump jump-target=ICMP
. v: D5 G+ N) q& g$ }: n
6 ;;; 跳转到病毒链表
5 ~  w1 y. |0 H' A
chain=forward action=jump jump-target=virus1 Y8 G; A& E7 p7 D; E

" d0 G" ^7 b& @5 v; n& y, V
forward 工作过程如下:  
* X3 a0 d" }" G  S, \

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

: [) U! P) s: I" z8 ?( Y
ICMP 链表操作过程:; ]9 K' m) b% J4 ^+ P

( N1 w2 W: H( y/ N" @4 _" t8 E$ S
0 ;;; Ping 应答限制为每秒 5 个包6 d* I3 i" ?! m/ j
chain=ICMP protocol=icmp icmp-options=0:0-255 limit=5,5 action=accept
% S+ }6 T2 M. g
1 ;;; Traceroute 限制为每秒 5 个包# {" D. }9 r( g3 v  ]' T& T9 r+ X
: X' Y3 m4 H& B3 t1 v! L7 s
chain=ICMP protocol=icmp icmp-options=3:3 limit=5,5 action=accept# w3 {6 x. w$ @) \' X; ]& ^% h
2 ;;; MTU 线路探测限制为每秒 5 个包
" g6 m' q* V4 Q0 e: {
chain=ICMP protocol=icmp icmp-options=3:4 limit=5,5 action=accept# J" O6 ^" E2 h5 _
3 ;;; Ping 请求限制为每秒 5 个包
$ H  q" Z4 G2 t: I% k: L* U4 T8 L
chain=ICMP protocol=icmp icmp-options=8:0-255 limit=5,5 action=accept
2 A- {& S9 W* y! H7 _. z) |
4 ;;; Trace TTL 限制为每秒 5 个包
/ C# P/ I3 k! U
chain=ICMP protocol=icmp icmp-options=11:0-255 limit=5,5 action=accept
2 e. g) H& u% u  g5 y  s
5 ;;; 丢弃掉任何 ICMP 数据$ h3 b7 b& M% V3 {% j3 |( _
chain=ICMP protocol=icmp action=drop! n, @: b  B7 o1 u3 R/ h  M/ H
2 f1 @- G, k  g; n, ?# @& e
ICMP 类型:代码值: K/ R  R4 h/ v; Z4 O8 c
4 ?8 f  h$ W. D( Y1 x7 t. Z$ }
通过指令保护你的路由器和相连接私有网络,你需要通过配置防火墙丢弃或拒绝 ICMP 协议的传输。然而一些ICMP 数据包则需要用来维护网络和故障判断用。  C! F- k- A3 v0 E$ O

) l# C$ J' }: b: A* h/ T! g
下面是 ICMP 类型列表:通常下面的 ICMP 传输建议被允许通过
6 b4 C) Z" g  J  U6 o2 y6 e9 L- b2 C
/ S8 E3 C! B. E/ s. s
Ping# A& @+ p) u' N" e
, a4 R. K: p: F
o 8:0 – 回应请求+ i( n/ A+ a) _

' ]: k! r* m9 n& b5 t& u1 R- z
o 0:0 – 回应答复! a3 o3 t; T/ R9 I+ `7 W$ l

0 L( {6 f1 |/ g( s9 B: ]& s
Trace
8 Z2 ~# h5 L4 u5 U+ i, V
6 D4 D& k# D. W/ a/ t) j/ M
o 11:0 – TTL 超出3 H4 G) L* C% @% }) i, H3 ]) A- O

' _1 Q& Q7 f  l- i4 C& |; U
o 3:3 – 端口不可到达4 X/ G# _. C; Y' e! w: q5 `4 T

; z  y2 S3 ^) {/ p! @5 k
路径 MTU 探测
, o; N, ~2 X" y' x7 B5 _
2 O$ u# m* M9 L$ s3 v% g3 j/ O
o 3:4 – 分段存储 Fragmentation-DF-Set9 A" o, z9 Y4 l5 u% R

1 D& Q8 d$ z. p" i7 P1 ^) H- Y' \
一般 ICMP 过滤建议:
$ b) M6 g( f- b) i) d1 a
( X8 s$ |) L  N) ?) @
-- 允许 ping—ICMP 回应请求向外发送和回应答复进入6 R6 n- y) v. W+ Q! K2 v
- a6 P  K* ~+ t) d7 [  N3 e5 {
-- 允许 traceroute—TTL 超出和端口不可到达信息进入" {8 h+ L' ~9 D9 R, O# H5 q
, c9 \. e/ Y# o% v5 N" A1 Q
-- 允许路径 MTU—ICMP Fragmentation-DF-Set 信息进入+ k5 j) D: y( O  d8 z7 t

6 E' H7 l4 u6 z( g: g
-- 阻止其他任何数据) T+ g: R1 k+ O/ Z) o+ p

3 w; t# X( O/ |% }
在 virus 链表中过滤常见的病毒,我可以根据需要在该链表中添加新的病毒对他们做过滤:
阻止不必要的 IP 广播:
& \* K& W& T1 T) C

, l( d  u1 z- ~+ m8 Q- p9 B* R
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=drop4 ~/ Y6 |/ K& _

! m' D! L) X% c& z# @
建立新的跳转数据链(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=icmp8 C0 F2 U# A' h; I  l" a5 P2 Y% O# x
; k* i/ a' s' C9 t4 y
% e2 M1 S! J& ]$ t9 m4 L

/ b, d. {( t" q
建立 tcp-chain 并拒绝一些 tcp 端口:
3 f, D1 x$ h: C/ M5 d5 u

* B, P2 Y4 Y  m" S. W+ s
add chain=tcp protocol=tcp dst-port=69 action=drop comment="deny TFTP"* h9 e; w7 y1 w5 \
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"# `& D1 k: f, @2 O9 k, J
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", W! E! R) T# m
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"
6 |5 E2 T3 O$ U$ g+ a, k" _6 B
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"
1 {* }! E- L* q% Y6 W( @
, W2 |1 I9 W5 C, `# ^
在 udp-chain 中拒绝非法的 udp 端口 Deny udp ports in udp chain:add chain=udp protocol=udp dst-port=69 action=drop comment="deny TFTP"! Z2 S% \+ @4 J  p/ c* G! R& z
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"% O1 O8 U! c! U" |1 @
add chain=udp protocol=udp dst-port=2049 action=drop comment="deny NFS"% [" F, l& J( V6 K. w3 l

6 B4 H7 x% v+ ^. K  cadd chain=udp protocol=udp dst-port=3133 action=drop comment="deny BackOriffice"
1 x3 r" r' C5 |4 X% q3 ?% p% v6 i
7 k, z3 l( \$ L; B

, U9 ?1 X6 l* l. Z  J
在 icmp-chain 允许相应需要的 icmp 连接:add chain=icmp protocol=icmp icmp-options=0:0 action=accept comment="drop invalid connections"# }6 B, ~7 M% e% g6 C: B
add chain=icmp protocol=icmp icmp-options=3:0 action=accept \* s* o7 o. h" x
comment="allow established connections"
2 r* I6 P" K  Z+ V  w* h
add chain=icmp protocol=icmp icmp-options=3:1 action=accept \: p6 u+ ^5 a  s5 g2 ^+ G2 C
comment="allow already established connections"
2 E  u' R8 x! s
add chain=icmp protocol=icmp icmp-options=4:0 action=accept \' ?) O1 y; s  z3 w! J3 h
comment="allow source quench"
9 u3 i* c- j1 o  H. D
add chain=icmp protocol=icmp icmp-options=8:0 action=accept \
9 l; t: i' W% Z
comment="allow echo request"
2 F' J! q: ]  q/ j' w9 B" \
add chain=icmp protocol=icmp icmp-options=11:0 action=accept \
! B1 l+ a  \. U* A. T" u9 |4 F
comment="allow time exceed"+ z1 O. k9 \; q9 U
add chain=icmp protocol=icmp icmp-options=12:0 action=accept \
/ e5 t8 `! z  k- n- ]7 d+ ^+ t
comment="allow parameter bad"0 Y: d4 P0 ~. |7 {
add chain=icmp action=drop comment="deny all other types"/ A9 Z4 v- s, N" Z( v2 J1 C/ w
8 k' T7 t( I+ F7 R. t$ E
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

Archiver| 手机版| 中国无线门户 ( 粤ICP备11076993 )  |网站地图    小黑屋 | 免责声明

GMT+8, 2017-7-22 04:38

Powered by Discuz! X3.2

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

返回顶部 返回列表