ubnt解决方案
查看: 1094|回复: 0

[RouterOS] Firewall防火墙规则事例

[复制链接]

2

回帖

567

积分

52 小时

在线时间

中尉

注册时间
2016-1-6
金币
493 个
威望
0 个
荣誉
0 个
累计签到:35 天
连续签到:0 天
[LV.50]初入江湖
发表于 2016-9-22 16:55
防火墙规则事例
# \+ X9 O! c- J' g! \
" o& r: c# N, C& q' p* b
我先从 input 链表开始,这里是对所有访问路由的数据进行过滤和处理:
从 input 链表的第一条开始执行,这里一共有三条规则:
' H2 D  C% c: @9 u' k

4 ~8 Y+ [' o! k
0 ;;; 接受你信任的 IP 地址访问(src-address=填写信任 IP,默认允许任何地址)chain=input src-address=192.168.100.2 action=accept) F1 _: Z7 `  f' Y/ S

, Z- {. u. y, |8 F+ ~  V5 p

- b' k' f% b5 M4 B7 ]2 ^+ h
1 ;;; 丢弃非法连接
7 j: _/ g" L% a5 m
chain=input connection-state=invalid action=drop
$ b& ?% S0 Z4 k: U* b! j
2 ;;; 丢弃任何访问数据
: }0 U: s$ y9 p
chain=input action=drop
% F! L, U* C! Q7 `7 ]
* V5 s' Z8 s; U- Z. a9 z+ o
下面是 forward 链表3 R% c: e( X8 E6 j1 O; ]3 Z: P  z5 o
forward 链表,一共有 7 条规则,包括两个跳转到自定义链表 ICMP 和 virus 链表:( {9 A& s5 ^$ u- S
9 ?; g& J  w  h4 ~/ c/ w
0 ;;; 接受已建立连接的数据+ g* g  x8 r/ i0 M6 `( f# Y
chain=forward connection-state=established action=accept
5 ~; H3 t& u; p
1 ;;; 接受相关数据
. `: C, U$ G# J
chain=forward connection-state=related action=accept1 T4 [5 V: S& o1 n
2 ;;; 丢弃非法数据包
9 `8 }9 G7 u1 ~  r2 w
* P+ w/ c: G  @, C& q/ o* k
chain=forward connection-state=invalid action=drop+ o- c' Z( d3 T$ f( u
3 ;;; 限制每个主机 TCP 连接数为 80 条3 j; j! V% U7 h# p* L% o2 `7 M) ?
chain=forward protocol=tcp connection-limit=80,32 action=drop1 X* u% T0 Q/ L4 X8 g$ y
4 ;;; 丢弃掉所有非单播数据
3 t* g0 N5 Q0 y* S* Y6 p
chain=forward src-address-type=!unicast action=drop
; ]5 R9 O5 r8 }+ Z, f% E" n. w1 H
5 ;;; 跳转到 ICMP 链表
% L6 J/ Y0 Y9 V
chain=forward protocol=icmp action=jump jump-target=ICMP
7 s- C5 ^3 ^. V$ p" W9 x
6 ;;; 跳转到病毒链表: M! w/ V) V/ I2 m! ?& m; e* s
chain=forward action=jump jump-target=virus
# b0 b+ \: B  u  l5 ~+ n9 U% t5 z
# F2 ^+ _; \6 D
forward 工作过程如下:  0 x* a0 Z. I0 S% v2 o
  P% o8 Z9 x; k* i3 X
在自定义链表 ICMP 中,是定义所有 ICMP(Internet 控制报文协议),ICMP 经常被认为是 IP 层的一个组成部分。它传 递差错报文以及其他需要注意的信息。ICMP 报文通常被 IP 层或更高层协议(TCP 或 UDP)使用。例如:ping、traceroute、 trace TTL 等。我们通过 ICMP 链表来过滤所有的 ICMP 协议:
3 I7 c3 q9 ?7 q- A7 R

* S0 M9 R% s! H+ {( @* e. ?
ICMP 链表操作过程:5 o+ b: t+ x; q
- i' D8 e2 J) X4 j  g; W8 o: O
0 ;;; Ping 应答限制为每秒 5 个包! d+ ?0 O7 p4 f$ G. c/ Q* H. ]
chain=ICMP protocol=icmp icmp-options=0:0-255 limit=5,5 action=accept! l% C$ Z0 |# V7 K4 _0 x  `$ r
1 ;;; Traceroute 限制为每秒 5 个包
, G' Z' a9 t/ I  j$ L

) @% U/ m4 g" Z* {
chain=ICMP protocol=icmp icmp-options=3:3 limit=5,5 action=accept7 Z7 E# ?" c, m$ i( _0 @
2 ;;; MTU 线路探测限制为每秒 5 个包- A; z2 |3 P1 V) }
chain=ICMP protocol=icmp icmp-options=3:4 limit=5,5 action=accept* q+ u. K: v; }
3 ;;; Ping 请求限制为每秒 5 个包5 q" ]' H/ t3 T8 U
chain=ICMP protocol=icmp icmp-options=8:0-255 limit=5,5 action=accept3 p0 H; k2 h& {' y0 `
4 ;;; Trace TTL 限制为每秒 5 个包* m8 j- p, N0 S& R% p" Q
chain=ICMP protocol=icmp icmp-options=11:0-255 limit=5,5 action=accept8 w5 _  A( B  z5 z; `. B
5 ;;; 丢弃掉任何 ICMP 数据: t( K$ f* W% A/ [! Y
chain=ICMP protocol=icmp action=drop* t3 ?; I- ]9 S; Z! X
7 L4 z9 u7 ?1 T: s1 `& u3 M5 O
ICMP 类型:代码值
: Z0 }+ ]# C% E* ]" D

1 F( @6 O0 l" I8 Y! Q
通过指令保护你的路由器和相连接私有网络,你需要通过配置防火墙丢弃或拒绝 ICMP 协议的传输。然而一些ICMP 数据包则需要用来维护网络和故障判断用。
# R9 r2 A2 n6 a7 Z* Z+ w4 m
1 I' p+ a' y* u7 z) h
下面是 ICMP 类型列表:通常下面的 ICMP 传输建议被允许通过8 I0 ?: O& u, L5 z
1 u3 p& w9 V* [' _5 }- v5 x
Ping
$ k4 H! C0 v- R" L* K1 K2 h
  E6 R0 _7 U& z& `# T  e
o 8:0 – 回应请求
% i" L1 C' U0 G/ q; ^8 m

( @1 {% y/ Y  \! Q
o 0:0 – 回应答复- E& y: D5 }) d$ T: E/ H
9 |+ O: k2 y/ d& ]: K. G4 B
Trace
3 `& {4 B( \  t! y6 D$ S9 z

& a4 L; r7 D6 a
o 11:0 – TTL 超出* @0 m" r& ^' _  o$ E

6 x7 `& p0 K  u$ f
o 3:3 – 端口不可到达4 b5 F* H0 ~7 m4 h5 ~- P! w! h. l
3 K5 U6 }* d9 T+ k; A
路径 MTU 探测+ O; f* w1 t/ I# @' d6 l4 }" [  l

: m& k. z2 \* m, e# W% F7 S! d
o 3:4 – 分段存储 Fragmentation-DF-Set2 s6 _* z4 A$ r5 Y5 ~) W/ S& D; w0 E
  V  M- z/ S) w5 l# u
一般 ICMP 过滤建议:0 o- _2 |1 C6 j  {7 `" Z5 i8 q
6 b6 \# S5 S0 T
-- 允许 ping—ICMP 回应请求向外发送和回应答复进入: e2 ^2 X; t8 I7 [# K

  U* o* {+ h: p4 g; y
-- 允许 traceroute—TTL 超出和端口不可到达信息进入0 G0 D4 h6 R" \0 I' A# ?& `
  }' E1 f% c* J3 w& L0 d
-- 允许路径 MTU—ICMP Fragmentation-DF-Set 信息进入8 s9 I0 T* L: m9 R% Q: E8 g/ ?

$ ~. k9 R$ F9 w# [: X
-- 阻止其他任何数据
! b/ J3 H3 o' R. T
1 b8 @3 A. a& g% S
在 virus 链表中过滤常见的病毒,我可以根据需要在该链表中添加新的病毒对他们做过滤:
阻止不必要的 IP 广播:
/ `9 Z9 g  G0 `& p, o* S+ ?+ ~
' v& t; m* G) C) `. 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
$ Z! ^, E; `2 m5 Q) Z" h  \

8 \, \( u( p5 J+ ?0 u; F: l
建立新的跳转数据链(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
5 Q9 r8 K2 \! ~, V1 n6 M+ O- c2 f2 O/ O( v2 z8 F
5 k. y5 a7 k  \6 f1 o# C; F0 H

% z1 T" r# o/ [
建立 tcp-chain 并拒绝一些 tcp 端口:5 J& N; N, x* w* r* |( ~' P

3 d, p( a! f5 S) \; N
add chain=tcp protocol=tcp dst-port=69 action=drop comment="deny TFTP"
# v; i& E! H+ u" @
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"
' n4 U% ~* a3 {6 U4 u
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"" ?3 f, J4 g! h3 \% B) z
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"
% a7 R. R1 W( w! D  S  {8 b
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"
) I$ d0 k4 \- ^" Y5 _

" l' t: {! f. {& Q7 G  [& J
在 udp-chain 中拒绝非法的 udp 端口 Deny udp ports in udp chain:add chain=udp protocol=udp dst-port=69 action=drop comment="deny TFTP"- a$ J7 b9 w8 m# h
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"! E$ ^& }) y, h" T- F2 D/ C$ V
add chain=udp protocol=udp dst-port=2049 action=drop comment="deny NFS"
- o% V4 F+ @8 ]8 i: [8 W' W) @( H8 L+ n9 E- i/ }) E% B- Q8 a. @
add chain=udp protocol=udp dst-port=3133 action=drop comment="deny BackOriffice"
' {7 o$ `5 Y( B, \" u/ A" B) b- s/ ^; P" Q
7 [5 B% J0 j0 c0 G9 Z! W

  L/ r2 Y2 G  B4 a! Y
在 icmp-chain 允许相应需要的 icmp 连接:add chain=icmp protocol=icmp icmp-options=0:0 action=accept comment="drop invalid connections": a5 ]2 K& p( D: i% g
add chain=icmp protocol=icmp icmp-options=3:0 action=accept \
, K' X( x# C3 R( K. u6 C  U- G! H
comment="allow established connections"3 j/ O- Z/ O) s2 R% V! }
add chain=icmp protocol=icmp icmp-options=3:1 action=accept \. n* g# o( {* N6 b- E% P1 g& y
comment="allow already established connections"
& F, r! w. E) M/ {4 E, X) _$ J
add chain=icmp protocol=icmp icmp-options=4:0 action=accept \
) D2 z, [1 S% ]9 z) y# U( K$ p3 M! i
comment="allow source quench"
( U! e- ]+ L+ U2 i9 g0 G" d8 j
add chain=icmp protocol=icmp icmp-options=8:0 action=accept \
5 n/ e! l! s2 }9 i+ O
comment="allow echo request"" P- U/ Z) p$ g5 A+ p6 j
add chain=icmp protocol=icmp icmp-options=11:0 action=accept \- N& f8 F$ O; R4 C$ |; w- |
comment="allow time exceed"
& ]' T# J) C6 L  d1 R/ v  b
add chain=icmp protocol=icmp icmp-options=12:0 action=accept \; R5 I; m1 _6 ?" f
comment="allow parameter bad"( C7 N( E! m$ A0 w% W' c, l6 y8 f
add chain=icmp action=drop comment="deny all other types"- O( h6 ~( p# Y. \5 m% G

/ E2 K# t5 [3 ^; K5 L8 f

站点统计 | Archiver | 手机版 | 无线门户 ( 粤ICP备11076993号|粤公网安备44010602008359号 ) |网站地图

GMT+8, 2024-4-26 15:53

返回顶部 返回列表