SQL老是被注入

lhw1000 2008-04-18 04:08:00
服务器老是被sql注入 不知道还有没有有木马 怎么查出原因~
...全文
375 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
-晴天 2008-04-18
  • 打赏
  • 举报
回复
SQL注入关键不在SQL Server,关键在ASP对输入内容检验不够,说不定你的程序里已经加入了后门程序,好好检查一下,哪些ASP文件的存储日期发生了改变,哪些ASP文件不是你自己的,检查WEB服务器访问记录,看人家攻击时采用什么样的手法,而被攻击后出现 200 0 0结果的又是什么样的文件和语句,再针对相应的问题改进ASP程序.
数据库方面,在程序中不要用sa用户登录,程序中分成几块,要访问哪些数据表的就给相应的权限,特别是不要把数据库被人家备份下载去了,那样的话损失就大了.
zzyyc 2008-04-18
  • 打赏
  • 举报
回复
以前遇到过,控制好用户与角色,就好多了。
dawugui 2008-04-18
  • 打赏
  • 举报
回复
SQL Server数据库安全

1. 安装最新的服务包

  为了提高服务器安全性,最有效的一个方法就是升级到SQL Server2000 Service Pack 3a (SP3a)。另外,您还应该安装所有已发布的安全更新。

  2. 使用Microsoft基线安全性分析器(MBSA)来评估服务器的安全性

  MBSA 是一个扫描多种Microsoft产品的不安全配置的工具,包括SQL Server和Microsoft SQL Server 2000 Desktop Engine(MSDE 2000)。它可以在本地运行,也可以通过网络运行。该工具针对下面问题对SQL Server安装进行检测:

  1) 过多的sysadmin固定服务器角色成员。

  2) 授予sysadmin以外的其他角色创建CmdExec作业的权利。

  3) 空的或简单的密码。

  4) 脆弱的身份验证模式。

  5) 授予管理员组过多的权利。

  6) SQL Server数据目录中不正确的访问控制表(ACL)。

  7) 安装文件中使用纯文本的sa密码。

  8) 授予guest帐户过多的权利。

  9) 在同时是域控制器的系统中运行SQL Server。

  10) 所有人(Everyone)组的不正确配置,提供对特定注册表键的访问。

  11) SQL Server 服务帐户的不正确配置。

  12) 没有安装必要的服务包和安全更新。

  Microsoft 提供 MBSA 的免费下载。

  3. 使用Windows身份验证模式

  在任何可能的时候,您都应该对指向SQL Server的连接要求Windows身份验证模式。它通过限制对Microsoft Windows用户和域用户帐户的连接,保护SQL Server免受大部分Internet工具的侵害,而且,您的服务器也将从Windows安全增强机制中获益,例如更强的身份验证协议以及强制的密码复杂性和过期时间。另外,凭证委派(在多台服务器间桥接凭证的能力)也只能在Windows身份验证模式中使用。在客户端,Windows身份验证模式不再需要存储密码。存储密码是使用标准SQL Server登录的应用程序的主要漏洞之一。要在SQL Server的EntERPrise Manager安装Windows身份验证模式,请按下列步骤操作:

  1)展开服务器组。

  2)右键点击服务器,然后点击属性。

  3)在安全性选项卡的身份验证中,点击仅限Windows。

  4. 隔离您的服务器,并定期备份

  物理和逻辑上的隔离组成了SQL Server安全性的基础。驻留数据库的机器应该处于一个从物理形式上受到保护的地方,最好是一个上锁的机房,配备有洪水检测以及火灾检测及消防系统。数据库应该安装在企业内部网的安全区域中,不要直接连接到Internet。定期备份所有数据,并将副本保存在安全的站点外地点。

  5. 分配一个强健的sa密码

  sa帐户应该总拥有一个强健的密码,即使在配置为要求 Windows 身份验证的服务器上也该如此。这将保证在以后服务器被重新配置为混合模式身份验证时,不会出现空白或脆弱的sa。

  要分配sa密码,请按下列步骤操作:

  1) 展开服务器组,然后展开服务器。

  2) 展开安全性,然后点击登录。

  3) 在细节窗格中,右键点击SA,然后点击属性。

  4) 在密码方框中,输入新的密码。

  6. 限制 SQL Server服务的权限

  SQL Server 2000和SQL Server Agent是作为Windows服务运行的。每个服务必须与一个Windows帐户相关联,并从这个帐户中衍生出安全性上下文。SQL Server允许sa登录的用户(有时也包括其他用户)来访问操作系统特性。这些操作系统调用是由拥有服务器进程的帐户的安全性上下文来创建的。如果服务器被攻破了,那么这些操作系统调用可能被利用来向其他资源进行攻击,只要所拥有的过程(SQL Server服务帐户)可以对其进行访问。因此,为SQL Server服务仅授予必要的权限是十分重要的。

  我们推荐您采用下列设置:

  1) SQL Server Engine/MSSQLServer

  如果拥有指定实例,那么它们应该被命名为MSSQL$InstanceName。作为具有一般用户权限的Windows域用户帐户运行。不要作为本地系统、本地管理员或域管理员帐户来运行。

  2) SQL Server Agent Service/SQLServerAgent

  如果您的环境中不需要,请禁用该服务;否则请作为具有一般用户权限的Windows域用户帐户运行。不要作为本地系统、本地管理员或域管理员帐户来运行。

  重点: 如果下列条件之一成立,那么SQL Server Agent将需要本地Windows管理员权限:

  SQL Server Agent使用标准的SQL Server身份验证连接到SQL Server(不推荐);

  SQL Server Agent使用多服务器管理主服务器(MSX)帐户,而该帐户使用标准SQL Server身份验证进行连接;

  SQL Server Agent运行非sysadmin固定服务器角色成员所拥有的Microsoft ActiveX脚本或 CmdExec作业。

  如果您需要更改与SQL Server服务相关联的帐户,请使用 SQL Server Enterprise Manager。Enterprise Manager将为SQL Server所使用的文件和注册表键设置合适的权限。不要使用Microsoft管理控制台的“服务”(在控制面板中)来更改这些帐户,因为这样需要手动地调制大量的注册表键和NTFS文件系统权限以及Micorsoft Windows用户权限。

  帐户信息的更改将在下一次服务启动时生效。如果您需要更改与SQL Server以及SQL Server Agent相关联的帐户,那么您必须使用Enterprise Manager分别对两个服务进行更改。

7. 在防火墙上禁用SQL Server端口
  SQL Server的默认安装将监视TCP端口1433以及UDP端口1434。配置您的防火墙来过滤掉到达这些端口的数据包。而且,还应该在防火墙上阻止与指定实例相关联的其他端口。

  8. 使用最安全的文件系统

  NTFS是最适合安装SQL Server的文件系统。它比FAT文件系统更稳定且更容易恢复。而且它还包括一些安全选项,例如文件和目录ACL以及文件加密(EFS)。在安装过程中,如果侦测到 NTFS,SQL Server将在注册表键和文件上设置合适的ACL。不应该去更改这些权限。

  通过EFS,数据库文件将在运行SQL Server的帐户身份下进行加密。只有这个帐户才能解密这些文件。如果您需要更改运行SQL Server的帐户,那么您必须首先在旧帐户下解密这些文件,然后在新帐户下重新进行加密。

  9. 删除或保护旧的安装文件

  SQL Server安装文件可能包含由纯文本或简单加密的凭证和其他在安装过程中记录的敏感配置信息。这些日志文件的保存位置取决于所安装的SQL Server版本。在SQL Server 2000中,下列文件可能受到影响:默认安装时:Program FilesMicrosoft SQL ServerMSSQLInstall文件夹中,以及指定实例的:Program FilesMicrosoft SQL Server MSSQL$Install文件夹中的sqlstp.log, sqlsp.log和setup.iss。

  如果当前的系统是从SQL Server 7.0安装升级而来的,那么还应该检查下列文件:%Windir% 文件夹中的setup.iss以及Windows Temp文件夹中的sqlsp.log。

  Microsoft发布了一个免费的实用工具Killpwd,它将从您的系统中找到并删除这些密码。

  10. 审核指向SQL Server的连接

  SQL Server可以记录事件信息,用于系统管理员的审查。至少您应该记录失败的SQL Server连接尝试,并定期地查看这个日志。在可能的情况下,不要将这些日志和数据文件保存在同一个硬盘上。

  要在SQL Server的EntERPrise Manager中审核失败连接,请按下列步骤操作:

 11) 展开服务器组。

  2) 右键点击服务器,然后点击属性。

  3) 在安全性选项卡的审核等级中,点击失败。

  4) 要使这个设置生效,您必须停止并重新启动服务器。
dawugui 2008-04-18
  • 打赏
  • 举报
回复
exec sp_dropsrvrolemember N'aa', sysadmin
go
exec sp_addsrvrolemember N'aa', securityadmin
go


--作好SQL的安全管理
--作者:邹建

首先,做好用户安全:

--简单的,只允许sql的用户访问sql(防止利用administrator组用户访问)

1.企业管理器--右键SQL实例--属性--安全性--身份验证--选择"sql server和windows"--确定

2.企业管理器--安全性--登陆--右键sa--设置密码--其他用户也设置密码

3.删除用户:
BUILTIN\Administrators
<机器名>\Administrator --这个用户不一定有
这样可以防止用windows身份登陆SQL

4.设置进入企业管理器需要输入密码
在企业管理器中
--右键你的服务器实例(就是那个有绿色图标的)
--编辑SQL Server注册属性
--选择"使用 SQL Server 身份验证"
--并勾选"总是提示输入登录名和密码"
--确定

--经过上面的设置,你的SQL Server基本上算是安全了.

------------------------------------------------------------------------


其次,改默认端口,隐藏服务器,减少被攻击的可能性

SQL Server服务器
--开始
--程序
--Microsoft SQL Server
--服务器网络实用工具
--启用的协议中"TCP/IP"
--属性
--默认端口,输入一个自已定义的端口,比如2433
--勾选隐藏服务器

----------------------------------------------------------------------------


--管好sql的用户,防止访问他不该访问的数据库(总控制,明细还可以控制他对于某个数据库的具体对象具有的权限)

--切换到你新增的用户要控制的数据库
use 你的库名
go

--新增用户
exec sp_addlogin 'test' --添加登录
exec sp_grantdbaccess N'test' --使其成为当前数据库的合法用户
exec sp_addrolemember N'db_owner', N'test' --授予对自己数据库的所有权限

--这样创建的用户就只能访问自己的数据库,及数据库中包含了guest用户的公共表
go

--删除测试用户
exec sp_revokedbaccess N'test' --移除对数据库的访问权限
exec sp_droplogin N'test' --删除登录


如果在企业管理器中创建的话,就用:

企业管理器--安全性--右键登录--新建登录

常规项
--名称中输入用户名
--身份验证方式根据你的需要选择(如果是使用windows身份验证,则要先在操作系统的用户中新建用户)
--默认设置中,选择你新建的用户要访问的数据库名

服务器角色项
这个里面不要选择任何东西

数据库访问项
勾选你创建的用户需要访问的数据库名
数据库角色中允许,勾选"public","db_ownew"

确定,这样建好的用户与上面语句建立的用户一样
---------------------------------------------------------------------------

最后一步,为具体的用户设置具体的访问权限,这个可以参考下面的最简示例:

--添加只允许访问指定表的用户:
exec sp_addlogin '用户名','密码','默认数据库名'

--添加到数据库
exec sp_grantdbaccess '用户名'

--分配整表权限
GRANT SELECT , INSERT , UPDATE , DELETE ON table1 TO [用户名]

--分配权限到具体的列
GRANT SELECT , UPDATE ON table1(id,AA) TO [用户名]


-------------------------------------------------------------------
至于具体的安全设置和理论知道,参考SQL联机帮助

正宗老冉 2008-04-18
  • 打赏
  • 举报
回复
你的设计呢?
lhw1000 2008-04-18
  • 打赏
  • 举报
回复
- -!语法里面没问题 应该是有木马~ 现在服务器是每周一次sql主入 我对服务器那快不了解 怎么办咯`
zccmy22 2008-04-18
  • 打赏
  • 举报
回复
你的语法是否都用全了。呵呵。
gutlgutl 2008-04-18
  • 打赏
  • 举报
回复
如果不是木马,看看连你数据库的连接app里有没有过滤特殊字符的内容,不允许 1=1 和 SQL关键字的判断
liangCK 2008-04-18
  • 打赏
  • 举报
回复
关注

22,207

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧