三千论坛
标题:
数据及备份管理
[打印本页]
作者:
异仟年
时间:
2022-9-5 18:06
标题:
数据及备份管理
1
.备份
5 P9 Y6 D" U6 S; f* X) w( Z
1
)要经常把重要数据备份到专用的备份服务器,备份完毕后,可将备份服务器与网络隔离。 可采用自动的备份工具进行,要求支持
FTP
方式备份。
2
)使用系统的备份功能对安装好的系统进行阶段性备份。
3
)使用
WonRescue
等工具对注册表进行阶段性备份。
4
)使用
Ghost
对全面配置完毕的系统分区进行映像备份,并存放到隐藏的分区中。
- w, y( I4 k9 K
+ }6 u! R5 T3 K4 r2 f
2
.设置文件共享权限
. j& Y5 t: A5 r5 P1 F
1
)限制共享权限设置共享文件时,要注意把共享文件的权限从
“everyone”
组改成
“
授权用户
”
,包括打印共享。
2
)关闭默认共享
Win 2000
安装好以后,系统会创建一些隐藏的共享,在
cmd
下可用
net share
命令查看它们。要禁止这些共享。操作方法是:打开
“
管理工具
→
计算机管理
→
共享文件夹
→
共享
”
,在相应的共享文件夹上按右键,点
“
停止共享
”
即可。不当过机器重新启动后,这些共享又会重新开启。
/ `2 G* r/ { L c
. Q, x& E V! e: u
3.
防止文件名欺骗
4 T' q" |% ~; f1 U& h
设置以下选项可防止文件名欺骗,如防止以
.txt
或
.exe
为后缀的恶意文件被显示为
.txt
文件,从而使人大意打开该文件
:
双击
“
我的电脑
→
工具
→
文件夹选项
→
查看
”
,选择
“
显示所有文件和文件夹
”
属性设置,去掉
“
隐藏已知文件类型扩展名
”
属性设置。
7 M/ _' z9 ?% b7 [+ b; ]# f( r
9 V" R" \. Q2 i( x! \
4.Access
数据库的安全概要
, d5 o! I# l, n
1
)新生成的数据库在保证干净的前提下,主动在尾部合并一行
ASP
代码,内容一般可以为重定向,以免别人通过论坛发帖等方式嵌入有害代码后被得到执行;
2
)对
MDB
文件创建一个无效的映射,以便在
IE
中下载时出错;
3
)修改出错页面,建议将出错页面设计为正常被曝库后的内容,但给一个数据库的虚假地址(最好存在相应的虚假数据库文件,比如一个改名后的病毒等);
4
)在防火墙中对
MDB
类型的扩展名进行过滤;
5
)删除或禁用网站的后台数据库备份功能,而用本地安装的专门自动备份程序进行自动增量备份。
6
)
ASP
通用防止注入的程序:功能简单说明:
1.
自动获取页面所有参数,无需手工定义参数名
.2.
提供三种错误处理方式供选择
. (1).
提示信息
. (2).
转向页面
. (3).
提示信息
,
再转向页面
.3.
自定义转向页面
.
使用方法很简单,只需要在
ASP
页面头部插入代码
<!--#Include File="Fy_SqlX.Asp"-->
包含
Fy_SqlX.Asp
就可以了
~~
简单实用
<%Dim Fy_Url,Fy_a,Fy_x,Fy_Cs(),Fy_Cl,Fy_Ts,Fy_Zx''---
定义部份 头
------Fy_Cl = 1 ''
处理方式:
1=
提示信息
,2=
转向页面
,3=
先提示再转向
Fy_Zx = "Error.Asp" ''
出错时转向的页面
On Error Resume NextFy_Url=Request.ServerVariables("QUERY_STRING")Fy_a=split(Fy_Url,"&")redim Fy_Cs(ubound(Fy_a))On Error Resume Nextfor Fy_x=0 to ubound(Fy_a)Fy_Cs(Fy_x) = left(Fy_a(Fy_x),instr(Fy_a(Fy_x),"=")-1)NextFor Fy_x=0 to ubound(Fy_Cs)If Fy_Cs(Fy_x)<>"" ThenIf Instr(LCase(Request(Fy_Cs(Fy_x))),"''")<>0 or Instr(LCase(Request(Fy_Cs(Fy_x))),"and")<>0 or Instr(LCase(Request(Fy_Cs(Fy_x))),"select")<>0 or Instr(LCase(Request(Fy_Cs(Fy_x))),"update")<>0 or Instr(LCase(Request(Fy_Cs(Fy_x))),"chr")<>0 or Instr(LCase(Request(Fy_Cs(Fy_x))),"delete%20from")<>0 or Instr(LCase(Request(Fy_Cs(Fy_x))),";")<>0 or Instr(LCase(Request(Fy_Cs(Fy_x))),"insert")<>0 or Instr(LCase(Request(Fy_Cs(Fy_x))),"mid")<>0 Or Instr(LCase(Request(Fy_Cs(Fy_x))),"master.")<>0 ThenSelect Case Fy_Cl Case "1"Response.Write "<Script Language=JavaScript>alert(''
出现错误!参数
"&Fy_Cs(Fy_x)&"
的值中包含非法字符串!
\n\n
请不要在参数中出现:
;,and,select,update,insert,delete,chr
等非法字符!
'');window.close();</Script>" Case "2"Response.Write "<Script Language=JavaScript>location.href=''"&Fy_Zx&"''</Script>" Case "3"Response.Write "<Script Language=JavaScript>alert(''
出现错误!参数
"&Fy_Cs(Fy_x)&"
的值中包含非法字符串!
\n\n
请不要在参数中出现:
;,and,select,update,insert,delete,chr
等非法字符!
'');location.href=''"&Fy_Zx&"'';</Script>"End SelectResponse.EndEnd IfEnd IfNext%>
8 r) j* n; x4 u( M1 S, D
8 g( {* U' E' {/ E2 H6 p
5.MSSQL
注入攻击的防范
; S! ~# B: C( ~& Z/ c/ I/ C
在
SQL Server 2000
的安装目录下的
\NSSQL\BINN
文件夹中有一个危险的
DLL
组件,就是
Xplog70.dll
,建议将它改名或者彻底删除!
# H9 n" q; I0 ^% S! c% r
' g! O# u0 W6 d3 _5 V& e
攻击者可调用
SQL
里的
Master
里的扩展存储过程中的
xp_cmdshell
来执行系统指令。
1
)删除扩展存储过程在控制面板
→
计算机管理
→
Microsoft SQL Server
→
(
Local……
)
→
数据库
→
master
→
扩展存储过程
→
xp_cmdshell
,右击然后删除!也可以使用命令删除:
sp_dropextendedproc ''xp_cmdshell''
接着在系统分区搜索并删除或改名、移除
xplog70.dll
文件防止恶意者恢复上述配置。
2
)删除注册表操作功能删除上述位置下的:
xp_regaddmultistring
(向注册表添加项目)
xp_regdeletekey
(向注册表删除一个项)
xp_regdeletevalue
(向注册表删除一个键值)
xp_regnumvalues
(列举主键下的键值)
xp_regread
(读取一主键下的键值)
xp_regremovemultistring
(从注册表中删除项目)
xp_regwrite
(向注册表中数据)
3
)防范跨库查询每个数据库分别设置一个数据库用户,该用户只能对其拥有的数据库进行查询,禁止其他数据库(包括
4
个系统数据库
Master Model Tempdb Msdb
和两个用户数据库
Pubs t Northwind
)。
4 y! f/ t8 _5 Q7 r- y) R, t0 u% w
; @; ?; A; m8 a H8 l9 V4 | \
如果网站使用了别人的现成代码,则必须使用文本批量替换工具搜索
“POWERED BY……”
之类的版权特征信息,并进行替换,以免源代码存在漏洞时,别人可以通过搜索引擎快速找到你的网站,从而减少被随意入侵的机率。
! o; F" |6 Q( j8 W
& R* p, c5 o( E( b, A
6. MSSQL Server
的基本安全策略
$ `; [% Q( ^7 p5 [
这些步骤是针对任何
SQL Server
安装的部分标准安全
“
最佳策略
”
。
4 w2 R! A& v/ b- k! U0 L
首先
,
打上
SQL SERVER
最新的安全补丁,现在补丁已经出到了
SP3
。下载地址:
sql/downloads/2000/sp3.asp" target=_blank>
http://www.microsoft.com/sql/downloads/2000/sp3.asp
。如果这一步都没有做好,那我们也没有继续下去的必要了。
0 ^' G2 }, K7 {# z' H, f
' [6 _6 E. w$ \1 Y4 R2 c
1.
确保你的
SA
登录帐号的密码非空。只有你的
SA
登录帐号没有安全保障的时候蠕虫才会工作。
* v( X4 A! i' j
因此,你应该遵循在
SQL Server
2 M% _0 H( u3 ]- c: G, i7 _
联机文档中
“
系统管理员(
SA
)登录
”
主题中的推荐模式,确保固有的
SA
帐号具有一个强壮的密码,
7 ~ e" r# u7 p5 F9 ~
即使是你自己从不使用
SA
帐号。
# s5 R5 ], y/ l* B9 Q0 a
2.
在你的互联网网关或防火墙上屏蔽
1433
端口和
/
或指定
SQL Server
监听一个可选的端口。
( o+ M: L. H& N
3.
假如在你的互联网网关上需要利用
1433
端口,启动用于防止此端口滥用的流入
/
流出过滤。
$ H. R) o' U3 M) R& c, E/ M6 A/ o
4.
将
SQLServer
和
SQL Server
客户端运行在微软的
Windows NT
帐号下,而不是
localsystem
。
% O3 ^& t- z; F V2 m
5.
启动
Windows NT
验证,启动监听成功和失败的登录,然后停止并重启
MSSQLServer
服务。设置你的客户端使用
NT
验证。
8 r' f6 k. N; _) n
6.
改默认的
1433
端口,并且将
SQL SERVER
隐藏。这样能禁止对试图枚举网络上现有的
SQL Server
客户端所发出的广播作出响应。另外,还需要在
TCP/IP
筛选中将
1433
端口屏蔽掉,尽可能的隐藏你的
SQL SERVER
数据库。这样子一但让攻击创建了
SQL SERVER
的账号,也不能马上使用查询分析器远程登陆来进行下一步的攻击。单从
ASP
,
PHP
等页面构造恶意语句的话,还有需要查看返回值的问题,总比不上直接查询分析器来得利落。所以我们首先要做到即使让别人注入了,也不能让攻击者下一步做得顺当。修改方法:企业管理器
-->
你的数据库组
-->
属性
-->
常规
-->
网络配置
--> TCP/IP -->
属性 ,在这儿将你的默认端口进行修改,和
SQL SERVER
的隐藏。
8 @$ c/ L Y& J+ {
7.
合理创建角色
% `8 n# b: a- a
SQL INJECTION
往往在
WEB CODE
中产生。而做为系统管理员或者数据库管理员,总不能常常的去看每一段代码。即使常常看代码,也不能保证我们在上面的疏忽。那怎么办?我们就要从数据库角色着手,让数据库用户的权限划分到最低点。
SQL SERVER
的默认权限让人真的很头疼,权限大得非常的高,权限小的又什么都做不了,
SYSADMIN
和
db_owner
真是让人又爱又恨。攻击者一但确认了网站存在
SQL INJECTION
漏洞,肯定有一步操作步骤就是测试网站的
SQL SERVER
使用者具有多大的权限。一般都会借助
SELECT IS_SRVROLEMEMBER(''sysadmin'')
,或者
SELECT IS_MEMBER(''db_owner'')
,再或者用
user = 0(
让字符和数字进行比较,
SQL SERVER
就会提示了错误信息,从该信息中即可知道一些敏感信息
)
等语句进行测试。方法还有,我也不敢多说了。其一怕错,其二怕联盟中的人扁。在当前,如果网站的数据库使用者用的是
SA
权限,再加上确认了
WEB
所处在的绝对路径,那么就宣告了你的网站的
OVER
。
db_owner
权限也一样,如果确认了绝对路径,那么有
50
%的机会能给你的机器中上
WEB
方式的木马,如海阳等。所以这儿我们确认了一点,我们必须要创建自已的权限,让攻击者找不着下嘴的地方。在这儿引用一个
SQL SERVER
联机帮助中的例子:
8 q* i9 T; M2 q+ U
6 e+ B9 d k- \
创建
SQL Server
数据库角色的方法(企业管理器)
; p3 y: V$ U- z v" q: O
创建
SQL Server
数据库角色
( Z7 S9 w( h) n V+ S x
1.
展开服务器组,然后展开服务器。
$ U2 L, q E/ i' L' Q
2.
展开
"
数据库
"
文件夹,然后展开要在其中创建角色的数据库。
2 b+ |& p% V1 z4 t# T1 O' I2 L3 G
3.
右击
"
角色
"
,然后单击
"
新建数据库角色
"
命令。
5 B/ P( E+ [9 Y& t
4.
在
"
名称
"
框中输入新角色的名称。
3 w6 |* U* y( x1 }
5.
单击
"
添加
"
将成员添加到
"
标准角色
"
列表中,然后单击要添加的一个或多个用户。(可选)
; T* A2 S7 n2 }; J, K d
只有选定数据库中的用户才能被添加到角色中。
) ~+ _1 T& u7 f
8.
合理的权限配置
6 H* C* I) B' U j2 O4 p$ A5 G
对象权限
3 h: M- ?/ Y$ \: N6 z
处理数据或执行过程时需要称为对象权限的权限类别:
3 h7 v; x% \4 @8 q$ ]
· SELECT
、
INSERT
、
UPDATE
和
DELETE
语句权限,它们可以应用到整个表或视图中。
$ P) E* h+ I3 v
· SELECT
和
UPDATE
语句权限,它们可以有选择性地应用到表或视图中的单个列上。
; b2 @5 k9 | a$ _- B& b
· SELECT
权限,它们可以应用到用户定义函数。
; k# Y' I; U0 }* U% _
· INSERT
和
DELETE
语句权限,它们会影响整行,因此只可以应用到表或视图中,而不能应用到单个列上。
, Z. ^, v4 c# X, f& x
· EXECUTE
语句权限,它们可以影响存储过程和函数。
Y7 b4 z. ?! x7 U% K( K1 C' m$ X4 z
5 I, c$ w$ S$ p* l I6 c; r
语句权限
1 m' m2 Y* _' p) x, G# b
创建数据库或数据库中的项(如表或存储过程)所涉及的活动要求另一类称为语句权限的权限。例如,如果用户必须能够在数据库中创建表,则应该向该用户授予
CREATE TABLE
语句权限。语句权限(如
CREATE DATABASE
)适用于语句自身,而不适用于数据库中定义的特定对象。
- P" p1 z( ^3 _
语句权限有:
" s# ~/ G8 ?3 J
· BACKUP DATABASE
7 L) ]7 X, |' a
· BACKUP LOG
' y4 V1 q# w! t2 T, B
· CREATE DATABASE
/ O6 ?. l" G) }3 L
· CREATE DEFAULT
9 N+ y! _$ O! ~( j& n
· CREATE FUNCTION
, |$ O3 N3 ]0 F6 H2 z) f' m
· CREATE PROCEDURE
0 R5 }) \+ H* d4 ~3 @
· CREATE RULE
" }/ }; Y) U) ]1 j6 G8 L" N M( \
· CREATE TABLE
8 @# t! v+ A3 \, Q6 R; U
· CREATE VIEW
$ \! K$ O! a* X ?
+ V+ h) i7 g1 v8 w+ H+ f$ t
暗示性权限
V: P. P& o% M1 w5 z
暗示性权限控制那些只能由预定义系统角色的成员或数据库对象所有者执行的活动。例如,
sysadmin
固定服务器角色成员自动继承在
SQL Server
安装中进行操作或查看的全部权限。
. y# E! u/ t, k2 Q" J, m I1 V. M
数据库对象所有者还有暗示性权限,可以对所拥有的对象执行一切活动。例如,拥有表的用户可以查看、添加或删除数据,更改表定义,或控制允许其他用户对表进行操作的权限。
6 P8 ~4 X8 F8 O' w
, D8 i# S, a+ w6 C0 d( I% e; ~
db_owner
在数据库中有全部权限。
8 f% S- I% l3 A
db_accessadmin
可以添加或删除用户
ID
。
: D- O. v: L: d( Z
db_securityadmin
可以管理全部权限、对象所有权、角色和角色成员资格。
' K! y7 P3 f" a3 d g* Y3 m
db_ddladmin
可以发出
ALL DDL
,但不能发出
GRANT
、
REVOKE
或
DENY
语句。
" Q, u9 x$ H& s+ R& ?! X U
db_backupoperator
可以发出
DBCC
、
CHECKPOINT
和
BACKUP
语句。
0 G! `+ [( X: Z# R: M$ d: h6 W
db_datareader
可以选择数据库内任何用户表中的所有数据。
$ Z, ?; S9 _' o1 ~% |& ^8 }0 q
db_datawriter
可以更改数据库内任何用户表中的所有数据。
+ [4 ^! L! f: M# m, ~: ?" m% s
db_denydatareader
不能选择数据库内任何用户表中的任何数据。
( Y( U0 C4 \& ?, |
db_denydatawriter
不能更改数据库内任何用户表中的任何数据。
3 g9 y! J# I/ t' h; g6 \$ a
u0 b' ]+ p" F, H
在这儿把新建的数据库角色的权限配置好,比如需要使用哪个表、视图、存储过程等。然后把
Db_owner
和
db_securityadmin
、
db_backupoperator
取消,不给攻击者
BACKUP DATABASE
和
CREATE TABLE
的机会,一但攻击者具有这两个权限,那么你的网站就还处在十分危险的状态。还有注意一下,在创建数据库账号时,千万不能对服务器角色进行选择。
$ p. K) \: r( u( `* s
9.
修改
SQL SERVER
内置存储过程。
SQL SERVER
估计是为了安装或者其它方面,它内置了一批危险的存储过程。能读到注册表信息,能写入注册表信息,能读磁盘共享信息等等
……
各位看到这儿,心里可能会在想,我的网站中有其它的代码,又不像查询分析器那样能查接将结果输出。给你这个权限,又不能怎么样,还是看不到信息。如果各位这样想就大错特错了。提示一下,如果攻击者有
CREATE TABLE
的权限,那么创建一个临时表,然后将信息
INSERT
到表中,然
SELECT
出来,接着跟数字进行比较,让
SQL SERVER
报错,那么结果就全出来了
……
所以我们要报着宁错杀,不放过的态度进行修补。
3 a3 c% |. l" y& u" b e
3 c- {9 e3 \% R) u z' X; z- ^
先来列出危险的内置存储过程:
0 Y: z: Q! e9 P# r; l- } T
1 t) i- M7 c) e1 [
xp_cmdshell
" `/ |1 b' Y. L# [, O' h
xp_regaddmultistring
; ~. S- m; F! N) Q. A: k7 m. n2 @
xp_regdeletekey
" r' Y& c8 f' |6 g
xp_regdeletevalue
$ O% A. d+ F, e. m
xp_regenumkeys
5 @" d- ~6 D$ s5 y
xp_regenumvalues
8 S0 ]# \) f) l! {, @
xp_regread
( R* J0 r* t( r- B2 `( L' u
xp_regremovemultistring
1 |$ w* |# D( S9 Z4 n4 I% I$ V
xp_regwrite
) r; l* |; [5 N% i7 `. m1 H2 r
* I- a# B0 k, v! i
ActiveX
自动脚本:
/ `4 v' a$ u( e# t
0 }& @( m. j3 q& x; I0 A5 d
sp_OACreate
2 h- A0 j" F# a+ ^
sp_OADestroy
0 A) j0 p9 L' g( c
sp_OAMethod
8 M r+ g& h/ H: v5 B3 O0 e
sp_OAGetProperty
1 w$ B: ^ K1 C4 h/ M
sp_OASetProperty
2 t+ R n# E8 _! v) ]$ _) \
sp_OAGetErrorInfo
2 g( k. ?8 C" K, |4 p, K
sp_OAStop
8 c6 C! B4 d7 b
( i5 C9 ]/ p: Z6 H3 R
以上各项全在我们封杀之列,例如
xp_cmdshell
屏蔽的方法为:
sp_dropextendedproc ''xp_cmdshell''
,如果需要的话,再用
sp_addextendedproc ''xp_cmdshell'', ''xpsql70.dll''
进行恢复。如果你不知道
xp_cmdshell
使用的是哪个
.dll
文件的话,可以使用
sp_helpextendedproc xp_cmdshell
来查看
xp_cmdshell
使用的是哪个动态联接库。另外,将
xp_cmdshell
屏蔽后,我们还需要做的步骤是将
xpsql70.dll
文件进行改名,以防止获得
SA
的攻击者将它进行恢复。
7 B) Q. z- E4 W; D+ e: y& _+ }
欢迎光临 三千论坛 (http://www.3000y.com.cn/)
Powered by Discuz! X3.4