查看: 432|回复: 0

[RouterOS] Firewall防火墙规则事例

[复制链接]

主题

好友

567

积分

中尉

签到天数: 35 天

[LV.5]常住居民I

发表于 2016-9-22 16:55 |显示全部楼层
Anywlan微信公众号
防火墙规则事例
4 F6 e3 X2 }4 v, ?: `
! X2 a) u) x! l" c. V0 K1 T( |; p
我先从 input 链表开始,这里是对所有访问路由的数据进行过滤和处理:
从 input 链表的第一条开始执行,这里一共有三条规则:
2 q% i) d2 @% k
; {! j' `3 \0 h7 K0 @# j
0 ;;; 接受你信任的 IP 地址访问(src-address=填写信任 IP,默认允许任何地址)chain=input src-address=192.168.100.2 action=accept5 s! t. a9 F. a# P9 k( O6 @# n

" P. j( C% \" K# |: k1 R+ v
* U6 o- _4 a5 \1 A9 Z( V' Q1 \3 M
1 ;;; 丢弃非法连接
2 ]' q3 R( q( _; E
chain=input connection-state=invalid action=drop
4 f9 C4 p" R+ S5 a
2 ;;; 丢弃任何访问数据2 o% j3 b8 r6 j
chain=input action=drop, H( T2 a( M  P) Z
; m0 C7 `( A* g. ~
下面是 forward 链表
  Y) U- E; j: W% ?+ k
forward 链表,一共有 7 条规则,包括两个跳转到自定义链表 ICMP 和 virus 链表:; {$ w, _3 I. v
: R) K9 [. a2 [3 S7 j
0 ;;; 接受已建立连接的数据
: r" n% Y$ S# q9 ~) I7 {& f7 m; T
chain=forward connection-state=established action=accept
- L0 H9 |/ k3 p3 k4 v) x7 v0 F
1 ;;; 接受相关数据6 _) G3 C0 h2 F" w* T
chain=forward connection-state=related action=accept
1 `+ t1 m- j) }- j- f* u: k4 ?8 F
2 ;;; 丢弃非法数据包
# K- J( j3 p8 c0 b: G

5 X( b& z! p; R, T( D8 `- p# o5 }
chain=forward connection-state=invalid action=drop
! T! o) P1 q! [7 o  }
3 ;;; 限制每个主机 TCP 连接数为 80 条
" S6 E0 q4 n2 s/ j2 _/ W' ^
chain=forward protocol=tcp connection-limit=80,32 action=drop: _0 \* V* o+ V3 X5 G
4 ;;; 丢弃掉所有非单播数据- _% P8 F& x, {& A
chain=forward src-address-type=!unicast action=drop9 R5 o$ @8 D) O9 }; N
5 ;;; 跳转到 ICMP 链表
4 l7 k, T5 C5 e6 i$ U1 l
chain=forward protocol=icmp action=jump jump-target=ICMP: U& t" ]( g3 {) x* c
6 ;;; 跳转到病毒链表; h; s3 U" U2 `' _1 Q- [
chain=forward action=jump jump-target=virus; M0 ~, n4 @( U- ?
4 }% p; J. L+ \8 g5 k$ x
forward 工作过程如下:  8 d7 ?7 x& v+ `

- Q* N, S5 ?1 X- p+ U* g& _
在自定义链表 ICMP 中,是定义所有 ICMP(Internet 控制报文协议),ICMP 经常被认为是 IP 层的一个组成部分。它传 递差错报文以及其他需要注意的信息。ICMP 报文通常被 IP 层或更高层协议(TCP 或 UDP)使用。例如:ping、traceroute、 trace TTL 等。我们通过 ICMP 链表来过滤所有的 ICMP 协议:
6 j) d7 H, s2 M5 d( F6 B+ a

1 m* {" i5 s2 Y3 ^5 {; O- ?- z
ICMP 链表操作过程:
0 n! J  g# e' ?6 Z6 x9 l' f$ Z! \

9 A8 e) ?( [* m
0 ;;; Ping 应答限制为每秒 5 个包
/ y0 }) V- Y, h3 \, ]& m: X
chain=ICMP protocol=icmp icmp-options=0:0-255 limit=5,5 action=accept
! h: C. o1 W' y/ X+ F1 M! o) a
1 ;;; Traceroute 限制为每秒 5 个包
) I7 j7 @# y! f9 r; Q
! d# ^8 r8 ?/ Y  V  W3 I- C* @
chain=ICMP protocol=icmp icmp-options=3:3 limit=5,5 action=accept
: a. T5 z# e2 Q
2 ;;; MTU 线路探测限制为每秒 5 个包, {$ R- z: e' ]* `
chain=ICMP protocol=icmp icmp-options=3:4 limit=5,5 action=accept0 Q( A* v4 Y# g& S- F
3 ;;; Ping 请求限制为每秒 5 个包2 D7 n8 K5 v- f
chain=ICMP protocol=icmp icmp-options=8:0-255 limit=5,5 action=accept
, ~7 o, H5 |+ r. V/ B. q( @
4 ;;; Trace TTL 限制为每秒 5 个包
8 _' I* [; ^- c6 Z2 B# g- x
chain=ICMP protocol=icmp icmp-options=11:0-255 limit=5,5 action=accept
/ j1 w% p+ h+ Z( `
5 ;;; 丢弃掉任何 ICMP 数据
5 X. `1 b# Y3 Y/ c+ D" K+ S" g5 m
chain=ICMP protocol=icmp action=drop
! z8 B% W6 Z: L( E& Y

6 O5 b" A, d( E: L  m( X2 \$ G
ICMP 类型:代码值0 ?/ Z4 |3 N- g$ e

9 l! S0 e+ O; ]
通过指令保护你的路由器和相连接私有网络,你需要通过配置防火墙丢弃或拒绝 ICMP 协议的传输。然而一些ICMP 数据包则需要用来维护网络和故障判断用。& v5 w0 v/ k, i# T  Y
) x  S: w* O' R! b% T, J
下面是 ICMP 类型列表:通常下面的 ICMP 传输建议被允许通过
6 C. u2 A7 H1 w+ V$ S) ]0 O

4 Y) F8 L5 e6 B& v7 k: n. F: b
Ping5 ?, T3 a8 `: P! y- L7 a
( J" g. y: q. w5 T9 d7 v5 i
o 8:0 – 回应请求
( I. }" v/ M9 @, v: z
) X7 e$ ]. p9 n; ~3 h: Z
o 0:0 – 回应答复+ o5 m: j: m- ]2 o. L* }$ w% N

( G  F/ ~- X  ]; r
Trace7 }8 ^! w" N' y& w+ B, Y0 I
8 S: w, H7 a+ A* |
o 11:0 – TTL 超出
% k+ d% b# p$ F: [+ ~

8 I7 V6 H* z5 A$ O; C7 N
o 3:3 – 端口不可到达9 N4 \* U, `- A& \$ L2 o* y+ o
2 u! z3 w( @3 R( y  {* V; Q$ t
路径 MTU 探测
7 E/ T% ~( B  P. f7 j

# ^  S5 P( ]* Q- c
o 3:4 – 分段存储 Fragmentation-DF-Set% V( @5 n* N' F% @0 u
) w/ M( x$ C( h8 G, U
一般 ICMP 过滤建议:
9 K' [& E9 C0 w$ ^8 b

4 s% h8 u7 P- _  P
-- 允许 ping—ICMP 回应请求向外发送和回应答复进入
! i& ~2 `- D( v2 ~5 x9 ?2 F

4 v/ n5 R" w! }6 ]7 {# h4 g2 `: h. t
-- 允许 traceroute—TTL 超出和端口不可到达信息进入
+ f9 S- I% Y( M% f( D' M! ^# F

  S% H8 L& P+ Q+ f# }: C9 N
-- 允许路径 MTU—ICMP Fragmentation-DF-Set 信息进入
2 x7 l% _4 K$ e, Y9 J

# ^- w3 d2 E' K
-- 阻止其他任何数据
5 O8 F/ X' \. S3 P! }) g

. r; X% Z# i4 n6 R" B
在 virus 链表中过滤常见的病毒,我可以根据需要在该链表中添加新的病毒对他们做过滤:
阻止不必要的 IP 广播:
1 w- I* N$ C2 p/ z( ^. u

5 e$ K" W# Y! l4 f- p
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=drop8 k5 L3 Z1 [# \7 D7 y

8 e- |4 _. Z, Q; }+ c
建立新的跳转数据链(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% A8 _$ T2 e( H4 b- B
, `7 r+ X/ `# w5 M" i3 O: Y

1 W$ I* S. Q5 P) u. y- f  y
0 P  F  B# t) a  u- A
建立 tcp-chain 并拒绝一些 tcp 端口:5 S5 O  \/ G5 N1 E/ C6 A

# r0 G! }3 v0 [2 h" \
add chain=tcp protocol=tcp dst-port=69 action=drop comment="deny TFTP"
4 B. `$ q  Z3 C( d. j
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"& Q- r' v- s. `) 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"' o. V+ I+ P% k# ]1 I" ^& N  E
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"0 }0 r4 l  Y( W. m2 ]7 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"1 E) e9 [/ ]  q) ]; X/ X" R! ~4 l
6 ^5 X1 ~- }3 J  M3 u
在 udp-chain 中拒绝非法的 udp 端口 Deny udp ports in udp chain:add chain=udp protocol=udp dst-port=69 action=drop comment="deny TFTP"
' j3 M0 |. O: X  [8 H& badd 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"
; E3 ^* v* L+ y. Z) c# v5 jadd chain=udp protocol=udp dst-port=2049 action=drop comment="deny NFS"
7 r+ q0 O' J( J, I: N5 `% i5 E5 F& o# e/ o! w* O" ]0 Q0 s
add chain=udp protocol=udp dst-port=3133 action=drop comment="deny BackOriffice"
  n+ _# F1 w: e9 q2 W! [. A! N$ @8 J& b9 H( P6 [5 _$ h5 u" H

" w2 L7 h: ^" C; x
* ^6 s0 `/ t; Q# z7 Q7 m
在 icmp-chain 允许相应需要的 icmp 连接:add chain=icmp protocol=icmp icmp-options=0:0 action=accept comment="drop invalid connections"
5 w! z2 ^# C& y; z
add chain=icmp protocol=icmp icmp-options=3:0 action=accept \7 r2 J7 N. D% x/ d
comment="allow established connections"/ F) H  W+ N+ r6 O% i8 ~9 f3 g
add chain=icmp protocol=icmp icmp-options=3:1 action=accept \
  v# z% X* g) s( M) c
comment="allow already established connections"
( y( n3 e  Z0 c* k- f
add chain=icmp protocol=icmp icmp-options=4:0 action=accept \
$ e, \( n; D+ E+ u& N- u1 L- z
comment="allow source quench"3 M5 J2 P' z( I# B; g3 c
add chain=icmp protocol=icmp icmp-options=8:0 action=accept \  I9 W6 t3 _& r2 q% [; R/ J
comment="allow echo request"
. D1 e' f( c$ l7 {" Y0 q3 L
add chain=icmp protocol=icmp icmp-options=11:0 action=accept \/ h$ k& _2 }- S
comment="allow time exceed"$ h: L$ ^( R3 G9 F8 T
add chain=icmp protocol=icmp icmp-options=12:0 action=accept \
. h8 d5 M) R3 d
comment="allow parameter bad"
( H3 j0 w: D$ P0 d
add chain=icmp action=drop comment="deny all other types"* A1 @0 j& h" I% _4 z1 c" x+ F
3 u7 n8 H$ ?) d6 ~" I+ @  i
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2017-11-22 03:15

Powered by Discuz! X3.2

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

返回顶部 返回列表