查看: 409|回复: 0

[RouterOS] Firewall防火墙规则事例

[复制链接]

主题

好友

567

积分

中尉

签到天数: 35 天

[LV.5]常住居民I

发表于 2016-9-22 16:55 |显示全部楼层
Anywlan微信公众号
防火墙规则事例0 L' r; i1 w6 o4 v( A; v; `, {

0 [; m+ g9 Q/ d1 G5 I
我先从 input 链表开始,这里是对所有访问路由的数据进行过滤和处理:
从 input 链表的第一条开始执行,这里一共有三条规则:
" }" K" U. R- a& l/ {) n9 T0 M; f

8 ]3 s( [% a! H9 l5 O% s
0 ;;; 接受你信任的 IP 地址访问(src-address=填写信任 IP,默认允许任何地址)chain=input src-address=192.168.100.2 action=accept) T: S6 ?$ T0 n# u; {

4 a/ {/ c( |5 U
) F# G' J3 `7 L( p; ]! \, M
1 ;;; 丢弃非法连接
: S2 C* m8 Y7 V, Y' Y3 Z
chain=input connection-state=invalid action=drop
8 w7 N2 D% S4 C5 N' s  g
2 ;;; 丢弃任何访问数据
+ Q! }+ O5 w. i8 n2 e& S
chain=input action=drop5 t& T5 T' i  p4 W% X% Z

: ?( ~4 Y, i: n* u2 J5 m; m* n7 J
下面是 forward 链表
8 ~3 G/ q# q3 j; T+ c# J
forward 链表,一共有 7 条规则,包括两个跳转到自定义链表 ICMP 和 virus 链表:$ {( d  G, C  Q5 N
- h0 T- c3 w% b
0 ;;; 接受已建立连接的数据4 ?' F& b* }7 q& T$ d! ~: ^
chain=forward connection-state=established action=accept
% f& `# t6 V' D6 L
1 ;;; 接受相关数据% Y8 u* K7 Y% f5 ^+ v4 `7 }- |: \
chain=forward connection-state=related action=accept
. M, V9 N3 R! B" K
2 ;;; 丢弃非法数据包; y: I; [  f# D1 a

' B  n9 A* ^+ w  J2 R) ?& H2 A
chain=forward connection-state=invalid action=drop
2 Q' f$ e; f+ X* K" C( q
3 ;;; 限制每个主机 TCP 连接数为 80 条
( m2 c+ r! q! }% I2 H$ G% l- S$ J
chain=forward protocol=tcp connection-limit=80,32 action=drop
6 n; z6 j+ K8 ]7 ?& k
4 ;;; 丢弃掉所有非单播数据
4 p: C& `' r% c+ t- [$ E& B
chain=forward src-address-type=!unicast action=drop
# q) k& H2 P- p7 e
5 ;;; 跳转到 ICMP 链表9 L: X$ K  ~: K  e$ M+ ~, }
chain=forward protocol=icmp action=jump jump-target=ICMP# I" v) _0 i  Z; x: M
6 ;;; 跳转到病毒链表  n/ h' l# ~7 E7 Y: W/ o
chain=forward action=jump jump-target=virus/ W/ a0 i' J. T

! i' [9 O: T( j
forward 工作过程如下:  
) d" W* S" ^/ x/ _& T1 P4 _( K6 d+ s
0 {& |  B5 J% x$ H" N3 i9 x
在自定义链表 ICMP 中,是定义所有 ICMP(Internet 控制报文协议),ICMP 经常被认为是 IP 层的一个组成部分。它传 递差错报文以及其他需要注意的信息。ICMP 报文通常被 IP 层或更高层协议(TCP 或 UDP)使用。例如:ping、traceroute、 trace TTL 等。我们通过 ICMP 链表来过滤所有的 ICMP 协议:
6 q' U4 ~- v% L6 u* N! g1 K8 {
4 z+ t+ {% b6 B& a0 C6 ?7 \
ICMP 链表操作过程:
9 B# ~: N/ q2 l$ f5 H+ B. H  V

$ f1 D- N# H$ i
0 ;;; Ping 应答限制为每秒 5 个包
/ m. t  m# A% g
chain=ICMP protocol=icmp icmp-options=0:0-255 limit=5,5 action=accept
& Y4 [3 G. N' q  ~1 p( h2 l4 c
1 ;;; Traceroute 限制为每秒 5 个包- S" r, l( L* n- y( \7 p

) M3 S' M: j. g* _; x2 m
chain=ICMP protocol=icmp icmp-options=3:3 limit=5,5 action=accept
  \: D4 K; G' ]2 E  @9 l
2 ;;; MTU 线路探测限制为每秒 5 个包' X2 q% c6 H$ t
chain=ICMP protocol=icmp icmp-options=3:4 limit=5,5 action=accept6 g- T7 m& T. H2 W* u. j
3 ;;; Ping 请求限制为每秒 5 个包$ j/ h, Z' F, E& Q  c" `' |7 v; ~
chain=ICMP protocol=icmp icmp-options=8:0-255 limit=5,5 action=accept
9 _$ G+ h9 x- G0 t2 W, T9 l
4 ;;; Trace TTL 限制为每秒 5 个包
, K% f4 r+ a: x  B; G! |) t9 a
chain=ICMP protocol=icmp icmp-options=11:0-255 limit=5,5 action=accept
& q4 b! ?; [* C
5 ;;; 丢弃掉任何 ICMP 数据
& R6 E, \' v; D- q6 z: c; Y
chain=ICMP protocol=icmp action=drop, O* E3 O5 u! B: F7 Q, M

/ P- j4 A% x& z; k( q
ICMP 类型:代码值, d' S5 `7 ]% w  b
- `. C) f4 Z+ }
通过指令保护你的路由器和相连接私有网络,你需要通过配置防火墙丢弃或拒绝 ICMP 协议的传输。然而一些ICMP 数据包则需要用来维护网络和故障判断用。( h8 s& i2 t& T# D  W  x

/ I# Q3 `7 D+ G
下面是 ICMP 类型列表:通常下面的 ICMP 传输建议被允许通过
5 E! y7 r! [0 `; L; e& o* z

. c7 l( U# S8 `* v0 o
Ping
5 r) q, ]" G7 O  K, l. I- Y

# B9 Y  v8 [7 P, J' V  @! U
o 8:0 – 回应请求5 ~# c4 L. B: i5 i* U
. m7 f. L% M) i  Y& O* W% T, D
o 0:0 – 回应答复
: O% Y6 L9 _# n' {
# W6 c% \3 K$ N+ Q# N& j. O
Trace8 ?* ^2 a; O% ?

  b2 e7 k0 V6 [" ~% `9 h* O2 N
o 11:0 – TTL 超出/ Q5 N  r' c' z  x" k
0 L3 p5 F, ^+ u: r
o 3:3 – 端口不可到达
, u! p( D! A3 k& i! ]% y! i" Q9 ~
9 L; L0 \, a5 S4 O0 Q* }* @
路径 MTU 探测
* I+ P7 |3 C& A0 X
$ o: P! W3 N  f: \* }9 M
o 3:4 – 分段存储 Fragmentation-DF-Set6 M" ~& ^7 q! v8 z# K6 u+ \4 Q; D
) [7 f: O, d7 Z# u
一般 ICMP 过滤建议:
) I! ]4 ?/ q' I* P" k0 B" j- ~

0 W0 h: T( ^& }/ ?. l4 R4 P7 ~
-- 允许 ping—ICMP 回应请求向外发送和回应答复进入
% @; v1 d6 E, n+ g, W% }

+ l* h  D" W5 E5 y/ y+ A
-- 允许 traceroute—TTL 超出和端口不可到达信息进入* h% ~- t- [" R% I$ r8 u2 D

5 c. A: S) p. `2 @
-- 允许路径 MTU—ICMP Fragmentation-DF-Set 信息进入
% N4 _$ s) Z, M( e' r

, L# p9 p* o4 k4 ]8 e9 m4 h6 w0 l
-- 阻止其他任何数据
# X3 `! J) P# |9 T

4 c' k1 V6 q5 |0 c8 t) d
在 virus 链表中过滤常见的病毒,我可以根据需要在该链表中添加新的病毒对他们做过滤:
阻止不必要的 IP 广播:
1 s$ i& ^0 I. r6 A; N* d2 q
1 O& |& X6 g% a" Z
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
4 H3 m3 f9 Z( ^# h7 Y  k
7 w* {) _% t5 m9 |- ^
建立新的跳转数据链(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=icmp6 N, U1 J5 f7 J! i0 ?+ i! v% ^

, K7 ~4 O5 @6 z" _% w& L. w' I, q" ]

4 W& U8 K1 D) u: ]( P+ j

: m3 `" \3 J- \0 s5 ^8 E
建立 tcp-chain 并拒绝一些 tcp 端口:
& j* O0 P0 b* o# ~+ G, g

7 I+ P8 t5 |5 u9 u
add chain=tcp protocol=tcp dst-port=69 action=drop comment="deny TFTP"
  i5 G9 e1 a6 N- G
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"* }$ M8 F+ _" T% p- t
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"
: F; |' i( U7 Q
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"
1 E4 }. P8 {( p
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"% @" ]! a" L6 ]0 c; l+ [# d
3 J* p: d8 V$ @
在 udp-chain 中拒绝非法的 udp 端口 Deny udp ports in udp chain:add chain=udp protocol=udp dst-port=69 action=drop comment="deny TFTP"$ c. b" [/ g& V6 B7 b8 y+ l6 {
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"$ S. |0 Q6 U" p
add chain=udp protocol=udp dst-port=2049 action=drop comment="deny NFS"
: k$ U7 Y% @. v/ T
- x0 I' f% }( W5 W6 s0 M+ padd chain=udp protocol=udp dst-port=3133 action=drop comment="deny BackOriffice"
, i+ d1 d& ?% l  [) P8 L$ t0 P4 G: ]; Q, w

7 E# n8 e/ F4 W# \
3 |! ~, n! i. B4 S* n% K  i
在 icmp-chain 允许相应需要的 icmp 连接:add chain=icmp protocol=icmp icmp-options=0:0 action=accept comment="drop invalid connections"
( H- M5 u+ A7 E* J7 p
add chain=icmp protocol=icmp icmp-options=3:0 action=accept \9 a3 ~  x1 n" R  u' i
comment="allow established connections"
' |: m! @, w  g# b3 d& B# K
add chain=icmp protocol=icmp icmp-options=3:1 action=accept \. Z# n* V6 v9 k
comment="allow already established connections"
; p  |4 O# a+ _2 L% x- S: k0 K
add chain=icmp protocol=icmp icmp-options=4:0 action=accept \
) K  R  s+ r, Y8 c% q/ I3 ~5 t
comment="allow source quench"
0 I0 E% [( F$ M' Z( a
add chain=icmp protocol=icmp icmp-options=8:0 action=accept \$ L; R: O5 X! p& x" @6 K! @
comment="allow echo request"
  F+ |% m! b8 O) W, ^
add chain=icmp protocol=icmp icmp-options=11:0 action=accept \* r* C# M- D+ k9 R- H  w2 O- x4 r
comment="allow time exceed"6 K2 v# \- G" Q
add chain=icmp protocol=icmp icmp-options=12:0 action=accept \5 B7 K# D/ o0 a1 s+ [1 ?8 P$ V
comment="allow parameter bad"
( J! l. D/ ~9 {. Q  {1 [" i6 g
add chain=icmp action=drop comment="deny all other types"
' o3 u2 X* E" T! G' ?, E
4 G# d! J; H( z$ a
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2017-5-24 08:26

Powered by Discuz! X3.2

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

返回顶部 返回列表