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

[RouterOS] Firewall防火墙规则事例

[复制链接]

2

回帖

567

积分

52 小时

在线时间

中尉

注册时间
2016-1-6
金币
493 个
威望
0 个
荣誉
0 个
累计签到:35 天
连续签到:0 天
[LV.50]初入江湖
发表于 2016-9-22 16:55 |显示全部楼层
防火墙规则事例( T) u9 C( a( @. l

% P; {" J$ P! d6 v7 j! B
我先从 input 链表开始,这里是对所有访问路由的数据进行过滤和处理:
从 input 链表的第一条开始执行,这里一共有三条规则:4 i4 i/ p9 c1 m" p7 l9 N# X
8 \* o6 J; F: U% a# F( j
0 ;;; 接受你信任的 IP 地址访问(src-address=填写信任 IP,默认允许任何地址)chain=input src-address=192.168.100.2 action=accept
$ Z& w5 o/ V& r# u. B9 o! t
- S, n% Q- H! I9 ?& B

- }7 N$ d, ]$ W$ k0 F" r  q
1 ;;; 丢弃非法连接
6 `. ~) A: w1 U. u3 y
chain=input connection-state=invalid action=drop" T6 f4 \. E9 @. z7 r: M+ L
2 ;;; 丢弃任何访问数据- h9 D$ ]% ?" ]- j
chain=input action=drop: i( [# D' V5 m' f) `; E  c
. l3 f4 o* B  r8 M/ m# X
下面是 forward 链表1 b: R( _$ @1 i' ~1 V: F. M
forward 链表,一共有 7 条规则,包括两个跳转到自定义链表 ICMP 和 virus 链表:
: ?) A* ]  o! i" ^! E

0 V' H! k0 e. t2 H( w& q! e
0 ;;; 接受已建立连接的数据) _( Q! s5 m1 t$ p( z
chain=forward connection-state=established action=accept5 [- Y- l7 y4 Z) o
1 ;;; 接受相关数据
8 M+ H: [# V$ C" A0 v6 W$ H
chain=forward connection-state=related action=accept5 z4 J( T2 b! J; |6 n. @
2 ;;; 丢弃非法数据包
. S9 l% d- w  T: }1 A8 Z

, [, u* w  S1 ]* e- _$ X
chain=forward connection-state=invalid action=drop8 e+ {2 y7 r! h% q8 B
3 ;;; 限制每个主机 TCP 连接数为 80 条& N$ N0 Y" M( w& F" N
chain=forward protocol=tcp connection-limit=80,32 action=drop9 s9 G2 S8 E# |) z
4 ;;; 丢弃掉所有非单播数据5 O, F! G3 m) s6 F' U
chain=forward src-address-type=!unicast action=drop
1 Q, u7 D  y) Q) S3 b# a  W
5 ;;; 跳转到 ICMP 链表, a; i, e( b2 Q- D9 {
chain=forward protocol=icmp action=jump jump-target=ICMP+ D1 p9 V- l8 o/ r
6 ;;; 跳转到病毒链表
4 ~( F) R0 R/ J
chain=forward action=jump jump-target=virus6 U4 y- Q2 ^) f$ U% Z

/ @) B4 Z5 ]9 J8 D. K
forward 工作过程如下:  7 C0 @) o3 ~9 o% z4 [* a1 |

- h( V9 N4 G  Q, a
在自定义链表 ICMP 中,是定义所有 ICMP(Internet 控制报文协议),ICMP 经常被认为是 IP 层的一个组成部分。它传 递差错报文以及其他需要注意的信息。ICMP 报文通常被 IP 层或更高层协议(TCP 或 UDP)使用。例如:ping、traceroute、 trace TTL 等。我们通过 ICMP 链表来过滤所有的 ICMP 协议:
+ P; T; {) M, `& w# U6 q
5 T, Q! M1 ^) @% V
ICMP 链表操作过程:
$ b; n( t% X2 E

9 A% W# n  j  K( }
0 ;;; Ping 应答限制为每秒 5 个包
# h$ r# \$ F* l! K1 E- E- r
chain=ICMP protocol=icmp icmp-options=0:0-255 limit=5,5 action=accept
/ ^# n* M1 }& l! y
1 ;;; Traceroute 限制为每秒 5 个包
: P! A) Z4 ]* g, o* b% i$ i. \4 e

- m6 E  r  V& @& `* k# t, T  s
chain=ICMP protocol=icmp icmp-options=3:3 limit=5,5 action=accept2 b$ e+ s( G. Q% D$ V
2 ;;; MTU 线路探测限制为每秒 5 个包9 P% G% U! a- d1 G% C; H
chain=ICMP protocol=icmp icmp-options=3:4 limit=5,5 action=accept
4 O  m4 w" q$ [9 q) m$ P
3 ;;; Ping 请求限制为每秒 5 个包
* I/ ~( a0 h! V/ P3 m, F' u
chain=ICMP protocol=icmp icmp-options=8:0-255 limit=5,5 action=accept
  @5 |7 t7 _' f% r
4 ;;; Trace TTL 限制为每秒 5 个包
9 T  c$ M" H. V
chain=ICMP protocol=icmp icmp-options=11:0-255 limit=5,5 action=accept
- B3 t0 J7 t& w3 K
5 ;;; 丢弃掉任何 ICMP 数据  B$ F% ]' r' Q( B8 w4 V& |1 d
chain=ICMP protocol=icmp action=drop
# ~- ~) J: v" H0 L

) E3 V, S& e6 F$ \
ICMP 类型:代码值
* @5 z2 R/ s! n1 c3 _9 h* `5 `* }
1 P8 K" u( r: `9 l% `! V+ y1 ~
通过指令保护你的路由器和相连接私有网络,你需要通过配置防火墙丢弃或拒绝 ICMP 协议的传输。然而一些ICMP 数据包则需要用来维护网络和故障判断用。4 c( w$ Q. m; i8 X
" K+ k- x& b4 B& W; f- w
下面是 ICMP 类型列表:通常下面的 ICMP 传输建议被允许通过3 b. ]- z; r& ~& ^& g6 e  k: b

! |, |. n5 K# M% X8 e: D4 X7 a
Ping
4 I1 r8 y+ j3 C+ m- Z
# Z/ Y, \" J' [+ x; a- c
o 8:0 – 回应请求
1 J2 y" g' v8 I4 V; H6 K5 {3 B

2 Z8 r# G# z3 R0 d+ _  O9 [
o 0:0 – 回应答复
, I4 b! ^+ O9 G7 {

9 v$ Z9 K& j. a7 D# n9 Y+ w$ _
Trace8 _9 @) {# X7 d* P4 \0 Z' g

3 `- i6 M$ Q. \0 h: v1 }
o 11:0 – TTL 超出- Y6 H* b. C4 ]( I' b+ F/ I# {

4 b5 g/ |* Q$ c. M) [3 L  ]
o 3:3 – 端口不可到达
/ L4 H! H9 J9 N+ C, B1 ]

# u8 t6 U' h1 N; S
路径 MTU 探测2 ?5 b7 Y/ _  U8 N! Q0 [2 z- D8 e

4 I2 p4 k2 V( i) o, [
o 3:4 – 分段存储 Fragmentation-DF-Set
) v, ?  ?9 F) H1 B7 P' G
+ J* U" {7 T2 z  y! l/ [
一般 ICMP 过滤建议:
& S1 y) L' a4 S! ~3 @

" Y# C! m8 X! D2 Z; P  H
-- 允许 ping—ICMP 回应请求向外发送和回应答复进入. d9 S, f& D$ j4 o
0 e* n# H8 V: |* Z1 e+ R1 U
-- 允许 traceroute—TTL 超出和端口不可到达信息进入
6 Z* t  [- U! s, |2 D1 H; T

* |1 l( G4 X) I# e4 J: B
-- 允许路径 MTU—ICMP Fragmentation-DF-Set 信息进入
/ [; K' {' ?  J) ?, A

0 P* C+ |) ?$ a) [1 b' e
-- 阻止其他任何数据9 K) q2 G/ e2 A8 V9 `% J6 B4 k/ ^

+ I5 j1 o! r3 ?) a4 ?
在 virus 链表中过滤常见的病毒,我可以根据需要在该链表中添加新的病毒对他们做过滤:
阻止不必要的 IP 广播:* ]( [- L4 W& e+ R" }

$ N7 L' _' T% ]3 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
% ]; d+ }( _, V# u4 I
7 f3 G% o9 J: J
建立新的跳转数据链(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' N! b( K; n  k$ O( R
( ]7 }" {. m# E, F- O1 z8 ]

, e8 C( u% Y, X. I. x8 B; ]$ {. E
# K0 w: E7 T" |+ |# J7 h4 x
建立 tcp-chain 并拒绝一些 tcp 端口:
1 @( }/ F6 y$ l7 q
7 K' b* h$ j9 l8 k0 ~* n) o
add chain=tcp protocol=tcp dst-port=69 action=drop comment="deny TFTP"5 c9 O# U1 O/ ?! `1 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"! {6 w) u* j* Q+ z' W& ~* P) S
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"  K4 u0 s: z$ E& ?$ y0 l/ H3 I
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"% M0 X# O* L$ h, l2 G  I
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"
- Y( ]* I: W" V8 u( {5 A

& o8 @9 s3 K$ i2 Q- v/ z/ l' ^
在 udp-chain 中拒绝非法的 udp 端口 Deny udp ports in udp chain:add chain=udp protocol=udp dst-port=69 action=drop comment="deny TFTP"
$ |2 x! z6 D: p% Eadd 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"
8 v, X% K' y8 s0 ]: G0 k' ], Z6 `* Nadd chain=udp protocol=udp dst-port=2049 action=drop comment="deny NFS"
) U, X+ I& J# L; A7 T' d7 h
8 Q# ^7 X$ q) a& p) Z3 ?, a+ Madd chain=udp protocol=udp dst-port=3133 action=drop comment="deny BackOriffice"3 J( o/ b& ]9 i" H" k, d/ U
2 m% h  x3 `" V
7 ]/ D! r5 z$ N$ X9 I4 c9 v* \
2 J  q8 f; {7 L! E
在 icmp-chain 允许相应需要的 icmp 连接:add chain=icmp protocol=icmp icmp-options=0:0 action=accept comment="drop invalid connections"
( H+ h; ?( g% r: Z8 c+ \8 {
add chain=icmp protocol=icmp icmp-options=3:0 action=accept \% Q, R4 D& L8 Y, Q  n# y9 Z
comment="allow established connections"! ]3 S, a+ K- p( W5 k
add chain=icmp protocol=icmp icmp-options=3:1 action=accept \
. L% T9 z* g( m3 {* i
comment="allow already established connections"0 H' ]5 T( @  ^% A5 |" i
add chain=icmp protocol=icmp icmp-options=4:0 action=accept \
# ~# o) |8 [* R/ E' M$ A/ h
comment="allow source quench"
; w6 n; r1 h/ z) j# b6 g2 f
add chain=icmp protocol=icmp icmp-options=8:0 action=accept \4 H5 x& r+ r0 h; E6 U2 k
comment="allow echo request"
9 P/ L+ T' T* [& I
add chain=icmp protocol=icmp icmp-options=11:0 action=accept \" Z7 K6 l& S, i+ Q5 V
comment="allow time exceed"0 z" _# z$ I3 i6 m; o1 W) h
add chain=icmp protocol=icmp icmp-options=12:0 action=accept \; S1 I6 U/ ^7 t. ]6 w" y% f0 V
comment="allow parameter bad"3 B9 q/ z- W6 _0 Q; I5 r, ~& P3 B
add chain=icmp action=drop comment="deny all other types"9 _4 `2 R8 H& m2 ?9 D
5 s% H4 j4 o1 ]' I/ K2 X
您需要登录后才可以回帖 登录 | 注册 微信登录

本版积分规则

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

GMT+8, 2026-6-16 01:41

返回顶部 返回列表