查看: 383|回复: 0

[RouterOS] Firewall防火墙规则事例

[复制链接]

主题

好友

566

积分

中尉

签到天数: 35 天

[LV.5]常住居民I

发表于 2016-9-22 16:55 |显示全部楼层
TG-NET
Anywlan微信公众号
防火墙规则事例
: b) G  O' i! j2 \2 C$ N) K' {

- B8 q5 h( A5 X% H. ]7 u1 c
我先从 input 链表开始,这里是对所有访问路由的数据进行过滤和处理:
从 input 链表的第一条开始执行,这里一共有三条规则:
, n4 j' f; \) m. y9 Q
& U5 }) X. I7 e
0 ;;; 接受你信任的 IP 地址访问(src-address=填写信任 IP,默认允许任何地址)chain=input src-address=192.168.100.2 action=accept
9 v' R- e8 x2 H1 ~9 w6 x
, z% H4 F( J6 {# _$ n

6 o# l( Z% Y0 m& ]( B0 L1 _* k8 U
1 ;;; 丢弃非法连接4 P7 g  [) I2 L- K0 Y
chain=input connection-state=invalid action=drop3 u6 O: t2 @  Z" _6 e7 h
2 ;;; 丢弃任何访问数据
$ Z8 e' g5 H+ B& f
chain=input action=drop9 c* O! V4 H% I

* g4 I$ b" A  K) t8 K% n9 v7 h; m+ v* q
下面是 forward 链表7 R# q; C2 m3 ]0 `
forward 链表,一共有 7 条规则,包括两个跳转到自定义链表 ICMP 和 virus 链表:; b6 o- Y) T4 U/ F
+ r1 O* r$ Y+ V
0 ;;; 接受已建立连接的数据
+ a8 ~9 y' A: l& |7 }
chain=forward connection-state=established action=accept
1 Y& M* R8 u* O: ]
1 ;;; 接受相关数据
( N4 A( K1 a) O* }
chain=forward connection-state=related action=accept( y8 L+ [: D7 n# O9 t4 u. x
2 ;;; 丢弃非法数据包' i( o0 F+ s9 P; b) Y( c
4 ^2 D3 P& g/ k
chain=forward connection-state=invalid action=drop* c5 v7 ^# j+ N2 ~( ^1 Q
3 ;;; 限制每个主机 TCP 连接数为 80 条
- Y. M6 u+ W* @- A9 Z/ T
chain=forward protocol=tcp connection-limit=80,32 action=drop' u) `( U# t( r# ?# k
4 ;;; 丢弃掉所有非单播数据
" A& h7 k1 C/ C+ V$ ~
chain=forward src-address-type=!unicast action=drop
, @" \# ?% J; |% k8 O8 z/ }+ d
5 ;;; 跳转到 ICMP 链表
' }3 {& |' F6 b  K) w% d
chain=forward protocol=icmp action=jump jump-target=ICMP- |& w/ k3 H5 m
6 ;;; 跳转到病毒链表
4 m( d! X" T* K4 S9 @/ c/ I
chain=forward action=jump jump-target=virus
" z" d3 Q; Z' g# u$ m7 E& @4 X
' d# y6 q9 ]  W# s
forward 工作过程如下:  , Q  c+ ?. _5 Z* V
2 J6 I8 T% V, P- C
在自定义链表 ICMP 中,是定义所有 ICMP(Internet 控制报文协议),ICMP 经常被认为是 IP 层的一个组成部分。它传 递差错报文以及其他需要注意的信息。ICMP 报文通常被 IP 层或更高层协议(TCP 或 UDP)使用。例如:ping、traceroute、 trace TTL 等。我们通过 ICMP 链表来过滤所有的 ICMP 协议:
9 N# |' [: p( W& f+ |

) d  Z7 H+ @$ K8 O" v7 r: e
ICMP 链表操作过程:5 \+ w2 f/ v: P) S8 s7 T
& K# X/ r2 |  N! _" Y
0 ;;; Ping 应答限制为每秒 5 个包. O) o" d# P+ V$ k  ^: ?  l8 h/ b
chain=ICMP protocol=icmp icmp-options=0:0-255 limit=5,5 action=accept
0 S+ X0 ^$ S! E( c( f& r/ F0 F
1 ;;; Traceroute 限制为每秒 5 个包
' L! d. e* T1 N. V' y3 Q3 z7 M% z

" m. N; }  V3 i1 Q5 \  e, _* ?
chain=ICMP protocol=icmp icmp-options=3:3 limit=5,5 action=accept' U* {5 U& k: _1 d, m
2 ;;; MTU 线路探测限制为每秒 5 个包- h9 z/ Y* K/ R5 ?
chain=ICMP protocol=icmp icmp-options=3:4 limit=5,5 action=accept: l2 [5 w2 R8 o0 E: |" j6 {4 m
3 ;;; Ping 请求限制为每秒 5 个包
1 S# z+ H: o) D) d
chain=ICMP protocol=icmp icmp-options=8:0-255 limit=5,5 action=accept
" V" I; K  S! |, n: ?
4 ;;; Trace TTL 限制为每秒 5 个包
- \' r2 p" q( F/ n4 t
chain=ICMP protocol=icmp icmp-options=11:0-255 limit=5,5 action=accept
- Z) c1 x& ?9 P
5 ;;; 丢弃掉任何 ICMP 数据
9 A% i5 r; O+ _% X9 f3 Y% X  g8 c, \
chain=ICMP protocol=icmp action=drop
% }$ a8 d! d" S! {: l

) o; }5 K/ Z- F7 \5 K' e1 K; ^
ICMP 类型:代码值; }# H8 q' j7 V& ?, ^; Z
* k* F& ?1 N! |; I9 R$ I0 z
通过指令保护你的路由器和相连接私有网络,你需要通过配置防火墙丢弃或拒绝 ICMP 协议的传输。然而一些ICMP 数据包则需要用来维护网络和故障判断用。
# a6 h+ d6 g: y  |: S. {) Y/ @) ^
/ \- w) J, R- a$ u5 }. \
下面是 ICMP 类型列表:通常下面的 ICMP 传输建议被允许通过
) [- O# b. w0 w% \) L$ x6 g# f
: I" n. }$ A" X1 ~. K6 J" o
Ping
3 r) H$ O1 e1 }4 q: D% p* D

* `0 G  [( Z# i8 `. G3 [
o 8:0 – 回应请求( l' C* `3 Y5 z  ^$ |% o. e

/ h, M6 h3 U( \/ H. A9 l0 y
o 0:0 – 回应答复- F5 O# b4 C7 P1 Y6 J5 V( Y

* L$ T+ W3 h$ i! C
Trace
+ I& c2 u, A  B+ Y: u

" Q. p4 _9 A. \3 h  G
o 11:0 – TTL 超出
& Y  _: w$ r. T, E+ T" R
9 D- M" n7 [9 I; F1 b
o 3:3 – 端口不可到达! P( T* R% y2 [: Y# R# @6 s, x3 f

2 J4 T" ]2 t) I! J- q
路径 MTU 探测' }8 O2 ?& L9 J1 N! p
) u- X, a2 q: u% i- a
o 3:4 – 分段存储 Fragmentation-DF-Set& c0 M( d# V7 X, R0 |" q) C
* \6 M3 ]; R4 A: s
一般 ICMP 过滤建议:* C& S9 A8 X, Y- p+ s8 o

4 Q2 Q9 P; P) D' c) V' V$ |% L
-- 允许 ping—ICMP 回应请求向外发送和回应答复进入
& l. t+ s! C) m% I2 e+ J' ^

. P* \0 K8 Y; B) p6 f9 c7 s
-- 允许 traceroute—TTL 超出和端口不可到达信息进入
8 V' s7 o4 S& P' V! L' D

' {( v% D" z; o
-- 允许路径 MTU—ICMP Fragmentation-DF-Set 信息进入7 T1 z0 y' s- e- f7 a

/ t8 H- Z$ i1 q; `
-- 阻止其他任何数据0 i2 F) f" ]& v5 n2 c( V" k( I

; U; W$ G7 `4 r  M7 h: F  r
在 virus 链表中过滤常见的病毒,我可以根据需要在该链表中添加新的病毒对他们做过滤:
阻止不必要的 IP 广播:
( M3 ?# B% W3 M- E! \" T2 N
  ?8 Q8 U9 F- P8 y+ |( v
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/ j4 M3 x+ q- P) m" X1 t5 u' Z

7 E: u+ L* O# l7 @  x$ [, q; Q' _
建立新的跳转数据链(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: t- F3 u* R. l

* p# W; t( h. u: {

* |& E8 i1 v6 Q/ X, s7 K. \5 S

- s; g5 U2 x3 B# {
建立 tcp-chain 并拒绝一些 tcp 端口:
6 L0 w  Q% {' a) x5 I# `

  x, g9 K9 E$ ~" l) J! h( q
add chain=tcp protocol=tcp dst-port=69 action=drop comment="deny TFTP"
: O) Z# ^7 \* @
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"
' |- }% n/ f6 X$ m
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"! n) ]( F7 Y" D( @8 }* K+ C+ y
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"- a; P4 e6 t/ 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"
+ q7 b$ R5 p, I8 t
( y- C2 Q5 \- b
在 udp-chain 中拒绝非法的 udp 端口 Deny udp ports in udp chain:add chain=udp protocol=udp dst-port=69 action=drop comment="deny TFTP"
- O7 W0 W# l0 R$ sadd 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"* H9 Y  D& S' K2 c8 a% l4 i' E
add chain=udp protocol=udp dst-port=2049 action=drop comment="deny NFS"" X# K: P4 ?# U9 Y
0 J: f8 Z/ s. U# T# Z- H6 f5 a
add chain=udp protocol=udp dst-port=3133 action=drop comment="deny BackOriffice"* e0 j- ?" f$ W8 F& k
3 ?( X+ D# N# J% _+ [
7 {5 ]9 v8 L# t5 v) _* e0 o3 p
# T# w/ A' x! |: E' U: |+ c* x4 y
在 icmp-chain 允许相应需要的 icmp 连接:add chain=icmp protocol=icmp icmp-options=0:0 action=accept comment="drop invalid connections"
9 W5 h& B/ i$ X& r- w
add chain=icmp protocol=icmp icmp-options=3:0 action=accept \
5 \& F- W) C2 n; T
comment="allow established connections"
: W  D1 P7 t% W5 c3 |# Y' V
add chain=icmp protocol=icmp icmp-options=3:1 action=accept \# W* s; \; x% G6 G$ @
comment="allow already established connections"
) g. E/ ]. q2 W* i
add chain=icmp protocol=icmp icmp-options=4:0 action=accept \
& E3 X3 Y3 ], |/ A1 \7 g) Z
comment="allow source quench": X6 F4 W; m6 `, v7 Z
add chain=icmp protocol=icmp icmp-options=8:0 action=accept \& q$ u0 j- V4 a! ?1 ^
comment="allow echo request"( h* V6 s4 F4 Z& J/ p: @. ^
add chain=icmp protocol=icmp icmp-options=11:0 action=accept \
1 J+ l8 K6 b/ s) Q" M
comment="allow time exceed"
/ R& y: i) b4 t# P  r$ K* V! `
add chain=icmp protocol=icmp icmp-options=12:0 action=accept \7 g$ Z* d) b8 @
comment="allow parameter bad"( }9 i" w" R9 L
add chain=icmp action=drop comment="deny all other types"
: f9 s0 _3 }* Z1 d* D

4 ?5 T- c9 J6 o: e
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2017-1-24 17:18

Powered by Discuz! X3.2

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

返回顶部 返回列表