查看: 421|回复: 0

[RouterOS] Firewall防火墙规则事例

[复制链接]

主题

好友

567

积分

中尉

签到天数: 35 天

[LV.5]常住居民I

发表于 2016-9-22 16:55 |显示全部楼层
Anywlan微信公众号
防火墙规则事例0 \+ |. o. O2 [/ A/ n" \
8 |" I- A0 T1 D7 g0 w  e# O$ M+ A3 [
我先从 input 链表开始,这里是对所有访问路由的数据进行过滤和处理:
从 input 链表的第一条开始执行,这里一共有三条规则:/ [, [2 L2 c, }& H5 P( P! R# Q

% n3 m: j/ D5 Y! p0 \/ t: I
0 ;;; 接受你信任的 IP 地址访问(src-address=填写信任 IP,默认允许任何地址)chain=input src-address=192.168.100.2 action=accept
- j% b" h4 o8 n' a, o6 P* f+ p0 A2 z! ~

2 {6 `5 |. W6 L  _- Q; `5 t
1 ;;; 丢弃非法连接! J+ X5 [: R* L3 N" ]. Z
chain=input connection-state=invalid action=drop* P) }0 c5 O' ~6 c
2 ;;; 丢弃任何访问数据! x. x& l8 e9 R  A$ M' g. c
chain=input action=drop
1 P1 a6 C, l7 f) \- G) A" A5 ]
8 k- M3 b6 i, S) M5 y
下面是 forward 链表
. {; M8 z* D" _' S0 x) S: \
forward 链表,一共有 7 条规则,包括两个跳转到自定义链表 ICMP 和 virus 链表:6 S% @6 ]0 b2 B

2 |: g( E0 _5 k' n
0 ;;; 接受已建立连接的数据
& [' i* A1 {2 y0 G  ~
chain=forward connection-state=established action=accept
: j) a8 M  r5 z
1 ;;; 接受相关数据
' c  U. L* P; I2 ^5 l, o9 s
chain=forward connection-state=related action=accept
* ~9 D7 T8 O7 E
2 ;;; 丢弃非法数据包
8 U+ w/ y+ X! O# H% I+ F

$ Q- z" h/ ~  _  F( J: g1 q
chain=forward connection-state=invalid action=drop( u) s# J) c- @, `1 O( Q2 b
3 ;;; 限制每个主机 TCP 连接数为 80 条, [3 M& k3 A8 D/ o6 h( \/ S
chain=forward protocol=tcp connection-limit=80,32 action=drop! C1 D7 S% i4 u- [2 q
4 ;;; 丢弃掉所有非单播数据
3 R2 Q# \0 J- g: o7 T, \9 @7 b
chain=forward src-address-type=!unicast action=drop- U& M! ~, `! g7 |
5 ;;; 跳转到 ICMP 链表
. z: a; [* J8 k
chain=forward protocol=icmp action=jump jump-target=ICMP
2 G: f+ R' V/ a" C9 e* \
6 ;;; 跳转到病毒链表
0 p: B  v# l, d7 f/ Z4 M9 {. L
chain=forward action=jump jump-target=virus
9 ]+ z! ]3 }- J/ Q! ]0 v

- ]- m; |3 }: I
forward 工作过程如下:  
  z+ `/ l( q9 [. t; {

% U/ W" I% s5 D: C/ Z
在自定义链表 ICMP 中,是定义所有 ICMP(Internet 控制报文协议),ICMP 经常被认为是 IP 层的一个组成部分。它传 递差错报文以及其他需要注意的信息。ICMP 报文通常被 IP 层或更高层协议(TCP 或 UDP)使用。例如:ping、traceroute、 trace TTL 等。我们通过 ICMP 链表来过滤所有的 ICMP 协议:1 Y# \( \+ ]6 D" \) }& k

0 u) F5 h1 ?; X3 q- J, f
ICMP 链表操作过程:
/ ]0 Q: q! C) X/ Z$ A. ?9 N

, j" L) d- u6 m5 o4 }  h( Z1 g
0 ;;; Ping 应答限制为每秒 5 个包5 z& F6 V7 w, z* \! \9 N4 G
chain=ICMP protocol=icmp icmp-options=0:0-255 limit=5,5 action=accept
6 \: v' j+ m( Y9 J$ l, `
1 ;;; Traceroute 限制为每秒 5 个包, f7 ~6 G1 k, N
* C; Z$ e5 L0 K0 ]+ j) ^! x& A
chain=ICMP protocol=icmp icmp-options=3:3 limit=5,5 action=accept
; i0 J3 |' Q% E/ P  a# h) C7 g
2 ;;; MTU 线路探测限制为每秒 5 个包
1 Z/ D/ |1 m" ?0 {- M
chain=ICMP protocol=icmp icmp-options=3:4 limit=5,5 action=accept& N1 ]0 m* T- @, X  D* @
3 ;;; Ping 请求限制为每秒 5 个包0 h: R! a1 h! t1 _& e" b
chain=ICMP protocol=icmp icmp-options=8:0-255 limit=5,5 action=accept
3 @# x* x' d# K
4 ;;; Trace TTL 限制为每秒 5 个包
+ `  S' n- u5 V, T* U7 _
chain=ICMP protocol=icmp icmp-options=11:0-255 limit=5,5 action=accept# a) g3 T8 L; Y8 ?7 }9 m
5 ;;; 丢弃掉任何 ICMP 数据
3 B( |" W* j0 j( E' k
chain=ICMP protocol=icmp action=drop/ Y+ t. T6 g2 U$ G. n  g

2 Z& E4 z) L' [6 W" _  u
ICMP 类型:代码值
0 P/ p7 B  Z" b/ P. A0 y

) p3 M+ @* Y$ q$ s2 C; ]
通过指令保护你的路由器和相连接私有网络,你需要通过配置防火墙丢弃或拒绝 ICMP 协议的传输。然而一些ICMP 数据包则需要用来维护网络和故障判断用。
6 X  P! i4 h0 z1 B- B3 B0 v
% a% c& \( [8 K& Q
下面是 ICMP 类型列表:通常下面的 ICMP 传输建议被允许通过
- O1 x. N( Z# L- j4 w8 b
+ T0 B1 z0 h: z& ^
Ping% v' M$ f" l* o/ [5 g. J
: V" H* [! F6 p/ a2 _; N% ^4 K
o 8:0 – 回应请求
1 @1 T4 k, I/ c9 q# P3 O( ?2 X
' \, ^; D! F* U* }2 k
o 0:0 – 回应答复
$ [+ ?' g' D* ^  x9 P
! E( k! \- B) I" g
Trace. ^. T; X! D" x: R
* I  b4 O" Q. s( ?
o 11:0 – TTL 超出* p: V( L" U5 u$ E/ U$ ^0 r# m
6 Q/ M! E9 F3 ]  w5 \
o 3:3 – 端口不可到达
( J7 D9 p$ Z: ~" t( W4 p  c
4 i  ^* x, O9 E! z
路径 MTU 探测7 b7 e' X$ B- ]- @
8 y: ]4 ]! \, @1 }
o 3:4 – 分段存储 Fragmentation-DF-Set
4 X3 u" P5 S* V1 Q
/ U% o( B" M- u
一般 ICMP 过滤建议:
+ o- q, h8 [2 C$ G2 L! X0 Q
1 @4 V8 c8 b5 O6 x( F
-- 允许 ping—ICMP 回应请求向外发送和回应答复进入8 s5 D2 J% ?1 }7 w
! ]9 `" W, H! J% y
-- 允许 traceroute—TTL 超出和端口不可到达信息进入
1 s! z" j! E- Q1 w
+ s/ l/ W5 X3 \* F
-- 允许路径 MTU—ICMP Fragmentation-DF-Set 信息进入
+ z; }" d* G5 P/ r

/ [* Y; y( I7 N: r; R% d
-- 阻止其他任何数据
% m' K( {+ U8 ~; I9 R
; G- D! }( r3 P' G6 y
在 virus 链表中过滤常见的病毒,我可以根据需要在该链表中添加新的病毒对他们做过滤:
阻止不必要的 IP 广播:4 \6 q: ?) g: a3 k% w
# e3 i% J, n* B
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; z6 G: S7 }1 i  @7 T! k- Q* [
- A4 p* v6 ?+ H6 u$ T/ s3 e, Q# H
建立新的跳转数据链(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$ L4 d- j! a0 ^5 }2 @9 V

9 z6 n; f2 U8 |0 g

+ X8 B/ {2 G+ Q2 V7 p" T
2 p* y  z: g1 U  r
建立 tcp-chain 并拒绝一些 tcp 端口:
7 y% D6 E3 y5 F! C& {
$ e, e& s: j' p& r! }9 p( ^1 y
add chain=tcp protocol=tcp dst-port=69 action=drop comment="deny TFTP"* P& G& J4 b) m# 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 s* s0 ]) S5 {+ `
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"; U0 h( b0 D0 Q  T& Z9 |0 P
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"
; `, c: k8 M9 I& l  ^" w( e
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"
" Z, H6 U" H! u. Y5 c( y

& `/ p$ W3 {/ f0 N: b7 p, _) F
在 udp-chain 中拒绝非法的 udp 端口 Deny udp ports in udp chain:add chain=udp protocol=udp dst-port=69 action=drop comment="deny TFTP". M3 T! M5 U' G8 |6 [
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"
7 K, [. O' v  ^* M1 Xadd chain=udp protocol=udp dst-port=2049 action=drop comment="deny NFS"/ }8 {4 S! c% g
1 R) |& D( ~8 L4 T1 n' m
add chain=udp protocol=udp dst-port=3133 action=drop comment="deny BackOriffice"' w: }8 X4 ~7 d2 M9 K9 R
6 a" V1 a: v* y% h$ P/ a5 U3 W0 A; Z

: b% N9 M1 o. ?4 S' l$ J) }9 Q' o

* k* [7 q  i# a+ J  M
在 icmp-chain 允许相应需要的 icmp 连接:add chain=icmp protocol=icmp icmp-options=0:0 action=accept comment="drop invalid connections": M: R: K. ~0 D: i
add chain=icmp protocol=icmp icmp-options=3:0 action=accept \
; j1 \: A6 r3 H0 K+ m( }0 S1 [
comment="allow established connections", V8 c# d" H" E* D
add chain=icmp protocol=icmp icmp-options=3:1 action=accept \! ?7 d7 Q  ?' m) A9 s
comment="allow already established connections"! Q/ D2 A6 E! e+ P6 M1 q6 d" G
add chain=icmp protocol=icmp icmp-options=4:0 action=accept \
; r; ~" Z+ m0 o  {( [) @
comment="allow source quench"/ H2 G2 V/ R, @$ c+ G& |
add chain=icmp protocol=icmp icmp-options=8:0 action=accept \
# a# O$ l* m8 n: r; f- z. f" [, h
comment="allow echo request"! \: q/ x  r2 i) K) c% r
add chain=icmp protocol=icmp icmp-options=11:0 action=accept \
0 V1 k, z$ I1 R( M
comment="allow time exceed"% X& E2 f3 ?$ j# `; q7 E3 Y
add chain=icmp protocol=icmp icmp-options=12:0 action=accept \6 [' E' M6 \+ `2 h  S8 V) `
comment="allow parameter bad"# X0 O% I# T9 p/ B% B" K
add chain=icmp action=drop comment="deny all other types"
9 W7 m" b; C6 d- `3 E# w9 H
' J0 T' Y5 V- V
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

关闭

站长推荐 上一条 /1 下一条

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

GMT+8, 2017-8-19 15:27

Powered by Discuz! X3.2

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

返回顶部 返回列表