查看: 457|回复: 0

[RouterOS] Firewall防火墙规则事例

[复制链接]

主题

好友

567

积分

中尉

签到天数: 35 天

[LV.5]常住居民I

发表于 2016-9-22 16:55 |显示全部楼层
Anywlan微信公众号
防火墙规则事例
( N5 \4 p% u1 K( u2 K
4 d, I1 [' `! r
我先从 input 链表开始,这里是对所有访问路由的数据进行过滤和处理:
从 input 链表的第一条开始执行,这里一共有三条规则:
) ~2 a6 Z! a& e# T0 i+ k, i
5 {9 @# @  [9 D, T& Y7 |, X
0 ;;; 接受你信任的 IP 地址访问(src-address=填写信任 IP,默认允许任何地址)chain=input src-address=192.168.100.2 action=accept1 A( a- E! S# [8 \0 W

8 {% a# m; u+ I& V5 ^( ?- {
6 w( t& ^2 q1 ]7 r* Y! i2 C+ t1 @' F
1 ;;; 丢弃非法连接
# B* E2 X, K* ?! a% _" m9 D2 S7 M) l% S
chain=input connection-state=invalid action=drop
. p" d7 X' N4 z' A* C5 l
2 ;;; 丢弃任何访问数据' k5 e: I( _3 O8 S# U" @
chain=input action=drop5 T/ k7 T  E! m& S9 m
, u% o9 G! U: w5 W* O5 D# C' T
下面是 forward 链表# D# V7 i6 {: Z3 T* l
forward 链表,一共有 7 条规则,包括两个跳转到自定义链表 ICMP 和 virus 链表:6 K9 K( f3 {: N: y: a0 ~
  f3 Z4 {2 m  Q8 r0 d0 i9 C
0 ;;; 接受已建立连接的数据
$ H/ _+ ^8 G: w: o- B' R
chain=forward connection-state=established action=accept, K8 }, ~7 f. _2 q3 q3 r
1 ;;; 接受相关数据9 X& P! k2 n& H. t4 `1 x7 L
chain=forward connection-state=related action=accept; }+ @! M2 k2 S8 s( h
2 ;;; 丢弃非法数据包% ^) e' w( y5 D, G

5 Z& u6 |3 M& I; O$ a9 y5 K! w- \
chain=forward connection-state=invalid action=drop  i. |$ R* Z5 W. I, \; w' _8 k9 x
3 ;;; 限制每个主机 TCP 连接数为 80 条
' b: f  {: h! G" [7 p
chain=forward protocol=tcp connection-limit=80,32 action=drop* I* l! i$ C$ p0 p% P+ F  W+ x( f
4 ;;; 丢弃掉所有非单播数据* P' M; f) H3 s* U5 e  y4 ~. v6 `
chain=forward src-address-type=!unicast action=drop
) O, r# U% k& `, C& f! R
5 ;;; 跳转到 ICMP 链表
. g* M1 [% p; K' n7 U
chain=forward protocol=icmp action=jump jump-target=ICMP* r) J& p) x) i# ]# C3 h; T% s
6 ;;; 跳转到病毒链表; @5 V1 L5 D  {) H& e/ c+ O
chain=forward action=jump jump-target=virus# }& w) W2 [/ y! M
7 T1 G6 f4 |9 |" _* z& |
forward 工作过程如下:  0 L+ H+ N  E2 ]' U; G( x- x( {& J- n: @
. p+ o. a7 B; U. m& O
在自定义链表 ICMP 中,是定义所有 ICMP(Internet 控制报文协议),ICMP 经常被认为是 IP 层的一个组成部分。它传 递差错报文以及其他需要注意的信息。ICMP 报文通常被 IP 层或更高层协议(TCP 或 UDP)使用。例如:ping、traceroute、 trace TTL 等。我们通过 ICMP 链表来过滤所有的 ICMP 协议:
+ ?7 i+ A% p: Y  K- V- h9 B  a" F
1 P  B8 E0 m$ t6 [+ K9 B- ]0 s5 x
ICMP 链表操作过程:
2 P; ^9 B3 U! h1 K# y! }7 D# h' U

& V+ V: _9 n  Y8 a/ ~, v; g9 t
0 ;;; Ping 应答限制为每秒 5 个包( E8 d0 v7 c0 |, o1 J
chain=ICMP protocol=icmp icmp-options=0:0-255 limit=5,5 action=accept
8 z( Q7 q7 G( E7 w9 C& T
1 ;;; Traceroute 限制为每秒 5 个包
7 E! O# l5 j2 X4 R  `; {* D0 h

; q. O+ i0 O# C3 c5 c  F
chain=ICMP protocol=icmp icmp-options=3:3 limit=5,5 action=accept- S( b2 @$ r1 r# a$ C# x
2 ;;; MTU 线路探测限制为每秒 5 个包* M9 a" a& X1 k
chain=ICMP protocol=icmp icmp-options=3:4 limit=5,5 action=accept2 X: n% K6 L7 a$ m2 J' ~! @
3 ;;; Ping 请求限制为每秒 5 个包
; R3 O& b& h$ o0 j8 u
chain=ICMP protocol=icmp icmp-options=8:0-255 limit=5,5 action=accept! K- a" X& `) @" ~5 E* a& s- v
4 ;;; Trace TTL 限制为每秒 5 个包
. h0 e% D3 h2 S% O; y
chain=ICMP protocol=icmp icmp-options=11:0-255 limit=5,5 action=accept
7 N4 E: @2 g% n
5 ;;; 丢弃掉任何 ICMP 数据4 n* Q  Q7 I# G+ k# J
chain=ICMP protocol=icmp action=drop/ R) G: ~% y; l

0 l) l; e6 y0 e1 M, A$ Z0 q  P
ICMP 类型:代码值
* Y/ R4 C8 S7 k0 |! t: x! N

  W8 s. T8 a, P. C& P
通过指令保护你的路由器和相连接私有网络,你需要通过配置防火墙丢弃或拒绝 ICMP 协议的传输。然而一些ICMP 数据包则需要用来维护网络和故障判断用。* W, n6 ^" s) b( z9 b3 a
8 x; [( H* C4 {) e5 O: w$ e% [" L
下面是 ICMP 类型列表:通常下面的 ICMP 传输建议被允许通过
, M5 Q: p( g5 C: g. x# r0 @5 e: P, d
- q' {5 [# y0 e  `* v
Ping
2 `* H' y. t+ v& d! F7 H8 q

" Q2 A& D7 o: l' K0 N  ?* N
o 8:0 – 回应请求3 Y+ n. ~" @0 f8 g: S' O) Q

0 L& u/ e7 e" W
o 0:0 – 回应答复
$ M. j, r2 ~, u2 G9 X' }+ R6 K

( a. _1 `% i) R" J4 ?
Trace
' e) y: N$ U2 d
, a/ K( ~# m$ w8 g
o 11:0 – TTL 超出; q' }+ P1 S( A
. U) a8 X- E" _
o 3:3 – 端口不可到达
4 x* N8 R) u, d4 u) C6 N2 H  ^

& Q. D6 o8 i- U" B  [
路径 MTU 探测% q$ e: i/ Z/ e! `, |" g

5 _4 q$ }# d+ N* B
o 3:4 – 分段存储 Fragmentation-DF-Set
2 P1 D0 a+ I. Y( B
( ?: }, M- O2 g4 D% B$ W
一般 ICMP 过滤建议:6 O. Y+ s! @0 n/ a' }+ Q4 `. [

9 K) l3 u) `% F3 j( Y8 u) s$ s6 E1 b
-- 允许 ping—ICMP 回应请求向外发送和回应答复进入: k* v: q) y, p: ^: s# o' S1 A
' p$ z  b7 l; E$ J+ a6 w' i5 z
-- 允许 traceroute—TTL 超出和端口不可到达信息进入% n! N6 z# Z# S) \( i; {( R

1 ?9 ?) v, H$ Y+ ?/ C
-- 允许路径 MTU—ICMP Fragmentation-DF-Set 信息进入& E, m" n) g* J9 _( L! V
: L" S5 a/ {4 W1 W$ H& X
-- 阻止其他任何数据# g& M2 m: j8 A1 A

' E( [' }6 ?7 `, ?' M6 u: ?
在 virus 链表中过滤常见的病毒,我可以根据需要在该链表中添加新的病毒对他们做过滤:
阻止不必要的 IP 广播:
4 c5 m) H& D& J' v9 M# ~

3 w- r/ X3 X% r: ~9 {7 j- \9 {
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( \2 m4 [. b8 u3 s/ _; o# G
" C+ i& ^2 a: d2 z7 y1 y0 f! c! i. s
建立新的跳转数据链(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& f2 {2 w$ \/ r6 \* O7 h# P- I5 I

. H5 N+ w6 y3 I; R6 u
: F( Z: _1 j3 k4 y

3 p2 {9 J8 a/ `3 t0 T
建立 tcp-chain 并拒绝一些 tcp 端口:: `+ E$ e/ f$ S' J! t
" ?+ w# C" h! E
add chain=tcp protocol=tcp dst-port=69 action=drop comment="deny TFTP"
, x5 r; ]: p. u  {, K" `
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"
0 y6 V, `& J; H/ r
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"
9 ~( ~9 g* l' t9 `; J0 A
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"
8 |1 j3 G8 t, V: ^- S) M  z
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"& T( y* P  V" x5 G9 ?
) R- ?3 m/ `% z
在 udp-chain 中拒绝非法的 udp 端口 Deny udp ports in udp chain:add chain=udp protocol=udp dst-port=69 action=drop comment="deny TFTP"
& N; y7 R  A. Q1 U. q! F" V: vadd 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"5 g. m/ J8 J% B! b7 h7 T# ]* c3 h! x
add chain=udp protocol=udp dst-port=2049 action=drop comment="deny NFS"
+ S9 b1 v  y/ b2 G8 Z  }4 B* I+ Y) m# T+ {& R8 J, E0 {
add chain=udp protocol=udp dst-port=3133 action=drop comment="deny BackOriffice"( j- D' y' h9 |

9 r2 _$ b" @; s# R! Y. D4 k7 t! w; v' o+ k0 j$ z7 q* P
/ N* ]* z( e5 \2 L
在 icmp-chain 允许相应需要的 icmp 连接:add chain=icmp protocol=icmp icmp-options=0:0 action=accept comment="drop invalid connections"7 N  U; v$ T4 |# M9 m' `) {
add chain=icmp protocol=icmp icmp-options=3:0 action=accept \3 r+ Q% h7 x) a
comment="allow established connections"( N1 e$ y' ]# o# [5 P: B
add chain=icmp protocol=icmp icmp-options=3:1 action=accept \
4 b, c; y+ t8 c# E7 G9 D) W
comment="allow already established connections"9 b+ G; W! B  F4 _9 X5 E, w+ Q* b
add chain=icmp protocol=icmp icmp-options=4:0 action=accept \
& Z- Z9 J( [" T% y* Z0 L1 [+ ]
comment="allow source quench"
! l( E  }% \4 m7 U( a8 i
add chain=icmp protocol=icmp icmp-options=8:0 action=accept \  O- m% Z8 K# p& u0 O1 q+ u
comment="allow echo request"+ @% K9 x9 v1 r/ t$ ^, M
add chain=icmp protocol=icmp icmp-options=11:0 action=accept \
1 m2 K2 ?7 }9 U3 x$ n
comment="allow time exceed"
7 L8 U1 \- M# W6 b
add chain=icmp protocol=icmp icmp-options=12:0 action=accept \
5 }( J' \! m7 B/ P, C  \2 g
comment="allow parameter bad"
4 G& F5 Q! Q+ [1 r, |
add chain=icmp action=drop comment="deny all other types"
7 Y( V: U  ?) B% r' F( I) |
# ^# Y) h1 v1 G" y7 V
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2018-5-23 07:08

Powered by Discuz! X3.2

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

返回顶部 返回列表