查看: 404|回复: 0

[RouterOS] Firewall防火墙规则事例

[复制链接]

主题

好友

567

积分

中尉

签到天数: 35 天

[LV.5]常住居民I

发表于 2016-9-22 16:55 |显示全部楼层
Anywlan微信公众号
防火墙规则事例
1 T: Y4 G1 N7 e$ Z4 ]  u

6 y: E# D( x/ k& t3 _
我先从 input 链表开始,这里是对所有访问路由的数据进行过滤和处理:
从 input 链表的第一条开始执行,这里一共有三条规则:" t& D% A' I3 ~1 z* ^
1 R$ y0 L3 G8 t, A; N" z4 c) y4 g
0 ;;; 接受你信任的 IP 地址访问(src-address=填写信任 IP,默认允许任何地址)chain=input src-address=192.168.100.2 action=accept
0 O) @) x% ?4 P3 [/ V+ m3 q, W7 z3 ^# T4 H

% l* l& k! l' l, p4 L- l4 y
1 ;;; 丢弃非法连接
( O# k& {: j  k$ l! x7 b
chain=input connection-state=invalid action=drop
1 l- ~3 Z) u& ]' n2 i/ J! j9 Z
2 ;;; 丢弃任何访问数据
; X  b& E7 m; e0 P9 }) S
chain=input action=drop* R) _# W4 J( ^8 F8 J7 A2 K0 A
( v2 N; i% L  [9 k( Z" ^* y3 u6 J
下面是 forward 链表
) k: @" H8 {# N5 v
forward 链表,一共有 7 条规则,包括两个跳转到自定义链表 ICMP 和 virus 链表:
( L2 x1 n; ?: x* A" ?4 n

9 c( ]- f+ D3 Z+ y6 J* x5 q% T
0 ;;; 接受已建立连接的数据
' Z& f5 k# W3 W9 S: J" b
chain=forward connection-state=established action=accept
. t- |6 e" X+ m& I
1 ;;; 接受相关数据9 \  m# b; u' O, s
chain=forward connection-state=related action=accept  v3 E) p4 \3 y
2 ;;; 丢弃非法数据包
$ P) ^/ B' j' C4 {9 X
% ?) Q9 H' e- x
chain=forward connection-state=invalid action=drop
2 {$ V! @. L5 r
3 ;;; 限制每个主机 TCP 连接数为 80 条
, m2 r/ V$ ^* ?  {1 `# _6 G
chain=forward protocol=tcp connection-limit=80,32 action=drop
/ a; |* w" u% N2 x" U5 \
4 ;;; 丢弃掉所有非单播数据
# a! W0 g1 }0 o( w
chain=forward src-address-type=!unicast action=drop. x2 t- R6 ]  q. u
5 ;;; 跳转到 ICMP 链表
& L! o3 V  k2 B
chain=forward protocol=icmp action=jump jump-target=ICMP
2 ?5 k) l0 e3 l4 C; q9 \
6 ;;; 跳转到病毒链表$ T( q# T. Y4 ~: J( |
chain=forward action=jump jump-target=virus# [+ a, f, Y9 K8 e  z

& y7 H  z+ J' X! k0 M. G
forward 工作过程如下:  
/ s! v' M9 c* a! U+ l1 A

. {# }7 j- b% |/ \) I
在自定义链表 ICMP 中,是定义所有 ICMP(Internet 控制报文协议),ICMP 经常被认为是 IP 层的一个组成部分。它传 递差错报文以及其他需要注意的信息。ICMP 报文通常被 IP 层或更高层协议(TCP 或 UDP)使用。例如:ping、traceroute、 trace TTL 等。我们通过 ICMP 链表来过滤所有的 ICMP 协议:- M9 q7 r: z! {0 o% s& J& \& t- P

5 u! S' P$ x( i$ W
ICMP 链表操作过程:3 Y1 l+ I1 b1 y
) R4 V, ^: z0 @7 j5 V. `! H
0 ;;; Ping 应答限制为每秒 5 个包
1 j2 r6 k( v% n" K3 Z$ J2 R/ J
chain=ICMP protocol=icmp icmp-options=0:0-255 limit=5,5 action=accept
: h2 |' j& o" i! I" H. q6 ^
1 ;;; Traceroute 限制为每秒 5 个包2 C' U! y, D1 x- L

. @8 }7 u1 }; }8 u/ M/ ^. M
chain=ICMP protocol=icmp icmp-options=3:3 limit=5,5 action=accept. G; {0 e) w( b8 `( d$ I7 j8 _1 r: i8 ?
2 ;;; MTU 线路探测限制为每秒 5 个包) A' R4 f) x4 |/ d% q
chain=ICMP protocol=icmp icmp-options=3:4 limit=5,5 action=accept
* }6 E* d& {% F5 R
3 ;;; Ping 请求限制为每秒 5 个包+ k  a: U0 E- Q/ b- G  b2 _
chain=ICMP protocol=icmp icmp-options=8:0-255 limit=5,5 action=accept% U6 _' k& K, v- f, q
4 ;;; Trace TTL 限制为每秒 5 个包
  I+ R4 ?% f, m3 V  P* e$ Q
chain=ICMP protocol=icmp icmp-options=11:0-255 limit=5,5 action=accept5 u. N- z6 F* X! ]5 t7 s
5 ;;; 丢弃掉任何 ICMP 数据: o' ?( u  ?" n% k. i  k$ Z
chain=ICMP protocol=icmp action=drop' ^2 S  ]; ?9 {/ Q0 I# u. B: W- N
# |2 _3 S& k' L# l7 i
ICMP 类型:代码值
& G2 ~, c& _, N/ V/ e) M0 U

+ W& ]* O6 K: I( m; [9 t
通过指令保护你的路由器和相连接私有网络,你需要通过配置防火墙丢弃或拒绝 ICMP 协议的传输。然而一些ICMP 数据包则需要用来维护网络和故障判断用。
/ |  W- ~, K' }- |1 P  e
5 a2 \. l# C% J
下面是 ICMP 类型列表:通常下面的 ICMP 传输建议被允许通过6 n% x5 K/ x8 A* s) z7 h/ X+ D; ^8 n
7 n" t  S- }9 E! m* q' f. Z+ C
Ping
  J3 j" V" P1 {$ r/ Q' B
9 k/ O$ ]) _* ~# w- j. [  U: z
o 8:0 – 回应请求
3 f+ ]; y5 h# W% a- X* k: ~5 s

0 W* t; W) |. P: n+ D0 M8 ~* }* ]5 Y" {
o 0:0 – 回应答复
; e. B7 o+ ?" s. p0 ?

4 E& h' I& M: C# Y1 C
Trace
' n& {$ p# ^1 G( P
  Y& T) Z2 u) X: Q
o 11:0 – TTL 超出
8 w* Y! f* Q/ _% v; b9 N. ^& ^9 r* l

0 ?: S  K5 m1 p6 r
o 3:3 – 端口不可到达
8 q6 k% b: q+ K) M$ f5 y' q# |$ o

& P1 [9 F% L/ h
路径 MTU 探测( [7 A& L; |+ Q. M: k) E

9 q1 w3 @8 W. M4 N
o 3:4 – 分段存储 Fragmentation-DF-Set
2 r* o1 A1 R2 R' o
0 K# P) o  R! W/ w8 o; D
一般 ICMP 过滤建议:
5 e$ @, O* a* c/ \: t
# R5 ?1 Q3 Q6 Z2 O/ K& |
-- 允许 ping—ICMP 回应请求向外发送和回应答复进入* y7 N$ |9 a# h8 J# E+ Q

! u" P  p4 j2 ^" `
-- 允许 traceroute—TTL 超出和端口不可到达信息进入1 U/ p9 y& v  q9 P8 b5 Z
# l2 L1 [' ~$ g) Y' _9 g. h$ n
-- 允许路径 MTU—ICMP Fragmentation-DF-Set 信息进入% G* _$ ^# \" y4 h: e$ C* k
$ n+ R% p3 ~2 ?+ H- _4 f& t
-- 阻止其他任何数据) t. W2 f5 M+ ~" d, g% o
& }7 K% U0 `+ x* e3 w" \
在 virus 链表中过滤常见的病毒,我可以根据需要在该链表中添加新的病毒对他们做过滤:
阻止不必要的 IP 广播:. Z5 |, n' ]) F3 R: l7 }
1 b7 P% o% ]; k4 Q
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
8 k* A: `8 ~' K

* F, B1 u4 L6 F
建立新的跳转数据链(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=icmp1 Y. {$ ~! D% t4 Y$ e) f9 I

8 C8 R7 E1 G& n7 H

& Z0 G' N# y, c& _3 ?. t

, O; U8 o7 Y: R6 N/ e: F( V
建立 tcp-chain 并拒绝一些 tcp 端口:
. v* r9 y! Z2 p+ c

: }6 j6 l1 G+ p8 b- _9 ]
add chain=tcp protocol=tcp dst-port=69 action=drop comment="deny TFTP"5 O& l/ W* b0 c' ?
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"
! u5 ]0 }  A7 e% }! z9 c& 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". t8 d  s# E" X, _2 _" P) L
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"
% y9 c0 H9 W0 W7 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"
, k1 W! R- c3 [; F1 Q' r+ U7 G

$ J! C$ \4 ?: N# Z" g
在 udp-chain 中拒绝非法的 udp 端口 Deny udp ports in udp chain:add chain=udp protocol=udp dst-port=69 action=drop comment="deny TFTP"
& v3 i  z. |2 Q9 Dadd 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"
! a% {; W) H3 d; d/ hadd chain=udp protocol=udp dst-port=2049 action=drop comment="deny NFS"! i8 Z) }6 B6 T( r

' @' x2 U( j  x: S7 ~: g3 Jadd chain=udp protocol=udp dst-port=3133 action=drop comment="deny BackOriffice"& f0 h1 [: k* M3 G# ^

& U/ W1 l' V# o  |/ k* G4 i: g4 i: Z$ u0 t) U4 I1 M& S

: w3 o6 x  b% x! L2 y5 l% a
在 icmp-chain 允许相应需要的 icmp 连接:add chain=icmp protocol=icmp icmp-options=0:0 action=accept comment="drop invalid connections", n/ [5 |: O9 [9 ]
add chain=icmp protocol=icmp icmp-options=3:0 action=accept \
) j, f" Y1 e2 o- u
comment="allow established connections"4 K$ O% h" r( E3 q& I) K, f
add chain=icmp protocol=icmp icmp-options=3:1 action=accept \& R4 l3 X5 C$ L! T: ^
comment="allow already established connections"
" A: O3 O6 n4 X
add chain=icmp protocol=icmp icmp-options=4:0 action=accept \+ x+ s* |8 }7 q1 z
comment="allow source quench"' y, {8 h8 b6 j; h; k; w+ M
add chain=icmp protocol=icmp icmp-options=8:0 action=accept \/ y1 `* S6 E( j) X
comment="allow echo request"  E2 @9 T* R7 T0 B; T# [
add chain=icmp protocol=icmp icmp-options=11:0 action=accept \
) y! H3 @0 I- M% n
comment="allow time exceed"& Y* h3 E& H% T( a. P
add chain=icmp protocol=icmp icmp-options=12:0 action=accept \& u3 P9 r2 {5 ?
comment="allow parameter bad"0 B3 q6 p9 S3 \! o6 d
add chain=icmp action=drop comment="deny all other types"$ m/ o1 |) ?0 G) g& S3 V; R

( T5 O4 Y) v$ _2 h" M$ n/ D8 ^
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2017-4-28 04:38

Powered by Discuz! X3.2

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

返回顶部 返回列表