Chapter 1 Securing Your Server and Network(9):使用Kerberos用于身份验证
原文:Chapter 1 Securing Your Server and Network(9):使用Kerberos用于身份验证
未经作者同意,任何人不得以“原创”形式发布,也不得已用于商业用途,本人不负责任何法律责任。
前一篇:http://blog.csdn.net/dba_huangzj/article/details/38263043
前言:
在活动目录(Active Directory)中,有两种身份验证机制:NTLM和Kerberos。其中NTLM(NT LAN Manager)是基于旧版加密方式的授权协议,微软不建议再使用。详情可见:http://msdn.microsoft.com/en-us/library/cc236715.aspx
Kerberos是一个免费的软件协议,有MIT(麻省理工)首先开发出来,并从Windows 2000开始引入。通过secured tickets(暂时未发现专业术语)的转换对客户端和服务器进行安全识别。相对于使用哈希密码,Kerberos通过共享安全加密密钥来管理身份验证。客户端和验证服务器共享一个对称密钥,。其中验证服务器成为KDC(Key Distributor Center,密钥分发中心),并且作为域控制器的服务运行。
在登录时,客户端会从KDC中请求一个Ticket Grant Ticket (TGT) ,然后KDC创建一个包含客户端标识的TGT,并连同把带有密钥的会话返回给客户端。TGT的寿命不长,通常只有8~10小时。过时之后,客户端不能在访问资源。
服务标签(Service ticket)必须包含目标资源(如SQL Server实例)的Service Principal Name(SPN,服务主体名称)。当KDC接收到请求,会回送服务标签。这个标签会在后续用于客户端请求访问服务器之用。更多信息可以访问:http://technet.microsoft.com/en-us/library/cc772815.aspx
实现:
使用Kerberos,需要在域环境中,并且服务器的SPN必须已经注册到Active Directory。如果满足这些条件,那么Kerberos应该默认已经使用,可以在SQL Server中检查:
SELECT auth_scheme, net_transport, client_net_address FROM sys.dm_exec_connections;
如果连接是来自同一个域或者使用NTLM授权的可信任域,需要研究为什么没有使用Kerberos。当SQL Server启动时,会尝试自动注册自己的SPN到Active Directory中,如果SQL Server服务帐号没有权限,那么SPN就不能创建,并且Kerberos授权也将不能使用。
检查SPN是否已经注册,可以在cmd或者PowerShell中输入下面的命令:
setspn.exe -L DOMAIN\<SQL service Account>
本人环境下如图:
应该要看到其中一个信息:
MSSQLSvc/SQL-A.Contoso.com:1433 --格式为:MSSQLSvc/<SQL Server机器名>.<域名>.com:<端口号>
检查上图可见没有这个信息,证明没有成功,所以再上一个图的结果周鞥只有NTLM授权。通常是因为这个帐号没有"write public information" 权限。默认情况下,SQL Server服务帐号如果是一个域用户安装的,将没有这个权限。
现在把SQL Server服务帐号换成域管理员,再次检查可见已经得到期待结果了:
如果发现没有注册SPN,可以使用下面步骤实现:
1. 在域控制器的【管理工具】中,选择【ADSI 编辑器】:
2.连接到【默认命名上下文】,查找服务帐号并且右键【属性】,然后选择【安全】页:
3. 对SELF授予【写入 公共 信息】,并重启SQL Server服务:
注意,本机是用contoso\mirroradmin安装和运行的,所以这里选择这个帐号授权。授权完毕之后,再次查询,可以见到已经有Kerberos连进了了。
原理:
SPN是实例的唯一标识,没有合适的SPN,Kerberos不能验证一个服务并提供服务标签来允许客户端访问。所以如果没有SPN,客户端唯一能用的验证方式是NTLM,而SPN必须安装在活动目录,并且有KDC角色。
SPN的固定格式:<service>/<host>:<port/name>。其中host是完全合格域名(Fully Qualified Domain Name ,FQDN)。
更多信息:
如果不想授予【写入公共信息】到AD上,或者某些原因SPN不能注册,可以手动执行下面语句创建:
setspn.exe -A MSSQLSvc/SQL-A.Contoso.com:<port> Contoso\SQL-A --其中SQL-A是机器名,contoso是域名
对于Kerberos问题侦测可以阅读下面文章:
下一篇:http://blog.csdn.net/dba_huangzj/article/details/38368737
Chapter 1 Securing Your Server and Network(9):使用Kerberos用于身份验证的更多相关文章
- Chapter 1 Securing Your Server and Network(10):使用扩展保护避免授权中继攻击
原文:Chapter 1 Securing Your Server and Network(10):使用扩展保护避免授权中继攻击 原文出处:http://blog.csdn.net/dba_huang ...
- Chapter 1 Securing Your Server and Network(8):停止未使用的服务
原文:Chapter 1 Securing Your Server and Network(8):停止未使用的服务 原文出处:http://blog.csdn.net/dba_huangzj/arti ...
- Chapter 1 Securing Your Server and Network(7):禁用SQL Server Browse
原文:Chapter 1 Securing Your Server and Network(7):禁用SQL Server Browse 原文出处:http://blog.csdn.net/dba_h ...
- Chapter 1 Securing Your Server and Network(6):为SQL Server访问配置防火墙
原文:Chapter 1 Securing Your Server and Network(6):为SQL Server访问配置防火墙 原文出处:http://blog.csdn.net/dba_hu ...
- Chapter 1 Securing Your Server and Network(5):使用SSL加密会话
原文:Chapter 1 Securing Your Server and Network(5):使用SSL加密会话 原文出处:http://blog.csdn.net/dba_huangzj/art ...
- Chapter 1 Securing Your Server and Network(4):使用虚拟服务帐号
原文:Chapter 1 Securing Your Server and Network(4):使用虚拟服务帐号 原文出处:http://blog.csdn.net/dba_huangzj/arti ...
- Chapter 1 Securing Your Server and Network(3):使用托管服务帐号
原文:Chapter 1 Securing Your Server and Network(3):使用托管服务帐号 原文出处:http://blog.csdn.net/dba_huangzj/arti ...
- Chapter 1 Securing Your Server and Network(1):选择SQL Server运行账号
原文:Chapter 1 Securing Your Server and Network(1):选择SQL Server运行账号 原文出处:http://blog.csdn.net/dba_huan ...
- Chapter 1 Securing Your Server and Network(12):保护链接server
原文出处:http://blog.csdn.net/dba_huangzj/article/details/38438363.专题文件夹:http://blog.csdn.net/dba_huangz ...
随机推荐
- Linux好书、经典书籍推荐
Linux好书.经典书籍推荐 思想篇 <Linux/Unix设计思想> 图书将Unix与Linux的原理有效地结合起来,总结了Unix/Linux软件开发中的原则.在保留了第1版中Unix ...
- U14Linux的帐号与用户组
1.在/etc/group和/etc/gshadow中查找mousegroup: grep mousegroup /etc/group /etc/gshadow (grep的使用) 2.其实Linux ...
- atitit查询表改动表字段没反应--解锁锁定的表
atitit查询表改动表字段没反应--解锁锁定的表 查询表改动表字段没反应 要是使用gui 没反应,最好使用cmd 方式,不卉不个gui 锁上.. ALTER TABLE t_mb_awardweix ...
- Cocos2d-x 3.2 Lua演示样例 ClickAndMoveTest(点击移动測试)
Cocos2d-x 3.2 Lua演示样例 ClickAndMoveTest(点击移动測试) 本篇博客介绍Cocos2d-x 3.2Lua演示样例中点击移动的样例,在这个样例你能够得到怎样创建单点触 ...
- ExcelHelper Excel,Export,Import
using System; using System.Collections.Generic; using System.Data; using System.Data.Odbc; using Sys ...
- 基于opencv在摄像头ubuntu根据视频获取
基于opencv在摄像头ubuntu根据视频获取 1 工具 原料 平台 :UBUNTU12.04 安装库 Opencv-2.3 2 安装编译执行步骤 安装编译opencv-2.3 參考h ...
- JNDI 什么
JNDI是 Java 命名与文件夹接口(Java Naming and Directory Interface).在J2EE规范中是重要的规范之中的一个,不少专家觉得,没有透彻理解JNDI的意义和作用 ...
- Ceph更多Mon 更多mds
1.当前状态 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdWpfbW9zcXVpdG8=/font/5a6L5L2T/fontsize/400/fill ...
- Grub2配置详解(转)
grub2基础教程-修订版 smallapple 目录 一.grub2新特性 二.grub2安装与启动 三.grub2配置文件 ...
- [Windows Phone] 实作不同的地图显示模式
原文:[Windows Phone] 实作不同的地图显示模式 前言 本文章主要示范如何让地图有不同的模式产生,例如平面图.地形图.鸟瞰图.鸟瞰图含街道等. 这部分主要是调整 Map.Cartograp ...