Chapter 2 User Authentication, Authorization, and Security(3):保护服务器避免暴力攻击
未经作者同意,任何人不得以“原创”形式发布,也不得已用于商业用途,本人不负责任何法律责任。
前一篇:http://blog.csdn.net/dba_huangzj/article/details/38705965
前言:
暴力攻击(Brute-force attack)是通过几乎所有可能的字符组合尝试破解密码,或者使用一个字典表,包含几乎所有可能的密码来实现密码破解的方法。如果你的密码很简单,那么很快就会被破解。所以,测试密码是非常重要的。
实现:
1. 首先查找SQL 密码没有使用强制密码策略的:
SELECT name, is_disabled FROM sys.sql_logins WHERE is_policy_checked = 0 ORDER BY name;
2. 然后对这些登录使用强密码策略:
ALTER LOGIN Fred WITH CHECK_POLICY = ON,CHECK_EXPIRATION = ON;
这个命令不会更改现有密码,直到密码过期前密码依然有效。可以使用下面函数检查密码到期时间:
SELECT LOGINPROPERTY('Fred', 'DaysUntilExpiration');
3. 你还可以强制在登录时修改密码,但是需要先提供一个协商好的密码并告知使用者,比如下面的代码,就是把Fred这个登录名强制登陆时修改密码,然后你使用了You need to change me ! 这个作为“初始密码”,你需要告知用户,登陆时使用它,登录成功后会提示你修改密码。
ALTER LOGIN Fred WITH PASSWORD = 'You need to change me !' MUST_CHANGE, CHECK_POLICY = ON, CHECK_EXPIRATION = ON;
原文出处:http://blog.csdn.net/dba_huangzj/article/details/38756693
4. 可以使用脚本把所有需要修改的登录名全部显式出来:
SELECT 'ALTER LOGIN ' + QUOTENAME(name) + ' WITH PASSWORD = ''You need to change me 11'' MUST_CHANGE, CHECK_POLICY = ON, CHECK_ EXPIRATION = ON; ' FROM sys.sql_logins WHERE is_policy_checked = 0 ORDER BY name;
如果需要在应用程序中允许用户修改他们的密码,可以参照这篇文章:http://msdn.microsoft.com/zh-cn/library/ms131024.aspx (以编程方式更改密码)
原理:
最好的保护密码避免暴力攻击的方法是使用WIndows密码策略,因为它仅允许你使用强密码。另外暴力攻击密码会在SQL Server的错误日志和Windows的事件日志中留底。
SQL登录的密码或密钥是不存储在任何系统表中,仅存储密码的hash值,也就是说没有办法解密。hash值会存储在系统表中,以便后续登录时与传输的密码使用hash函数生成的hash值匹配。
原文出处:http://blog.csdn.net/dba_huangzj/article/details/38756693
更多:
过期策略的其中一个组成部分是【lockout threshold】,如果要启用对SQL 登录的失败尝试锁定,需要对CHECK_POLICY 选项设为ON,并且把你的帐号锁定策略在Active Directory或者本地配置。
可以使用下面语句查询是否有锁定的帐号:
SELECT name FROM sys.sql_logins WHERE LOGINPROPERTY(name, N'isLocked') = 1 ORDER BY name;
原文出处:http://blog.csdn.net/dba_huangzj/article/details/38756693
下一篇:http://blog.csdn.net/dba_huangzj/article/details/38817915
Chapter 2 User Authentication, Authorization, and Security(3):保护服务器避免暴力攻击的更多相关文章
- Chapter 2 User Authentication, Authorization, and Security(11):在已还原的数据库中修正登录映射错误
原文出处:http://blog.csdn.net/dba_huangzj/article/details/39496517,专题目录:http://blog.csdn.net/dba_huangzj ...
- Chapter 2 User Authentication, Authorization, and Security(10):创建包含数据库
原文出处:http://blog.csdn.net/dba_huangzj/article/details/39473895,专题目录:http://blog.csdn.net/dba_huangzj ...
- Chapter 2 User Authentication, Authorization, and Security(9):防止登录名和用户查看元数据
原文出处:http://blog.csdn.net/dba_huangzj/article/details/39003679,专题目录:http://blog.csdn.net/dba_huangzj ...
- Chapter 2 User Authentication, Authorization, and Security(8):创建映射到登录名的数据库用户
原文出处:http://blog.csdn.net/dba_huangzj/article/details/38944121,专题目录:http://blog.csdn.net/dba_huangzj ...
- Chapter 2 User Authentication, Authorization, and Security(4):限制SA帐户管理权限
原版的:http://blog.csdn.net/dba_huangzj/article/details/38817915,专题文件夹:http://blog.csdn.net/dba_huangzj ...
- Chapter 2 User Authentication, Authorization, and Security(3):保server避免暴力袭击
原版的:http://blog.csdn.net/dba_huangzj/article/details/38756693,专题文件夹:http://blog.csdn.net/dba_huangzj ...
- Chapter 2 User Authentication, Authorization, and Security(7):创建和使用用户自定义服务器角色
原文出处:http://blog.csdn.net/dba_huangzj/article/details/38895357,专题目录:http://blog.csdn.net/dba_huangzj ...
- Chapter 2 User Authentication, Authorization, and Security(6):服务器权限授予粒度
原文出处:http://blog.csdn.net/dba_huangzj/article/details/38867489,专题目录:http://blog.csdn.net/dba_huangzj ...
- Chapter 2 User Authentication, Authorization, and Security(5):使用固定服务器角色
原文出处:http://blog.csdn.net/dba_huangzj/article/details/38844999,专题目录:http://blog.csdn.net/dba_huangzj ...
- Chapter 2 User Authentication, Authorization, and Security(4):限制SA帐号的管理权限
原文出处:http://blog.csdn.net/dba_huangzj/article/details/38817915,专题目录:http://blog.csdn.net/dba_huangzj ...
随机推荐
- ionic3-ng4学习见闻--(多环境方案)
搜了很久,很难找到一个详细入微,开箱即用的方案. 于是我 百折不挠的,搞出来一个,也不知道是不是最完美的方案,有什么可以优化的地方可以指出,谢谢. 首先, 1.项目目录下(与src平级),新增conf ...
- Python3 基础语法
编码 默认情况下,Python 3源码文件以 UTF-8 编码,所有字符串都是 unicode 字符串. 当然你也可以为源码文件指定不同的编码: # -*- coding: cp-1252 -*- 标 ...
- Ruby方法参数默认值的一个小技巧在Rails中的应用
我们需要生成一个gravatar格式的html.image标示,于是写了如下方法: def gravatar_for(user) gravatar_id = Digest::MD5::hexdiges ...
- RunLoop总结:RunLoop基础知识
没有实际应用场景,很难理解一些抽象空洞的东西,所以前面几篇文章先介绍了RunLoop的几个使用场景. 另外AsyncDisplayKit中也有大量使用RunLoop的示例. 关于实际的使用RunLoo ...
- Linux-2.6.25 TCPIP函数调用大致流程
插口层系统调用send sys_send sys_sendtosendto sys_sendto sock_sendmsgsendmsg sys_send ...
- 初识gd库
必备基础 开启GD拓展 列表使用 获取图片信息代码 图片详细信息 特效函数 示例 运行结果 分析 获取图片基本信息 获取图片宽度 获取图片高度 获取图片后缀名 获取图片mime类型 操作图片 添加文字 ...
- Unity角色残影特效
残影特效在网上有很多例子,比如这个,我参考着自己整合了一下,算是整合了一个比较完整且特别简单易用的出来,只需要一个脚本挂上去无需任何设定就能用. 这里只针对SkinnedMeshRenderer的网格 ...
- activiti实战系列 排他网关(ExclusiveGateWay)
流程图 12.2:部署流程定义+启动流程实例 12.3:查询我的个人任务 12.4:完成我的个人任务 说明: 1) 一个排他网关对应一个以上的顺序流 2) 由排他网关流出的顺序流都有个 ...
- SKSpriteNode对象初始化在iPhone 6 plus中显示不正确的分析及解决
一个SpriteKit项目在其他设备上运行都无问题(无论是真机或是模拟器),但是在iPhone6 Plus上会出现精灵对象纹理被过度放大的现象: 从上图中大家可以看到无论是主角或是道具球都过大了. 看 ...
- 关于ROS学习的一些反思
距离发布上一篇ROS的博客已经过去两年了,才发现原来自己已经这么久可没有写过关于ROS的文章,想来很是惭愧.这两年时间,自己怀着程序员的梦想,研究过RTOS,探索过Linux,编写过Android应用 ...