查看: 412|回复: 0

[RouterOS] Firewall防火墙规则事例

[复制链接]

主题

好友

567

积分

中尉

签到天数: 35 天

[LV.5]常住居民I

发表于 2016-9-22 16:55 |显示全部楼层
Anywlan微信公众号
防火墙规则事例
2 s% p# ]/ p6 @: x% j# T
2 b( J0 b' E' b- \  G% X7 s$ @
我先从 input 链表开始,这里是对所有访问路由的数据进行过滤和处理:
从 input 链表的第一条开始执行,这里一共有三条规则:2 z3 S. K1 }  F; v$ C

* S# ]- _" c! I5 W9 j
0 ;;; 接受你信任的 IP 地址访问(src-address=填写信任 IP,默认允许任何地址)chain=input src-address=192.168.100.2 action=accept
8 k: ]/ e: M) @1 U( B! i& n! ?) v; d( x3 k
' q+ [; q) ~3 c
1 ;;; 丢弃非法连接
+ Z/ V) c/ G' Z! c) A
chain=input connection-state=invalid action=drop- ^0 k, e# H# n& w  R- G: b" J
2 ;;; 丢弃任何访问数据$ j0 \* [3 t" n0 Z' e
chain=input action=drop
$ }0 J3 A3 ?" D5 W

! u8 f" P( U( f: t* V6 k+ x
下面是 forward 链表
- w# M8 A; a$ w: X8 F" j
forward 链表,一共有 7 条规则,包括两个跳转到自定义链表 ICMP 和 virus 链表:6 `4 x7 [# p& A

& ~  E: T* I0 }3 A3 g0 r
0 ;;; 接受已建立连接的数据2 R% v2 L: t0 u% O5 V9 n7 u- ?+ n
chain=forward connection-state=established action=accept
! m, w* f8 b& d/ L: c  D" F
1 ;;; 接受相关数据
: s; s, _( M# V
chain=forward connection-state=related action=accept
- ~9 U( x* P4 e0 p0 U
2 ;;; 丢弃非法数据包
2 {/ w; v2 x; p. |( v( b0 q6 P
8 A/ e* ^2 m5 A$ Y+ N
chain=forward connection-state=invalid action=drop  J$ n, q7 Y" }' s4 c! q0 N
3 ;;; 限制每个主机 TCP 连接数为 80 条
- ^5 c7 A- \9 J# n  ^
chain=forward protocol=tcp connection-limit=80,32 action=drop
$ s3 d9 X: u- ?$ C( D
4 ;;; 丢弃掉所有非单播数据
4 E5 D! @( r* U' W2 I. v
chain=forward src-address-type=!unicast action=drop0 I' m$ D/ g# _0 v  ]0 y
5 ;;; 跳转到 ICMP 链表& P6 _* }, d" i4 `3 D$ w
chain=forward protocol=icmp action=jump jump-target=ICMP
4 v/ Y9 l; f; i8 [' H1 ^' i
6 ;;; 跳转到病毒链表
( E. w" Z) z5 a
chain=forward action=jump jump-target=virus
3 j% L  }0 ?' _( D
7 P- K2 }' }( U  Y7 c. J$ l; C( r& @8 n
forward 工作过程如下:  , b6 l' [! s* ^- R& t# \; S

/ }5 f  Q/ v! [
在自定义链表 ICMP 中,是定义所有 ICMP(Internet 控制报文协议),ICMP 经常被认为是 IP 层的一个组成部分。它传 递差错报文以及其他需要注意的信息。ICMP 报文通常被 IP 层或更高层协议(TCP 或 UDP)使用。例如:ping、traceroute、 trace TTL 等。我们通过 ICMP 链表来过滤所有的 ICMP 协议:4 l0 ^# E* |) X5 ^
6 j+ z/ e# v) _# j4 H. D' \1 [1 t
ICMP 链表操作过程:& i6 q, I6 q/ O2 S8 p$ ~

0 Z! c- E, u" P% J
0 ;;; Ping 应答限制为每秒 5 个包: H+ F4 E) P% E% E3 U3 r
chain=ICMP protocol=icmp icmp-options=0:0-255 limit=5,5 action=accept
1 n$ V. m: [2 n
1 ;;; Traceroute 限制为每秒 5 个包, l+ Z0 a7 V+ R3 x& [; Z# U
/ E8 e8 f6 @' g5 x; x. H
chain=ICMP protocol=icmp icmp-options=3:3 limit=5,5 action=accept
+ [2 A2 n* E- g* `, W7 v# k
2 ;;; MTU 线路探测限制为每秒 5 个包
! r1 U0 N5 R8 h1 l. U) V/ U
chain=ICMP protocol=icmp icmp-options=3:4 limit=5,5 action=accept% C2 I  \7 ~7 V2 M0 T
3 ;;; Ping 请求限制为每秒 5 个包
$ r' t$ H) Z: l) p" V) A
chain=ICMP protocol=icmp icmp-options=8:0-255 limit=5,5 action=accept" v6 l* @- j# X6 A
4 ;;; Trace TTL 限制为每秒 5 个包' A7 X& I8 m6 x8 E" u9 \3 y- n
chain=ICMP protocol=icmp icmp-options=11:0-255 limit=5,5 action=accept! \6 n: p; ?- o5 h8 `. x
5 ;;; 丢弃掉任何 ICMP 数据
3 K! |& @3 b  y& ?+ ]. B6 w5 {' i
chain=ICMP protocol=icmp action=drop
. w4 B) S4 l% N, D0 r1 y
4 U0 P" V# z4 h" E# M4 q& V
ICMP 类型:代码值+ F* `4 v: S1 {/ `/ o

9 ]. p5 Z0 @' m* R& k/ M
通过指令保护你的路由器和相连接私有网络,你需要通过配置防火墙丢弃或拒绝 ICMP 协议的传输。然而一些ICMP 数据包则需要用来维护网络和故障判断用。
# V' I" n8 }( p$ x) q

9 \, |5 A( p& k1 z  j
下面是 ICMP 类型列表:通常下面的 ICMP 传输建议被允许通过& W/ f# q7 [) J+ s8 }
: m& P5 D4 [$ L1 t6 j! y7 R
Ping' k$ a9 t5 d. N9 ~5 N5 \) G1 Z: F

: P5 B1 _, Q9 W4 \$ K, Z
o 8:0 – 回应请求
! b  b* D4 p4 X2 ]

2 y# w- r% p# r7 A7 A
o 0:0 – 回应答复
+ ?5 L6 i! _6 _6 A- Z8 z+ B  e' Q
% Y' k; D$ a1 @. D' u
Trace/ K3 I3 W! l+ [+ d
+ e/ g: h8 G+ i0 v! ^# q9 X! F
o 11:0 – TTL 超出! B5 v. [% C" F# R
1 e8 i1 ]5 I/ O2 D, d; }
o 3:3 – 端口不可到达5 G8 p8 k0 C' \  Y
1 R% [7 n% {2 z7 \/ ^3 ~
路径 MTU 探测  w- P5 u% q! c

, z1 J" i8 N! q& {* L
o 3:4 – 分段存储 Fragmentation-DF-Set
3 y9 r, U& w% m7 s
3 |, {' L" l  g7 z; A
一般 ICMP 过滤建议:: t5 I" P5 t+ }. [
$ y& H5 J* c; [: e* Z% s
-- 允许 ping—ICMP 回应请求向外发送和回应答复进入
* g" l; T% z3 A. J& M4 q

9 R1 ?1 a4 }2 I
-- 允许 traceroute—TTL 超出和端口不可到达信息进入
2 H* q4 g% ]/ [* b1 n3 t/ @/ ?' r% z
. R# ^7 }1 I; D" e: w. o
-- 允许路径 MTU—ICMP Fragmentation-DF-Set 信息进入
! X9 y- V+ ]% X2 r7 A' [

$ o+ o5 q  ^% v$ D0 ~, f% a
-- 阻止其他任何数据
" f& z( G8 N2 O0 `! V* H9 p

$ [" v9 Q* L( S+ h
在 virus 链表中过滤常见的病毒,我可以根据需要在该链表中添加新的病毒对他们做过滤:
阻止不必要的 IP 广播:
  {2 T) [7 D' C

  C& f8 m+ [/ K! d5 J9 @& 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=drop" r# {& Y) D' l* J6 S4 }' c
( l, T* M: x6 R  L8 K" H" I- ?- `
建立新的跳转数据链(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( n' e# _  u" V' ^6 ?7 B

; g5 J+ M: ^& w: ]( `0 u  U0 M2 J
1 I* q# I: M: ?/ Q  D% D

) H* @2 K  Q' O* D. ]
建立 tcp-chain 并拒绝一些 tcp 端口:7 m( p3 M, m& d) a
5 _3 L. h6 u5 @+ O  t4 f0 v
add chain=tcp protocol=tcp dst-port=69 action=drop comment="deny TFTP"
2 J" Z  K7 v; X2 _; ?8 U
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"
# O0 B9 A* c- O5 }* P* 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"* x8 o) A( L4 X0 N2 Z. k
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"4 z/ h7 H) Q+ i( J
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"
0 X* `9 w1 d6 L0 ]  f3 V1 B/ \
( o( f) R4 e- M) y6 f
在 udp-chain 中拒绝非法的 udp 端口 Deny udp ports in udp chain:add chain=udp protocol=udp dst-port=69 action=drop comment="deny TFTP"
: \, O! L# B! A5 ^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"
& q3 a& u* Q. o9 v3 Dadd chain=udp protocol=udp dst-port=2049 action=drop comment="deny NFS"
' @: N2 Y4 G5 }3 N* f
) Y( C5 K3 s4 y8 Y/ [% r$ M& qadd chain=udp protocol=udp dst-port=3133 action=drop comment="deny BackOriffice"
6 K5 i8 G6 K" P8 h9 t' `2 |" _- H
8 V/ l. Z. b" B! y. C  a  o) N) C: Q) Y: j# \

& t5 @& W- U8 R# N9 T& j0 I
在 icmp-chain 允许相应需要的 icmp 连接:add chain=icmp protocol=icmp icmp-options=0:0 action=accept comment="drop invalid connections"
5 a/ y* o- b) J1 T. J
add chain=icmp protocol=icmp icmp-options=3:0 action=accept \
  r% J1 V0 {( b: a0 s% X; |
comment="allow established connections"
) h) C9 W  i5 k
add chain=icmp protocol=icmp icmp-options=3:1 action=accept \) M; h4 Y+ K/ {1 L$ q2 p+ ^
comment="allow already established connections"
" R  h& ?2 I$ ~$ S1 V$ y
add chain=icmp protocol=icmp icmp-options=4:0 action=accept \! C( q( s. m# W
comment="allow source quench"
; b4 z# ^( b9 I/ i  z
add chain=icmp protocol=icmp icmp-options=8:0 action=accept \
) L& T3 _7 ]' m8 Y$ e0 i% x
comment="allow echo request"
- t. @) ]5 s5 |, U1 G" O% u
add chain=icmp protocol=icmp icmp-options=11:0 action=accept \: v2 X; @7 X$ E
comment="allow time exceed"' L' z( z! Z" o5 ^6 O9 z3 G
add chain=icmp protocol=icmp icmp-options=12:0 action=accept \
. x$ d7 K* f5 j4 l* P  ^
comment="allow parameter bad"/ V5 y% j- }$ ^& Z- Y( R
add chain=icmp action=drop comment="deny all other types"- R; ^% g/ a3 R& x, Z2 j9 \% _' c
# Z$ H! m6 ~, j6 G- P
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2017-6-25 18:17

Powered by Discuz! X3.2

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

返回顶部 返回列表