查看: 364|回复: 0

[RouterOS] Firewall防火墙规则事例

[复制链接]

主题

好友

561

积分

中尉

签到天数: 35 天

[LV.5]常住居民I

发表于 2016-9-22 16:55 |显示全部楼层
TG-NET
Anywlan微信公众号
防火墙规则事例! B& S# W+ r2 T$ F. [

5 q2 Y% _& f0 c/ [' W
我先从 input 链表开始,这里是对所有访问路由的数据进行过滤和处理:
从 input 链表的第一条开始执行,这里一共有三条规则:
& w: P% ]1 J8 J1 u7 d! q1 M. p
: l6 _2 z0 X3 v" g0 [2 s
0 ;;; 接受你信任的 IP 地址访问(src-address=填写信任 IP,默认允许任何地址)chain=input src-address=192.168.100.2 action=accept( ?/ k' u1 [) h! A
7 n! j' y6 e' Z$ W

6 c, t, u; E# v4 }
1 ;;; 丢弃非法连接: ~6 r; n* p3 \3 ^1 k' a
chain=input connection-state=invalid action=drop
. |7 [# b( I. ~6 w
2 ;;; 丢弃任何访问数据
' o) C2 _& d) f+ r
chain=input action=drop3 q5 n/ |  F( B6 p/ ^3 K+ m

; `1 \% r/ F8 a. z; Z
下面是 forward 链表& ?* |1 I& T0 [. R/ a: j' Q4 [8 u0 J
forward 链表,一共有 7 条规则,包括两个跳转到自定义链表 ICMP 和 virus 链表:3 t( r% g. ~0 u* J' E

4 T9 m( Q& N1 g6 D3 y
0 ;;; 接受已建立连接的数据) w: J' C; H0 A% p( u4 g
chain=forward connection-state=established action=accept5 F/ ]' `: ]2 V- t# T
1 ;;; 接受相关数据
9 G: X# h/ q. v- M1 X7 \3 {% ]1 ~
chain=forward connection-state=related action=accept
6 {3 Q' M& W7 i1 g! ?' |# C
2 ;;; 丢弃非法数据包
( z- w9 g3 S4 d

$ c$ q& y# r, g* A
chain=forward connection-state=invalid action=drop! D4 O( h3 @+ J& e
3 ;;; 限制每个主机 TCP 连接数为 80 条
# C/ ?: J4 m( v9 r; ^
chain=forward protocol=tcp connection-limit=80,32 action=drop0 A5 b3 r- m5 e" A
4 ;;; 丢弃掉所有非单播数据/ l) L0 n  m2 v0 ?
chain=forward src-address-type=!unicast action=drop8 ?, T9 b# {, S
5 ;;; 跳转到 ICMP 链表
8 R, Q0 J$ t/ x8 B8 k! J% Q0 i$ A
chain=forward protocol=icmp action=jump jump-target=ICMP
- U, G. Q  V( I. K2 j" Y, h5 K
6 ;;; 跳转到病毒链表
# a6 {7 z2 @$ I4 c: J: ~
chain=forward action=jump jump-target=virus
) h% }( [' v5 Z% n' y% {6 g% c0 w8 L
" v/ n5 h$ @# K7 c
forward 工作过程如下:  6 t" G! V& O+ D& s
6 ?" k6 J& `; v9 |7 H9 E4 O: E; ], |
在自定义链表 ICMP 中,是定义所有 ICMP(Internet 控制报文协议),ICMP 经常被认为是 IP 层的一个组成部分。它传 递差错报文以及其他需要注意的信息。ICMP 报文通常被 IP 层或更高层协议(TCP 或 UDP)使用。例如:ping、traceroute、 trace TTL 等。我们通过 ICMP 链表来过滤所有的 ICMP 协议:( h& I- U( H" y. K! H& k

& }1 _( Q4 \" T- |  f0 s5 f
ICMP 链表操作过程:
" e; @* c9 m3 o2 O
% q& h) y2 W$ J
0 ;;; Ping 应答限制为每秒 5 个包# E! s' W" @+ Z8 D: b
chain=ICMP protocol=icmp icmp-options=0:0-255 limit=5,5 action=accept
7 x3 j- V. ?* ^+ Y' y1 Q  E3 G
1 ;;; Traceroute 限制为每秒 5 个包: s; U7 v4 }/ P" p8 \( u& x

- }  |' V1 W1 v+ p- M7 v3 T
chain=ICMP protocol=icmp icmp-options=3:3 limit=5,5 action=accept
+ `# c! f3 q7 q, W1 K1 R$ c( r
2 ;;; MTU 线路探测限制为每秒 5 个包% @5 o5 L% Y0 ^6 A8 ~: k0 i$ t! P
chain=ICMP protocol=icmp icmp-options=3:4 limit=5,5 action=accept% r, e) K% F! {3 e8 g4 ?, @
3 ;;; Ping 请求限制为每秒 5 个包  n. F1 _2 W0 A! k" Z7 W
chain=ICMP protocol=icmp icmp-options=8:0-255 limit=5,5 action=accept
& p. _. l8 o0 o$ ~: h" B
4 ;;; Trace TTL 限制为每秒 5 个包! S1 i. P' v( x/ d
chain=ICMP protocol=icmp icmp-options=11:0-255 limit=5,5 action=accept
5 m# m. `" p) G! j3 O0 @
5 ;;; 丢弃掉任何 ICMP 数据. O" x6 I# f  o
chain=ICMP protocol=icmp action=drop
, f" E) K# f- h, N
6 r% p) ?# `2 b- W" b) E/ J
ICMP 类型:代码值9 g" p5 l3 T+ P3 w/ c
% ]: m1 }7 d8 c' @4 c
通过指令保护你的路由器和相连接私有网络,你需要通过配置防火墙丢弃或拒绝 ICMP 协议的传输。然而一些ICMP 数据包则需要用来维护网络和故障判断用。7 {! o5 ?7 C. D' p

3 u$ Q2 F- I' u4 S+ z* d
下面是 ICMP 类型列表:通常下面的 ICMP 传输建议被允许通过
7 T0 @1 E8 ^2 {) u6 p% F& X9 r

; H2 ^$ [( L. S
Ping9 e& n& j$ o6 O
) q3 C! A: C6 `8 D! @2 `
o 8:0 – 回应请求6 e  q# R8 _$ S& I
3 i- J0 O1 _8 ]5 I. ?
o 0:0 – 回应答复+ z: `* e" o/ ]9 E* B
; ^" F& [2 E0 S* n$ P8 i( B
Trace% Q  @" P& N: S  z# j2 W6 t! x
$ t' }' K) e) t2 e
o 11:0 – TTL 超出, ?) M' G$ v- |& X

* R2 j0 i; E$ N
o 3:3 – 端口不可到达
9 o5 G) h2 c, f' \& R. V! R
1 P3 M1 y* v, o3 `! S( b# w/ {+ p
路径 MTU 探测
, ?, u/ E* M( s% W
7 h% x: ~  {6 L) i) d& f& G
o 3:4 – 分段存储 Fragmentation-DF-Set  S# K3 ]4 D- x' X! n' f
0 f7 t! F7 @8 t* G* ]& N1 a
一般 ICMP 过滤建议:
( e- x5 U: S& {& `* s  W

  U9 b) m" o3 ^* p8 d
-- 允许 ping—ICMP 回应请求向外发送和回应答复进入
! Y7 i6 F0 k+ x  {) B0 u% _% B
* w7 }0 @  l9 m0 S1 `; S: z/ Y/ T$ g
-- 允许 traceroute—TTL 超出和端口不可到达信息进入. H$ j4 R3 s2 f' x; ^; e

7 Y5 r- p: p* m* {
-- 允许路径 MTU—ICMP Fragmentation-DF-Set 信息进入/ ~! d0 Z6 ~5 B9 M7 K% O9 d; f) z
2 u1 b: H1 `# o0 m' T+ ^" i5 t
-- 阻止其他任何数据
" v9 K, B% u( T  B) u8 d: k' Y$ X

+ `# E0 a  C; s4 p
在 virus 链表中过滤常见的病毒,我可以根据需要在该链表中添加新的病毒对他们做过滤:
阻止不必要的 IP 广播:+ _4 E( F$ G0 Y  M8 _$ ?
0 I8 `' h' ]4 Y  f: 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=drop9 B' ]3 b* k+ A
9 [% d' S0 v% u8 ^
建立新的跳转数据链(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
- C6 p) ~" i/ r) v6 G" l8 L; g8 z9 _7 H* P; @9 [0 e
- Q3 q+ {% V& L( d3 t: F! F# m

% @# H5 w; S' D
建立 tcp-chain 并拒绝一些 tcp 端口:
3 B* y' |/ u8 y0 Z+ ~5 v. e; z

. P7 s& B" P* @* C1 k2 R
add chain=tcp protocol=tcp dst-port=69 action=drop comment="deny TFTP"
3 v2 M8 G2 L4 ~' R# q: W
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"/ _9 j$ k" r4 \) n/ K
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"
# T9 c/ `" G5 g: U4 h
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 J" h0 Q8 C6 @- `$ x
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"9 J2 I7 h! `% P+ L3 S3 V, F

- P0 Y9 O" V' L$ j5 Z3 c7 b; o6 h0 H
在 udp-chain 中拒绝非法的 udp 端口 Deny udp ports in udp chain:add chain=udp protocol=udp dst-port=69 action=drop comment="deny TFTP"3 o6 B" c6 }9 W6 p% V# |1 Q! f
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"
* M) u# L" J9 |. `5 k' H5 ~; i: c- k" ]add chain=udp protocol=udp dst-port=2049 action=drop comment="deny NFS"
& Y0 f, S7 e1 ?% ^  R' P
! i- E5 Q+ L" @; {add chain=udp protocol=udp dst-port=3133 action=drop comment="deny BackOriffice"
2 A! Z/ c7 l* _, u0 n; t5 \% l! A
# v1 ]" O. Q* u

* f/ Z! M2 j8 R! I
在 icmp-chain 允许相应需要的 icmp 连接:add chain=icmp protocol=icmp icmp-options=0:0 action=accept comment="drop invalid connections", N: t' k% d" W8 i
add chain=icmp protocol=icmp icmp-options=3:0 action=accept \, k) `( @% i9 m, t7 t
comment="allow established connections"
9 U) Y6 i& `1 J
add chain=icmp protocol=icmp icmp-options=3:1 action=accept \# T0 X6 t- t* S0 k
comment="allow already established connections"
# m- h) S$ q: E! D0 P1 v' N6 s
add chain=icmp protocol=icmp icmp-options=4:0 action=accept \
% N' B: j! Q' i; n4 x& e
comment="allow source quench"
4 @4 w* U/ C# k* T
add chain=icmp protocol=icmp icmp-options=8:0 action=accept \
* }) R7 i7 v# h0 L: A7 E
comment="allow echo request"
( E  P& o2 j; A! g
add chain=icmp protocol=icmp icmp-options=11:0 action=accept \. U: D7 ~- {3 `2 ~/ {
comment="allow time exceed"/ q9 x- X# g! l; `( @! M" X% Y' h
add chain=icmp protocol=icmp icmp-options=12:0 action=accept \1 F8 Q5 B( T1 M5 L: Z4 `$ I- \
comment="allow parameter bad"
# x3 e5 o' L( ^, T  m/ p
add chain=icmp action=drop comment="deny all other types"
* N: U8 o9 ^# t* d! j! c( o. b

- X1 O/ J4 H6 N0 T
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2016-12-3 08:18

Powered by Discuz! X3.2

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

返回顶部 返回列表