oracle黑客手册(oracle操作手册)
本文目录一览:
怎么正确的使用SQLNET.ALLOWED
由于Oracle数据库被广泛应用,其口令加密算法也是备受关注。最早在1993年comp.databases.oracle.server新闻组中有人披露了加密算法的大部分细节。十年后,一本名为《Special Ops Host and Network Security for Microsoft, Unix and Oracle》的书中补全了算法最重要的一个环节——DES算法的KEY。至此,口令加密算法已无秘密可言。接踵而来的是互联网上出现多个了Oracle口令破解工具。Oracle在2007年推出的最新版本11g中,使用了新的更安全的加密算法,但是新算法的细节很快又在互联网上被公开。为提供兼容,11g版本保留了11g以前版本使用的加密口令,利用这一漏洞仍然可以对11g版本的加密口令进行破解。
到底怎样才能保证数据库口令的安全呢?本文首先介绍Oracle数据库各版本口令加密算法的内容,然后针对算法重点介绍加强数据库安全性的应对措施。
口令加密算法
从Oracle7到Oracle 10gR2,使用DES算法对口令进行加密。对算法进行分析,可以得出如下结论:口令不区分大小写,任意大小写组合均可登录;由于只使用固定KEY,只要用户名和口令相同,在任一DB中存放的加密口令都相同;由于采用了用户名和口令串接的方式,所以用户aaa、口令bbbccc的加密值与用户aaabbb、口令ccc完全相同。
Oracle 11g版本的加密口令存放在SYS.USER$表中的SPARE4列中,而PASSWORD列中仍保留以前版本加密口令。由于客户端计算加密口令需要用到SALT,在建立连接时,服务器端将SALT明文传送给客户端程序。Oracle 11g中新的口令加密算法中区分大小写;由于加入了随机数SALT,两个不同用户的口令即便完全相同,计算得到的SHA1的散列值也不同;不同DB中相同用户相同口令,SHA1散列值也可能不同。
目前,大多数破解工具的工作方式是得到加密口令后,对每一个可能的口令进行加密计算,比较计算结果而确定是否正确。由此,抵御口令破解可以从三个方面着手:防止加密口令外泄;在加密口令落入黑客手中后,口令也是不可破解的,或尽量增加破解的时间;即便是口令被破解,也是无用的,不能存取数据库。
防止加密口令泄露
1.应用“最少权限”原则,尽量限制可存取加密口令用户的人数
在数据库中检查具有存取SYS.USER$或DBA_USERS权限的用户,并从不需要的用户中收回权限。但是操作并不简单,这也是数据库管理工作的特点。每一厂商的软件中都实现了SQL标准之外的扩充,并且每一版本都有差异。限于篇幅,不可能对所有本文中建议的措施进行详细的解释说明,仅以此处检查权限为例展示DBA工作的复杂性。本文中如未说明,则默认版本为11g。应用于11g以前版本时,请读者确认是否需要修改。
检查权限主要的工具是数据字典视图(也可以直接存取SYS用户的基表,但基表的定义没有公布,官方不提供技术支持)。视图DBA_TAB_PRIVS存放了数据库中数据对象上的授权信息。假定用户A1和A2可以存取SYS.USER$表,检查在SYS用户USER$上有存取权限的用户,可执行如下语句:
SELECT GRANTEE FROM DBA_TAB_PRIVS WHERE TABLE_NAME=‘USER$’;
我们已经知道用户A1和A2,都可以存取SYS.USER$表,但为什么在上面查询结果中没有出现呢?这是因为在Oracle的权限管理中,对一个表的存取权限还可以通过系统权限或角色赋予,而DBA_TAB_PRIVS中仅列出了直接的对象权限的授予信息。对于SYS.USER$表而言,系统权限SELECT ANY DICTIONARY和角色DBA都包含了这一表的存取权限。所以完整列出所有可存取这一表的用户应增加下面两条查询语句的结果:
SELECT GRANTEE FROM DBA_SYS_PRIVS WHERE PRIVILEGE=‘SELECT ANY DICTIONARY’;
SELECT GRANTEE FROM DBA_ROLE_PRIVS WHERE GRANTED_ROLE=‘DBA’;
通过上面的查询语句,还是会遗漏某些用户。如果把DBA角色授权给另一角色Admin,然后又将Admin角色授权给另一用户NEWU,则此用户可存取SYS.USER$表,但在上述三个查询中并没有直接列出NEWU的名字(角色Admin会出现在第三个查询语句的结果中)。
显然,Oracle的授权构成了一棵树,完整的信息需要一段PL/SQL程序来完成。(对于11g以前版本,还需要检查对DBA_USERS视图有存取权限的用户和角色。SELECT_CATALOG_ROLE角色如被授权,则可以存取所有数据字典视图,但不能存取SYS的基表。)
2.设定对加密口令存取的审计
如果当前系统中只有SYSDBA可以存取USER$,则一个变通办法是审计SYSDBA的所有操作,其中也包括对USER$的存取。设置初始化参数audit_sys_operations =TRUE,重新启动数据库后激活对SYSDBA操作的审计。
审计文件的存放位置为:
11g版本中为:$ORACLE_BASE/admin/SID/ adump/ *.aud
11g以前版本为: $ORACLE_HOME/rdbms/audit/ *.aud。
严格限制和监视SYSDBA用户活动的最好办法是使用Oracle Database Vault组件。
3.在操作系统级限制对数据库数据文件的存取
SYSDBA用户的加密口令存放在$ORACLE_HOME/dbs下的口令文件orapw〈SID〉中。SYS.USER$表同样需要在数据文件中存放,多数为SYSTEM表空间的第一个数据文件中。此外,EXPORT文件、REDOLOG文件以及TRACE文件中都可能出现加密口令。需要严格限制上述文件的存取权限。
4.防止网络窃听
在建立连接时,客户端需要向服务器端传送用户名和口令,并且服务器端与客户端需要相互发送这次会话使用的SESSION KEY。Oracle采用Diffie-Hellman KEY交换算法和自己开发的O3LOGON协议完成上述任务。算法的细节同样已在互联网上被公开。建立连接时上述信息如果被截获,同样可以被用来破解口令。更为严重的是,如果黑客事先已经获得加密口令,结合SESSION KEY的信息,则不需要任何破解,执行简单还原运算就可算出口令明文。
另外,设计SID时不要使用如ORCL、TEST、PROD等常用名字,设定PORT号为远远大于1521的数,都可以增加黑客SID扫描的难度和时间。
5. 删除旧版的加密口令
存放在Oracle 11g数据库中的以前版本的加密口令是口令破解工具的一个突破口。在没有兼容性限制的系统中,可以考虑从系统中删除旧版口令,从而增加破解难度。
具体操作如下:
在SQLNET.ORA中增加一行:SQLNET.ALLOWED_LOGON_VERSION=11(Oracle手册中格式介绍有错误,不能加括号:…=(11)),指定最低版本。
以SYSDBA登录后,执行以下语句,删除旧版口令。
update sys.user$ set password=NULL;
delete from user_history$;
commit;
设置修改后,基于OCI的工具如SQLPLUS、10gR1和10gR2版本都可以正常登录,而JDBC type-4 则只有11g版本才允许登录。
提高口令强度
1.禁止使用缺省口令,禁止与用户名同名的口令,禁止字典词汇的口令
Oracle 11g中提供一个视图DBA_USERS_WITH_DEFPWD,可以方便地查出系统中使用缺省口令的所有用户,不足的是还有不少遗漏。读者可以在互联网找到缺省口令的列表,虽然是非官方的,但是比DBA_USERS_WITH_DEFPWD使用的官方的列表更全。破解工具附带的词汇表有的包括了大型英文词典中全部词汇,并支持词汇与“123”之类的常用后缀进行组合。需要注意的是,有的词汇表中已经出现了“zhongguo”这样的字符串,所以汉语拼音组成的口令也是不安全的。检查系统中是否存在弱口令的最常用方法就是使用前述口令破解工具进行攻击。
2.规定口令最小字符集和口令最短长度
口令字符集最小应包括字母、数字和特殊符号,口令长度最短应不少于8位,对于安全性要求高的系统,最短长度应为12位以上。同样,问题的关键在于DBA指定初始口令以及用户修改口令时保证不违反上述这些规定。每一用户都对应一个Profile,如在Profile中指定口令验证函数,则每当创建或修改口令时,会自动检查是否满足验证程序中所设定的条件,如果不满足,则口令修改失败。对口令明文进行检查,显然要比对加密口令破解效率高。此外,口令创建之时进行检查可以及时封杀弱口令,不给黑客留下破解的窗口。
指定口令验证函数的语句为:
ALTER PROFILE DEFAULT LIMIT PASSWORD_VERIFY_FUNCTION 口令验证函数名;
上例中,为“DEFAULT” Profile指定了验证函数。对用户进行分类后,应当为每一类用户分别创建自己的Profile,而不是全部使用DEFAULT。关闭口令验证函数的语句为:
ALTER PROFILE DEFAULT LIMIT PASSWORD_VERIFY_FUNCTION NULL;
在$ORACLE_HOME/rdbms/admin/下,脚本文件UTLPWDMG.SQL提供了示例的口令验证函数,执行这一脚本,将创建一名为VERIFY_FUNCTION的函数( Oracle 11g中,增加新函数verify_function_11G )。这一函数可以对口令长度是否同时出现了字母数字符号进行检查,检查是否与用户名同名,也检查口令是否是几个最常用的词汇,如welcome、database1、account1等。最后,口令修改时检查新旧口令是否过于相似。读者实际使用时应该根据系统需要对这一函数进行必要的修改和扩充。
3.使用易记忆的随机口令限定口令长度后,如果口令没有规律很难记忆,则用户会采用他们自己的方式记住口令,大大增加了遭受社会工程攻击的可能性。DBA需要帮助用户设计一个容易记忆而又不易破解的口令。一个简单易行的方法是找用户非常熟悉的一个句子,如One world One dream,然后将每一个空格替换为数字或符号:One3world2One1dream#。
定期更换口令
抵御口令破解要从多方面着手
数据库中存在多种权限用户,各种授权用户构成一棵树
应对口令泄露或被破解的措施是强制定期更换口令,设定口令重复使用限制,规定封锁口令的错误次数上限及封锁时间。即便是加密口令落入黑客手中,在被破解之前或入侵之前,修改了口令,则口令破解变得毫无意义。为了方便记忆,一般用户有重新使用之前过期口令的倾向,如果对重用不加控制,则定期更换口令将失去意义。上述对口令的管理仍然是通过Profile完成:
ALTER PROFILE DEFAULT LIMIT
PASSWORD_LIFE_TIME 30
PASSWORD_GRACE_TIME 7
PASSWORD_REUSE_TIME 365
PASSWORD_REUSE_MAX 0
FAILED_LOGIN_ATTEMPTS 10
PASSWORD_LOCK_TIME UNLIMITED
PASSWORD_VERIFY_FUNCTION my_verify_function;
上面语句制定的口令管理政策为:口令的有效期为30天,随后有7天的宽限期,宽限期后口令“过期”,必须更改口令后才能登录。只有经过365天后才能重新使用以前的口令。在连续10次输入口令错误后,账号被封锁,设定不自动解锁,必须由DBA手动解除封锁。口令验证函数为my_verify_function。
Oracle 11g以前版本,缺省设置中没有设定口令的有效期,而在Oracle 11g中缺省设置有效期为180天。程序中直接写入口令的应用在升级到11g时一定要注意有效期问题,避免半年后应用突然无法自动运行。另外,口令的有效期对SYS用户不起作用,DBA一定要主动定期更换口令。
另外一个措施是对登录数据库服务器的主机进行限定,如指定网段或指定IP地址。进一步限定客户端允许执行的程序,如对非本地登录禁止使用SQLPLUS,只允许执行某特定应用。
认真实施本文中给出的措施后,可以很有效地防止口令被破解。然而我们的目的是提高数据库系统的安全性,而不仅仅是保证口令不被破解。数据库系统安全的任何一个环节出现问题,都会导致前功尽弃。黑客的目的是入侵系统盗窃数据,是不会按常理出牌的,会尝试各种手段方式,如社会工程、安全漏洞、物理入侵等等,而不会执着地在口令破解上与我们较劲。这一点需要我们经常提醒自己,从而切实保证数据库系统安全。
TechTarget中国原创内容
请给一些Windows中网络编程的资料
为一个不断进取的编程者,我们常常不满足于编程语言所提供的一般功能,总是希望能够实现一些特殊的功能,这有时不但是我们程序的要求,有时也是编程者心理上需要(试想,还会有什么比在深夜中巧妙解决一个难题而更令人兴奋呢?)。VisualBasic,做为一个当前最流行的快速编程环境,就给我们提供了实现这些目标的平台,事实上,它无限扩展的API接口可以实现所有WINDOWS下可以实现的功能。然而对于初学者来说,“浩瀚“的API函数总是显得那么神奇与不可琢磨,因此在实际应用过程中不能够灵活应用。下面我将结合两个小例子来示范介绍VB中调用API函数的步骤和功能,并总结说明在实际工作中如何提高这方面的技巧。例子在WINDOWS98下采用VB6.0编译。
一.限制鼠标的移动
---- 有时我们的软件要求用户在未完成某一任务时,鼠标不能移出当前活动控件,换句话就是将鼠标限制在控件的内部,直到任务完成或用户中断为止。这个功能借助API函数实现起来思路很清楚,代码也很简洁。其思路是先确定当前鼠标的位置;然后确定当前活动控件的大小;最后将鼠标限制在活动控件内。(下面忽略项目建立等过程)
---- 1.建立一个新项目:新窗体为form1,在form1上添加一个commandbutton,设置其Name=CMButton1;Caption=“将鼠标限制在此按钮中“
---- 2.拷贝API函数和POINTAPI结构:打开VB6.0自带的API浏览器,调入WIN32API.txt文件,复制以下结构和函数声明到form1的声明部分:
Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Private Type POINTAPI
x As Long
y As Long
End Type
Private Declare Function ClientToScreen Lib
“user32“ Alias “ClientToScreen“ (ByVal
hwnd As Long, lpPoint As POINTAPI) As Long
‘用来确定当前鼠标的位置
Private Declare Function ClipCursor Lib
“user32“ Alias “ClipCursor“ (lpRect As Any)
As Long ‘用来限定当前鼠标的活动范围
---- 3.定义一个通用过程ConfineTo
Public Sub ConfineTo (myCtl As Object)
On Error Resume Next
Dim tmpRect As RECT
Dim pt As POINTAPI
With myCtl
If TypeOf myCtl Is Screen Then ‘锁定在屏幕范围内
tmpRect.Left = 0
tmpRect.Top = 0
tmpRect.Right = (.Width \ Screen.TwipsPerPixelX)
tmpRect.Bottom = (.Height \ Screen.TwipsPerPixelY)
Elseif TypeOf myCtl Is form ‘锁定在窗体范围内
tmpRect.Left = (.Left \ Screen.TwipsPerPixelX)
tmpRect.Top = (.Top \ Screen.TwipsPerPixelY)
tmpRect.Right = (.Left + .Width) \ Screen.TwipsPerPixelX
tmpRect.Bottom = (.Top + .Height) \ Screen.TwipsPerPixelY
else
pt.X = 0
pt.Y = 0
Call ClientToScreen(.hWnd, pt)
‘获取当前控件在屏幕上的位置
tmpRect.Left = pt.X
‘保存当前控件位置
tmpRect.Top = pt.Y
pt.X = .Width
pt.Y = .Height
Call ClientToScreen(.hWnd, pt)
tmpRect.Bottom = pt.Y
tmpRect.Right = pt.X
End If
Call ClipCursor(tmpRect)
End With
End Sub
---- 4.在 CMButton1_Click()中加入以下代码
Static Cliped As Boolean
‘静态变量用来控制状态切换
If Not Cliped Then
ConfineTo Cmbutton1
Cliped = True
Else
ConfineTo Screen ‘取消鼠标限制
Cliped = True
End If
---- 5. 运行后,鼠标点击cmbutton1,此时鼠标只能被锁定在此按钮内部,再次点击按钮,限制取消。
二.创建临时文件
---- 临时文件用来保存软件运行过程中的临时变化,这对于熟悉WORD等软件的人来说,经常会遇到。那么临时文件是如何产生的呢,其实很简单,只需要一个API函数就可以。
---- 1.拷贝声明函数(方法同前)
Private Declare Function GetTempFileName Lib “kernel32“ _
Alias “GetTempFileNameA“ (ByVal lpszPath As String, _
ByVal lpPrefixString As String, ByVal wUnique As Long, _
ByVal lpTempFileName As String) As Long
参数定义如下:
lpszPath =传入保存临时文件的路径 ,如“C:\mytemp“
lpPrefixString=传入临时文件名开始的前三个字母,
起到帮助识别临时文件来源的作用。
wUnique =0 ,windows随机产生文件名;否则安其值定义文件名。
lpTempFileName=返回随机文件名
---- 2.返回临时文件名
Private Function GenTempName(sPath As String)
Dim sPrefix As String
Dim lUnique As Long
Dim sTempFileName As String
If IsEmpty(sPath) Then sPath = “c:\temp“
sPrefix = “TVB“
lUnique = 0 ‘windows随机给名
sTempFileName = Space$(100)
GetTempFileName sPath, sPrefix, lUnique, sTempFileName
sTempFileName = Mid$(sTempFileName, 1,
InStr(sTempFileName, Chr$(0)) - 1) ‘去掉多余空格
GenTempName = sTempFileName
End Function
---- 3.将下面代码加入到form1_click()事件中
MsgBox GenTempName(“c:\temp“)
---- 4.运行,鼠标点击form,弹出msgbox,显示生成“c:\temp\TVB724.tmp“文件,用文件管理器查看,在c:\temp下有TVB724.tmp 文件,长度为0K。
---- 需要注意的是,传入的路径必须是有效路径,否则GenTempName函数返回0,lpTempFileName中也没有临时文件名。
三.结束语
---- 从上面可以看出,API函数的确简单高效,但也充满一些看似高深的变量而使人却步。我们不禁会问,究竟什么时候要用到API函数?具体哪些函数可以解决我的问题?,那些函数中的变量都代表什么?其实对这些问题,即使对一个VB高手也难给出明确的回答,因为API函数库实在太庞大了,每一个人最终只能熟悉其中的一小部分(这也可能是调用API的文章层出不穷的原因吧)。总结自己的一点经验,我觉得应该注意以下几点。
---- 1.熟练掌握VB基本技巧,了解其所能所不能,这是最基本的要求。
---- 2.了解WINDOWS内部控制机理,这样对一些复杂的问题就可以逐步分析其调用机制,初步确定采用哪部分的API函数来解决问题。
---- 3.案头必备一本最新的VB版的WINDOWS API 大全,推荐机械工业出版社的 。书中给出了每一个VB可以调用的API函数的详细说明,可以帮助精确了解所需要的API函数的变量声明。
---- 4.多看别人的程序。报纸杂志,尤其是网上这方面的文章数不清。这是最快的方法。
---- 5.随用随查。永远不要在用不到的函数上浪费宝贵的时间
计算机论文,帮帮手~!!
基于校园网网络信息安全管理的研究摘要
在Internet以迅猛势头不断发展的过程中,CERNET(中国教育和科研计算
机网)也由初建、成长,并逐渐走向集科研、管理、应用并重发展的成熟阶段。
当前校园网上各种管理和业务应用正在逐步扩大,非专业用户的数量也在急剧
增长,使用的失误等现象造成的后遗症也越来越明显,从而使校园网的安全管
理显得尤为突出。
校园网中的应用服务多种多样,用户在访问不同的应用服务时要频繁登陆
应用系统,只有用户输入正确的用户名和密码才能被认证系统授予访问权限,
这不仅给用户带来了不便,也给校园网的管理带来了不便。因为不同的应用服
务各自都有自己的安全措施,这就使管理员在权限管理上的复杂度大大增加。
为了解决校园网安全管理中方便性和安全性的矛盾问题,文章从校园网存
在的安全需求入手,对基于这个需求而产生的安全认证系统和授权管理,从理
论和实践两个方面,进行了较深入的研究和探索。
为实现安全认证,文章中对校园网安全认证系统中安全方面存在的问题进
行了分析,设计了一套身份认证系统,该系统可与各个应用服务器很好地集成
在一起,在保证安全的前提下,用户凭智能卡访问,只需在第一次登录时识别
用户指纹,进行身份认证,获取票据。在票据有效期内,用户可访问校园网中
所有应用服务,而无需再进行身份认证。整个访问过程中对用户来说都是透明
的。在认证系统的设计中,对认证系统的协议流程进行了描述,根据协议流程
划分了系统的各个功能模块,并分析了各模块的功能。在认证系统的实现中,
为解决用户访问过程中的透明问题,引入客户端代理与服务器端代理来实现。
同时使用PKI公钥密码体制实现了用户身份信息的加密传输。
为实现授权管理,文章中分析了如何在校园网环境下实施基于角色的访问
控制的技术,设计了总体结构和关键实现技术。还对一种扩展型基于角色的访
问控制模型进行了较深入的研究,使基于角色的访问控制模型更加完善。
关键词:身份认证,访问控制,角色,指纹,票据STRACT
With the booming development of Internet,CERNET(China Education and Research
Network)passed her childhood,growing up gradually.Now she is stepping to her mature
age,and combined research,management and application functions with her.Because a lot
of management functions and applications are gradually expanding in campus network,the
number of non-professional users are also rapidly growth,the after-effects phenomena
caused by the errors in the use more and more obvious,so that the campus network
security management is particularly prominent.
The campus network applications and services are various.Users access the different
application services to log in the application system frequently,only the user enters the
correct user name and password to the authentication system,they can be granted
the permission to access the application services.Which not only bring
inconvenience to users,but also bring inconvenience to the campus network
security management.Because of the different applications have their own security
measures,which enable administrators to manage permissions greatly increased
complexity.
In order to realize of security certification,the security problems are analyzed in this
thesis on the campus network security authentication system,a set of identity
authentication system is designed,which can be integrated well with the application server.
Under the security premise,the user access with the intelligent card,only need to identify
the fingerprint of user when they access the system firstly,and get the ticket.In the validity
of ticket,user can access all application services without further authentication in the
campus network.The other processes of all application services are transparent to users.In
the design of authentication system,the protocol process of authentication system is
described.In accordance with the protocol process,the function modules are divided and
analyzed.In the authentication system,in order to solve the transparent problem on the
user accessing,we introduce the client proxy and server proxy to achieve.As the same
time,we use the PKI public key cryptosystem to achieve the transmission of user’s
encrypted information.
In order to the authentication management,an access control system based on
RBAC(Role-Based Access Control)is actualized under the campus network environment,
the overall structure and key technology is designed,and makes much further research for
an extended access control model–ERBAC(Extended Role-Based Access Control),
which enables the RBAC model more perfect.
Key words:identify authentication,access control,role,fingerprint,ticket,目录
第1章绪论..............................................1
1.1研究背景..................................................1
1.2研究目标及解决的主要问题..................................3
1.3章节结构..................................................4
第2章信息安全技术......................................5
2.1信息安全定义..............................................5
2.2信息安全相关技术..........................................6
2.2.1密码技术............................................6
2.2.2身份认证技术........................................7
2.2.3防火墙技术.........................................10
2.2.4智能卡技术.........................................12
2.2.5指纹识别技术.......................................12
2.3访问控制策略.............................................12
2.3.1自主访问控制模型...................................13
2.3.2强制访问控制模型...................................13
2.3.3基于角色访问控制...................................14
2.4计算机信息系统安全评估准则...............................15
第3章安全认证系统总体设计.............................17
3.1校园网安全需求分析.......................................17
3.1.1用户群分析.........................................17
3.1.2业务应用分析.......................................18
3.1.3网络系统分析.......................................19
3.2校园网安全认证系统问题分析...............................21
3.2.1问题分析...........................................21
3.2.2系统考虑解决的问题.................................24
3.3校园网安全认证系统设计...................................26
3.3.1认证系统协议设计方法...............................26
3.3.2一次性认证总体设计.................................28...................................30
3.3.4认证系统模块功能分析...............................33
第4章安全认证系统实现的研究...........................40
4.1用户信息注册管理模块的实现...............................40
4.2认证服务器模块的实现.....................................41
4.3客户端代理(CP)的实现.....................................42
4.4主机登录模块的实现.......................................45
4.5密钥生成及密钥的分配.....................................46
4.6服务器端代理(SP)的实现...................................47
4.7用户登录管理模块的实现...................................48
4.8认证系统分析.............................................49
第5章授权管理的研究...................................51
5.1基于角色的访问控制(RBAC)模型.............................51
5.2基于RBAC访问控制在校园网中的设计.........................53
5.3对访问控制模型的进一步研究...............................56
5.3.1 RBAC模型存在的问题.................................56
5.3.2扩展型基于角色的访问控制模型(ERBAC)..............57
5.3.3对ERBAC模型的改进..................................58
第6章总结.............................................61
参考文献................................................63
致谢..................................................68
攻读学位期间的发表文章..................................69
你好,我有相关论文资料(博士硕士论文、期刊论文等)可以对你提供相关帮助,需要的话请加我,7 6 1 3 9 9 4 5 7(扣扣),谢谢。
如何应对被公开的Oracle口令加密算法
由于Oracle数据库被广泛应用,其口令加密算法也是备受关注。最早在1993年comp.databases.oracle.server新闻组中有人披露了加密算法的大部分细节。十年后,一本名为《Special Ops Host and Network Security for Microsoft, Unix and Oracle》的书中补全了算法最重要的一个环节——DES算法的KEY。至此,口令加密算法已无秘密可言。接踵而来的是互联网上出现多个了Oracle口令破解工具。Oracle在2007年推出的最新版本11g中,使用了新的更安全的加密算法,但是新算法的细节很快又在互联网上被公开。为提供兼容,11g版本保留了11g以前版本使用的加密口令,利用这一漏洞仍然可以对11g版本的加密口令进行破解。
到底怎样才能保证数据库口令的安全呢?本文首先介绍Oracle数据库各版本口令加密算法的内容,然后针对算法重点介绍加强数据库安全性的应对措施。
口令加密算法
从Oracle7到Oracle 10gR2,使用DES算法对口令进行加密。对算法进行分析,可以得出如下结论:口令不区分大小写,任意大小写组合均可登录;由于只使用固定KEY,只要用户名和口令相同,在任一DB中存放的加密口令都相同;由于采用了用户名和口令串接的方式,所以用户aaa、口令bbbccc的加密值与用户aaabbb、口令ccc完全相同。
Oracle 11g版本的加密口令存放在SYS.USER$表中的SPARE4列中,而PASSWORD列中仍保留以前版本加密口令。由于客户端计算加密口令需要用到SALT,在建立连接时,服务器端将SALT明文传送给客户端程序。Oracle 11g中新的口令加密算法中区分大小写;由于加入了随机数SALT,两个不同用户的口令即便完全相同,计算得到的SHA1的散列值也不同;不同DB中相同用户相同口令,SHA1散列值也可能不同。
目前,大多数破解工具的工作方式是得到加密口令后,对每一个可能的口令进行加密计算,比较计算结果而确定是否正确。由此,抵御口令破解可以从三个方面着手:防止加密口令外泄;在加密口令落入黑客手中后,口令也是不可破解的,或尽量增加破解的时间;即便是口令被破解,也是无用的,不能存取数据库。
防止加密口令泄露
1.应用“最少权限”原则,尽量限制可存取加密口令用户的人数
在数据库中检查具有存取SYS.USER$或DBA_USERS权限的用户,并从不需要的用户中收回权限。但是操作并不简单,这也是数据库管理工作的特点。每一厂商的软件中都实现了SQL标准之外的扩充,并且每一版本都有差异。限于篇幅,不可能对所有本文中建议的措施进行详细的解释说明,仅以此处检查权限为例展示DBA工作的复杂性。本文中如未说明,则默认版本为11g。应用于11g以前版本时,请读者确认是否需要修改。
检查权限主要的工具是数据字典视图(也可以直接存取SYS用户的基表,但基表的定义没有公布,官方不提供技术支持)。视图DBA_TAB_PRIVS存放了数据库中数据对象上的授权信息。假定用户A1和A2可以存取SYS.USER$表,检查在SYS用户USER$上有存取权限的用户,可执行如下语句:
SELECT GRANTEE FROM DBA_TAB_PRIVS WHERE TABLE_NAME=‘USER$’;
我们已经知道用户A1和A2,都可以存取SYS.USER$表,但为什么在上面查询结果中没有出现呢?这是因为在Oracle的权限管理中,对一个表的存取权限还可以通过系统权限或角色赋予,而DBA_TAB_PRIVS中仅列出了直接的对象权限的授予信息。对于SYS.USER$表而言,系统权限SELECT ANY DICTIONARY和角色DBA都包含了这一表的存取权限。所以完整列出所有可存取这一表的用户应增加下面两条查询语句的结果:
SELECT GRANTEE FROM DBA_SYS_PRIVS WHERE PRIVILEGE=‘SELECT ANY DICTIONARY’;
SELECT GRANTEE FROM DBA_ROLE_PRIVS WHERE GRANTED_ROLE=‘DBA’;
通过上面的查询语句,还是会遗漏某些用户。如果把DBA角色授权给另一角色Admin,然后又将Admin角色授权给另一用户NEWU,则此用户可存取SYS.USER$表,但在上述三个查询中并没有直接列出NEWU的名字(角色Admin会出现在第三个查询语句的结果中)。
显然,Oracle的授权构成了一棵树,完整的信息需要一段PL/SQL程序来完成。(对于11g以前版本,还需要检查对DBA_USERS视图有存取权限的用户和角色。SELECT_CATALOG_ROLE角色如被授权,则可以存取所有数据字典视图,但不能存取SYS的基表。)
2.设定对加密口令存取的审计
如果当前系统中只有SYSDBA可以存取USER$,则一个变通办法是审计SYSDBA的所有操作,其中也包括对USER$的存取。设置初始化参数audit_sys_operations =TRUE,重新启动数据库后激活对SYSDBA操作的审计。
审计文件的存放位置为:
11g版本中为:$ORACLE_BASE/admin/SID/ adump/ *.aud
11g以前版本为: $ORACLE_HOME/rdbms/audit/ *.aud。
严格限制和监视SYSDBA用户活动的最好办法是使用Oracle Database Vault组件。
3.在操作系统级限制对数据库数据文件的存取
SYSDBA用户的加密口令存放在$ORACLE_HOME/dbs下的口令文件orapw〈SID〉中。SYS.USER$表同样需要在数据文件中存放,多数为SYSTEM表空间的第一个数据文件中。此外,EXPORT文件、REDOLOG文件以及TRACE文件中都可能出现加密口令。需要严格限制上述文件的存取权限。
4.防止网络窃听
在建立连接时,客户端需要向服务器端传送用户名和口令,并且服务器端与客户端需要相互发送这次会话使用的SESSION KEY。Oracle采用Diffie-Hellman KEY交换算法和自己开发的O3LOGON协议完成上述任务。算法的细节同样已在互联网上被公开。建立连接时上述信息如果被截获,同样可以被用来破解口令。更为严重的是,如果黑客事先已经获得加密口令,结合SESSION KEY的信息,则不需要任何破解,执行简单还原运算就可算出口令明文。
另外,设计SID时不要使用如ORCL、TEST、PROD等常用名字,设定PORT号为远远大于1521的数,都可以增加黑客SID扫描的难度和时间。
5. 删除旧版的加密口令
存放在Oracle 11g数据库中的以前版本的加密口令是口令破解工具的一个突破口。在没有兼容性限制的系统中,可以考虑从系统中删除旧版口令,从而增加破解难度。
具体操作如下:
在SQLNET.ORA中增加一行:SQLNET.ALLOWED_LOGON_VERSION=11(Oracle手册中格式介绍有错误,不能加括号:…=(11)),指定最低版本。
以SYSDBA登录后,执行以下语句,删除旧版口令。
update sys.user$ set password=NULL;
delete from user_history$;
commit;
设置修改后,基于OCI的工具如SQLPLUS、10gR1和10gR2版本都可以正常登录,而JDBC type-4 则只有11g版本才允许登录。
提高口令强度
1.禁止使用缺省口令,禁止与用户名同名的口令,禁止字典词汇的口令
Oracle 11g中提供一个视图DBA_USERS_WITH_DEFPWD,可以方便地查出系统中使用缺省口令的所有用户,不足的是还有不少遗漏。读者可以在互联网找到缺省口令的列表,虽然是非官方的,但是比DBA_USERS_WITH_DEFPWD使用的官方的列表更全。破解工具附带的词汇表有的包括了大型英文词典中全部词汇,并支持词汇与“123”之类的常用后缀进行组合。需要注意的是,有的词汇表中已经出现了“zhongguo”这样的字符串,所以汉语拼音组成的口令也是不安全的。检查系统中是否存在弱口令的最常用方法就是使用前述口令破解工具进行攻击。
2.规定口令最小字符集和口令最短长度
口令字符集最小应包括字母、数字和特殊符号,口令长度最短应不少于8位,对于安全性要求高的系统,最短长度应为12位以上。同样,问题的关键在于DBA指定初始口令以及用户修改口令时保证不违反上述这些规定。每一用户都对应一个Profile,如在Profile中指定口令验证函数,则每当创建或修改口令时,会自动检查是否满足验证程序中所设定的条件,如果不满足,则口令修改失败。对口令明文进行检查,显然要比对加密口令破解效率高。此外,口令创建之时进行检查可以及时封杀弱口令,不给黑客留下破解的窗口。
指定口令验证函数的语句为:
ALTER PROFILE DEFAULT LIMIT PASSWORD_VERIFY_FUNCTION 口令验证函数名;
上例中,为“DEFAULT” Profile指定了验证函数。对用户进行分类后,应当为每一类用户分别创建自己的Profile,而不是全部使用DEFAULT。关闭口令验证函数的语句为:
ALTER PROFILE DEFAULT LIMIT PASSWORD_VERIFY_FUNCTION NULL;
在$ORACLE_HOME/rdbms/admin/下,脚本文件UTLPWDMG.SQL提供了示例的口令验证函数,执行这一脚本,将创建一名为VERIFY_FUNCTION的函数( Oracle 11g中,增加新函数verify_function_11G )。这一函数可以对口令长度是否同时出现了字母数字符号进行检查,检查是否与用户名同名,也检查口令是否是几个最常用的词汇,如welcome、database1、account1等。最后,口令修改时检查新旧口令是否过于相似。读者实际使用时应该根据系统需要对这一函数进行必要的修改和扩充。
3.使用易记忆的随机口令限定口令长度后,如果口令没有规律很难记忆,则用户会采用他们自己的方式记住口令,大大增加了遭受社会工程攻击的可能性。DBA需要帮助用户设计一个容易记忆而又不易破解的口令。一个简单易行的方法是找用户非常熟悉的一个句子,如One world One dream,然后将每一个空格替换为数字或符号:One3world2One1dream#。
定期更换口令
抵御口令破解要从多方面着手
数据库中存在多种权限用户,各种授权用户构成一棵树
应对口令泄露或被破解的措施是强制定期更换口令,设定口令重复使用限制,规定封锁口令的错误次数上限及封锁时间。即便是加密口令落入黑客手中,在被破解之前或入侵之前,修改了口令,则口令破解变得毫无意义。为了方便记忆,一般用户有重新使用之前过期口令的倾向,如果对重用不加控制,则定期更换口令将失去意义。上述对口令的管理仍然是通过Profile完成:
ALTER PROFILE DEFAULT LIMIT
PASSWORD_LIFE_TIME 30
PASSWORD_GRACE_TIME 7
PASSWORD_REUSE_TIME 365
PASSWORD_REUSE_MAX 0
FAILED_LOGIN_ATTEMPTS 10
PASSWORD_LOCK_TIME UNLIMITED
PASSWORD_VERIFY_FUNCTION my_verify_function;
上面语句制定的口令管理政策为:口令的有效期为30天,随后有7天的宽限期,宽限期后口令“过期”,必须更改口令后才能登录。只有经过365天后才能重新使用以前的口令。在连续10次输入口令错误后,账号被封锁,设定不自动解锁,必须由DBA手动解除封锁。口令验证函数为my_verify_function。
Oracle 11g以前版本,缺省设置中没有设定口令的有效期,而在Oracle 11g中缺省设置有效期为180天。程序中直接写入口令的应用在升级到11g时一定要注意有效期问题,避免半年后应用突然无法自动运行。另外,口令的有效期对SYS用户不起作用,DBA一定要主动定期更换口令。
另外一个措施是对登录数据库服务器的主机进行限定,如指定网段或指定IP地址。进一步限定客户端允许执行的程序,如对非本地登录禁止使用SQLPLUS,只允许执行某特定应用。
认真实施本文中给出的措施后,可以很有效地防止口令被破解。然而我们的目的是提高数据库系统的安全性,而不仅仅是保证口令不被破解。数据库系统安全的任何一个环节出现问题,都会导致前功尽弃。黑客的目的是入侵系统盗窃数据,是不会按常理出牌的,会尝试各种手段方式,如社会工程、安全漏洞、物理入侵等等,而不会执着地在口令破解上与我们较劲。这一点需要我们经常提醒自己,从而切实保证数据库系统安全。
TechTarget中国原创内容
黑客帝国三部曲的完整剧情
总算开始写自己对matrix的最后的理解了,自己感觉这是一个庞大的项目,需要你有非常多且宽广的知识面,而我的能力毕竟有限,所以也有些地方的资料是摘录自我所赞同的网友的资料(如果您认为必须标明是转自您的资料,请告诉我,我一定会添加上去)。
而我的这个解读手册,其中必然有很多不足之处(比如计算机不是我的专业所以可能会有表达错误甚至理解错误),所以希望各知识点的行家们能够指正我的错误。
黑客帝国三部曲,实在是一个庞大的体系,三言两语是说不清楚的,而对于很多相关知识缺乏或者没有的人来说,看懂黑客系列是个比较艰难的过程。所以,先写下这个序。
序不仅是为黑客系列涉足为深者准备,也是为所有喜欢黑客系列的人准备的,因为在后面我有很多东西要表达,而且头绪繁多,因此有必要先写个序,把我的基本的观点和根本的出发点表达出来。
enter the matrix trilogy
“—这就是为什么我能呈现给它们一个更好的世界,这就是为什么它们会改变信仰。
—但是我们展现给它们的世界是不真实的
—这不是问题
—我担心它们能看出那些美好的世界只是来自于我们的大脑。
—它们无法分辨的。对于人工大脑来说,所有的真实不就是另一种模拟么?”
这段对话引自动画版中的“变节”一段,是本文各种的分析的一个主要前提。
本人分析的另一个前提就是:neo和smith是个共同体,他们的原体是机器人。neo是机器人的ai中被修改的一部分,而smith是其中不可修改的一部分甚至是其中专门用来反修改代码的一段代码。(所谓反修改代码就是软件作者为了防止自己的软件被别人修改等而设置的障碍)
本文的最后一个前提,也是很重要的一个前提就是:人不再是唯一的主宰,从来就没有什么救世主,人类中心论是个荒谬的论点,进化不一定就是物竞天择,也可能是一个自主的过程。
影片中的世界问题
matrix是一个电脑创造的程序世界,在这里每个人就是一个电脑游戏中的角色。matrix就如同一个网络游戏,在这里普通的人必须遵守游戏规则,如果想违反游戏规则,那么特工(如同游戏中的网管)就会出来进行干预。
为什么neo在matrix里后来那么厉害,是因为他就如同游戏里某个玩家取得了网管的权力一样。为什么smith先是可以附身,然后还能复制自己?在网络游戏中,网管其实可以使用任何一个玩家的帐号,这就相当于附身。而且网管有一个权力就是给某个玩家的帐号以最高权限,如果他见到帐号就给网管的权力,那么结果就是游戏中的玩家们都有了最高权限,这就相当于smith复制出无数的自己来。
在电影中zion被称作真实的世界,它处在靠近的地心的地方。在那里是地球上仅存的温暖的地方。(为什么如此,请看后面的关于机器与人的战争的部分)zion里的人民艰难的生活着,他们不断地和机器人作战以求幸存下来。他们穿着质地很差很薄的衣服,他们吃着营养粥(这个东西没有任何味道,仅仅是维持生命所需能量),他们面临着朝不保夕的生活。
但是zion有很多人试图改变这一切,他们寻找各种方法,试图结束机器人对他们的攻击。
01机器城
这里是机器人的世界,它处在地表。到处都是管道和机械废墟,还有那一望无际的养殖场。由于人类战败给了机器人,而机器人又没有太阳能作为持久能源,所以人类被机器人圈养起来作为它们的电池。人类被用来作为电池,是因为人体本身会产生120伏电压和超过25000热量单位的生物电能,而且具有持久性和再生性等优点。
机器人把战争中幸存的人类都放置在特殊的容器中,在人身上加入很多插头以提取电能。但是,人是有思想的,人只要活着思想就会存在。所以在人的脑后还有一个插头,机器人利用这个插头,让人类的思想进入它们编造出了虚拟的世界matrix,这样人类就意识不到自己被圈养在容器中,而是以为自己还是活在1999年。
但是,只要是程序都会有错误的,在matrix这样一个精神世界中生活的人们中,总有人会发现这些错误的。于是,就有特工(也就是前面所说的相当于网管的人)去消灭那些试图打破matrix规则的人,并且消除错误。而zion中的人,他们就努力去拯救那些特工所要消灭的人。因为不相信matrix的人就是zion所需要的人。
机器与人得战争
说到这里,就不得不谈到机器人和人之间得战争。在21世纪,也就是20XX年,人类发明了AI(人工智能),然后诞生了机器人种族。接下来发生了机器人与人的战争,战争开始互有胜负,但是后来人类节节败退,为了挽回败局,人类决定遮蔽整个天空,因为机器人是靠太阳能供电,没有了太阳光机器人也就没有了能源。人类彻底破坏了天空,整个地球笼罩在无边的黑暗之中,从此,地表不在有植物、不再有生物,地球表明都处都是寒冷的世界。(而人类想活下来就需要热度,所以人类居住在靠近地心的地方)在地球表面统治着地球的不再是人类,不再是任何细胞构成的有血有肉的生物,而是机器人!
影片中的人名问题
在三部曲中的人名是个很有趣,很值得探究的话题
首先,在很多主要人物的名字来自圣经,尤其是那些从matrix中逃脱的人
其次,在影片中很多对剧情有关键影响的人,都是用的古希腊神话故事中的人名。
再次,zion中土生土长的那些人的人名很奇怪,都是用的现实世界中的器具的名字:如link、tank、dozer、lock等
最后,还有就是采用名和意完全一样的名字,如oracle、architect等。
Neo 这个不应该理解为新,而是新式样,代表他是一个新的试验。其次,在matrix中他的名字是Thomas,这个名字是耶苏的十二门徒之一,是个怀疑论者,他直到最后才相信耶苏的死亡
trinity 是neo的引导程序,她的解释大家已经分析了我也不用说了
morpheus 原意是梦神,很多人理解为是梦与现实的连接点,是neo的导师把他引导出梦境。其实我认为应该理解为他是个活在梦境中的人,他的那句“我们一定要去,虽然行动很危险,也许明天就是我们的忌日,但是相对于其他日子这个日子又有什么区别!”(记不全了,写下大概的意思)他生活在自己的梦想中,并为了梦想而真实的奋斗。
smith 英文原意就是:金属制造者。它是neo另一个,是机器中不可修改的一部分甚至是其中专门用来反编译的一段代码
merovingian 梅罗文加王朝,建立了高卢人的联盟,意思是第一任neo
persephone 宙斯的女儿,后来被冥王抓去做了老婆,虽被救下但是六个月生活在地狱,六 个月生活在人间,她是第一任trinity,因为merovingian的失败而不得不成为被遗弃的试验品。
Nebuchadnezzar 尼布加尼撒号morpheus的战舰名称,原意为巴比伦国王,这个国王攻占耶路撒冷修建了空中花园,它的含义一看就知道了。
Niobe 希腊神话中因为嘲笑天神不如她,而十四个孩子都被杀的人类女子。这里应该是说她 并不为机器人的强大所吓倒,勇敢面对。
Bane 被smith附体的人类,意思是祸根、毁灭的根源、克星
Cypher 不重要的人(这里非超搞笑,此人的姓为reagon,他认为在matrix中最 有权势的人是演员,所以他要做演员,哈哈哈啊美国那个总统不也是这个名字么)
oracle 在希腊是神谕、预言的意思,也指中国的甲骨文,而甲骨文的作用就是占卜未来。这里翻译为先知
architect 影片中扮演matrix的缔造者,如同英文原意:建筑师
ramachandra,其实是梵语,中文翻作罗摩占陀罗,在印度教中是三大主神之一毗湿奴的第七个化身。毗湿奴又被称作守护之神,联系老爸的身份“负责管理人类繁殖的控制程序”(也就是机器城发电厂的总经理),他的作用不言而喻;
kamala,也是梵语,中文翻作迦摩罗,来源于佛经典故。在《kesaputia》经中提到,佛陀有一次到萨罗国一个叫做奇舍子的小镇去访问,那镇上居民的族姓是迦摩罗。他们听说佛陀来了,就去拜见他,向他说:“世尊,有些梵志和出家人来到我们的村子,他们只解说弘扬他们自己的教义,而蔑视、非难、排斥其他教义。然后又来了其他的梵志出家人,他们也同样的只解说弘扬他们自己的教义,而蔑视、非难、排斥其他教义。 但是对我们来说,我们一直都怀疑而感到迷茫,不知道在这些可敬的梵志方外人中,到底谁说的是真实,谁说的是妄语。” 于是,佛陀给了他们如此的教诫:“是的,迦摩罗人啊!你们的怀疑、你们的迷茫是正当的;因为对于一件可疑的事,是应当生起怀疑的。
迦摩罗人啊!
1、你们要注意不可被流言、传说、及耳食之言所左右,
2、也不可依据宗教典籍,
3、也不可单靠论理或推测,
4、也不可单看事物的表象,
5、也不可溺好由揣测而得的臆见,
6、也不可因某事物之似有可能而信以为实,
7、也不可作如此想:‘他是我们的导师。’
迦摩罗人啊!只有在你自己确知某事是不善、错误、邪恶的时候,你才可以革除他们......而当你自己确知某事是善良的、美好的,那时你再信受奉行。”
而sati老妈的身份是一段具有高度创造力的系统交互程序,起这个名字用意也与将要谈到sati本身代表的重大意义有关;
sati,梵文本意是“贞洁的女人,殉夫自焚的寡妇”。殉夫自焚是印度旧时寡妇为完成作为妻子的真正职责在其丈夫葬礼上以柴堆自焚的一种风俗,联系matrix系统中程序存在的规则:没有“目的”的程序就必须删除,大家是不是觉得有点像?死了丈夫的妻子也就同时失去了作为“妻子”的“目的”,那么就只有殉夫“自焚”了。而sati却被保护下来,最后还在matrix里幸福地生活下去。这不就代表matrix过去的规则被打破了吗?再联系上面讲到的佛陀的告诫:
“……因为对于一件可疑的事,是应当生起怀疑的。”
“……也不可依据宗教典籍……”
“……只有在你自己确知某事是不善、错误、邪恶的时候,你才可以革除他们……而当你自己确知某事是善良的、美好的,那时你再信受奉行。”
经典的一刻将成为永恒的记忆: