资源预览内容
第1页 / 共18页
第2页 / 共18页
第3页 / 共18页
第4页 / 共18页
第5页 / 共18页
第6页 / 共18页
第7页 / 共18页
第8页 / 共18页
第9页 / 共18页
第10页 / 共18页
亲,该文档总共18页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
服务器安全攻略系统环境:Windows server 2003+iis6.0+SQL 2005+vs2005Contents诊断方法及其解决办法SQL注入式攻击及预防DDOS攻击及预防服务器攻击手段服务器的配置服务器配置基本配置: 安装服务器补丁 安装杀毒软件 设置端口保护和防火墙、删除默认共享 权限设置 NTFS权限设置,请记住分区的时候把所有的硬盘 都分为NTFS分区,然后我们可以确定每个分区对 每个用户开放的权限 每个IIS站点或者虚拟目录,都可以设置一个匿名 访问用户 禁用不必要的服务 开始-运行-services.msc 修改注册表,让系统更强壮 服务器攻击手段vDOS攻击与DDOS攻击 vDDOS是英文Distributed Denial of Service的缩写,意即“分布式拒绝服务” , vDOS攻击是Denial of Service的简称,即 拒绝服务,造成DoS的攻击行为,其目的 是使计算机或网络无法提供正常的服务。 最常见的DoS攻击有计算机网络带宽攻击 和连通性攻击。 v区别:DOS侧重于系统漏洞的攻击, DDOS最常见的是洪水攻击,就是阻塞系 统与外面的正常通信DDOS攻击vSYN/ACK Flood攻击:这种攻击方法是经典最 有效的DDOS方法,可通杀各种系统的网络服务 ,主要是通过向受害主机发送大量伪造源IP和 源端口的SYN或ACK包 。 v判断方法:服务器无法访问,会导致Ping失败 、TCP/IP栈失效,不响应键盘和鼠标。 vTCP全连接攻击:这种攻击是为了绕过常规防 火墙的检查而设计的, 导致服务器资源被耗尽 。 vScript脚本攻击 :服务器建立正常的TCP连接 ,并不断的向脚本程序提交查询、列表等大量 耗费数据库资源的调用。轻松找一些Proxy代理 就可实施攻击。 SQL注入式攻击v 注入式攻击是指利用设计上的漏洞,在目标服务器上运 行sql命令以及进行其他方式的攻击,动态生成sql命令 是没有对用户输入的数据进行验证,这是注入式攻击原 理. v 最常见的也就是在查询字符串中直接输入SQL攻击字符 串 v 例如:page.asp?id=Num and exists (select * from admin) v 其次就是在FORM表单中提交的SQL注入攻击字段。 v 通过COOKIE绕过一些放注入的脚本程序 例如 :javascript:alert(document.cookie=“id=“+escape(“ 这就是asp? id=xx后面xx代表的数值) and (这里是注入 攻击代码)“); v 还有就是上面几种的攻击通过16进制编码后,绕过SQL 注入检测的脚本程序 SQL注入式预防v 对于构造SQL查询的技术,可以使用下面的技术: v 替换单引号,即把所有单独出现的单引号改成两个单引 号,防止攻击者修改SQL命令的含义。 v 删除用户输入内容中的所有连字符,防止攻击者构造出 类如“SELECT * from Users WHERE login = mas AND password =”之类的查询,因为这类查询的后 半部分已经被注释掉,不再有效,攻击者只要知道一个 合法的用户登录名称,根本不需要知道用户的密码就可 以顺利获得访问权限。 v 对于用来执行查询的数据库帐户,限制其权限。用不同 的用户帐户执行查询、插入、更新、删除操作。由于隔 离了不同帐户可执行的操作,因而也就防止了原本用于 执行SELECT命令的地方却被用于执行INSERT、 UPDATE或DELETE命令 。预防SQL注入式攻击v 限制表单或查询字符串输入的长度 v 用存储过程来执行所有的查询 。SQL参数的传递方式将防止攻击 者利用单引号和连字符实施攻击。此外,它还使得数据库权限可以 限制到只允许特定的存储过程执行,所有的用户输入必须遵从被调 用的存储过程的安全上下文,这样就很难再发生注入式攻击了 v 普通用户与系统管理员用户的权限要有严格的区分v 如果一个普通用户在使用查询语句中嵌入另一个Drop Table语句, 那么是否允许执行呢?由于Drop语句关系到数据库的基本对象, 故要操作这个语句用户必须有相关的权限。在权限设计中,对于终 端用户,即应用软件的使用者,没有必要给他们数据库对象的建立 、删除等权限。那么即使在他们使用SQL语句中带有嵌入式的恶意 代码,由于其用户权限的限制,这些代码也将无法被执行。故应用 程序在设计的时候,最好把系统管理员的用户与普通用户区分开来 。如此可以最大限度的减少注入式攻击对数据库带来的危害 SQL注入式预防v 强迫使用参数化语句 v 在编写SQL语句的时候,用户输入的变量不是直接嵌入 到SQL语句。而是通过参数来传递这个变量的话,那么 就可以有效的防治SQL注入式攻击。也就是说,用户的 输入绝对不能够直接被嵌入到SQL语句中。与此相反, 用户的输入的内容必须进行过滤,或者使用参数化的语 句来传递用户输入的变量。参数化的语句使用参数而不 是将用户输入变量嵌入到SQL语句中。采用这种措施, 可以杜绝大部分的SQL注入式攻击。使用SQL的参数方 式.参数(Parameters)集合提供类型检测和长度检测.如 果你使用参数集合,输入的内容将被当作文本值来对待, 数据库不会执行包含在其中的代码.使用参数集方式的一 个额外的好处是,你可以严格限定输入的类型和长度.如 果输入型超出范围将会触发异常.Webconfig文件配置v 验证ASP.NET的错误信息没有被返回到客户端 v 你可以使用元素来配置客户端,一般的 错误信息应该被程序错误检测机制返回到客户端. v 请确认已经更改web.config中的mode属性为 “remoteOnly“,下面是示例. v v 安在装了一个ASP.NET 的程序之后,你可以按照如下 设定指定客户端的错误信息页面。 v v On指定启用自定义错误。如果未指定 defaultRedirect, 用户将看到一般性错误。Off指定禁用自定义错误。这允 许显示标准的详细错误。RemoteOnly指定仅向远程客 户端显示自定义错误并且向本地主机显示 ASP.NET 错 误。win2003整体配置整理v 1) 隐藏重要文件/目录可以修改注册表实现完全隐藏 v HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows Current-VersionExplorerAdvancedFolderHi-ddenSHOWALL” ,鼠标右击 “CheckedValue”,选择修改,把数值由1改为0 v 2) 防止SYN洪水攻击 v HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices TcpipParameters 新建DWORD值,名为SynAttackProtect,值为2 新建EnablePMTUDiscovery REG_DWORD 0 新建NoNameReleaseOnDemand REG_DWORD 1 新建EnableDeadGWDetect REG_DWORD 0 新建KeepAliveTime REG_DWORD 300,000 新建PerformRouterDiscovery REG_DWORD 0 新建EnableICMPRedirects REG_DWORD 0 win2003整体配置整理v 3) 禁止响应ICMP路由通告报文 HKEY_LOCAL_MACHINESYSTEMCurrentControlS etServicesTcpipParametersInterfacesinterface 新建DWORD值,名为PerformRouterDiscovery 值为 0 v 4) 防止ICMP重定向报文的攻击 HKEY_LOCAL_MACHINESYSTEMCurrentControlS etServicesTcpipParameters 将EnableICMPRedirects 值设为0 v 5) 不支持IGMP协议 HKEY_LOCAL_MACHINESYSTEMCurrentControlS etServicesTcpipParameters 新建DWORD值,名为IGMPLevel 值为0Win2003整体配置整理Your TextYour Textv 6) 禁止IPC空连接: cracker可以利用net use命令建立空连接,进而入侵,还有net view,nbtstat这些都是基于空连接的,禁止空连接就好了。 Local_MachineSystemCurrentControlSetControlLSA- RestrictAnonymous 把这个值改成”1”即可。 v 7) 更改TTL值 cracker可以根据ping回的TTL值来大致判断你的操作系统,如: TTL=107(WINNT); TTL=108(win2000); TTL=127或128(win9x); TTL=240或241(linux); TTL=252(solaris); TTL=240(Irix); v 8) 禁止建立空连接 默认情况下,任何用户通过通过空连接连上服务器,进而枚举出帐 号,猜测密码。我们可以通过修改注册表来禁止建立空连接: Local_MachineSystemCurrentControlSetControlLSA- RestrictAnonymous 的值改成”1”即可。 杜绝基于Guest账户的入侵 v Guest账户即所谓的来宾账户,它可以访问计算机,但受到限制。 不幸的是,Guest也为黑客入侵打开了方便之门!网上有很多文章 中都介绍过如何利用Guest用户得到管理员权限的方法,所以要杜 绝基于Guest账户的系统入侵。 v 禁用或彻底删除Guest账户是最好的办法,但在某些必须使用到 Guest账户的情况下,就需要通过其它途径来做好防御工作了。 v 首先 要给Guest设一个密码,然后详细设置Guest账户对物理路径 的访问权限。举例来说,如果你要防止Guest用户可以访问tool文 件夹,可以 右击该文件夹,在弹出菜单中选择“安全”标签,从中可 看到可以访问此文件夹的所有用户。删除管理员之外的所有用户即 可。或者在权限中为相应的用户设定权 限,比方说只能“列出文件 夹目录”和“读取”等,这样就安全多了。 v 只给Guest读取的权限,只有administrator读取和修改的权限。Win2003整体配置整理Add Your Titlev 9) 建议使用W3C扩充日志文件格式,每天记录客户IP地 址,用户名,服务器端口,方法,URI字根,HTTP状态 ,用户代理,而且每天均要审查日志。(最好 不要使用 缺省的目录,建议更换一个记日志的路径,同时设置日 志的访问权限,只允许管理员和system为Full Control )。 10) 程序安全: A. 涉及用户名与口令的程序最好封装在服务器端,尽量 少的在ASP文件里出现,涉及到与数据库连接地用户名 与口令应给予最小的权限; B. 需要经过验证的ASP页面,可跟踪上一个页面的文件 名,只有从上一页面转进来的会话才能读取这个页面; C. 防止ASP主页.inc文件泄露问题; D. 防止UE等编辑器生成some.asp.bak文件泄露问题。 v 检测方法: v 如果系统的安全性日志在某段时间段内不存在(这段时间服务器处 于运行状态),很可能系统的登录日志已经被删除,还有可能被入 侵 v net user命令能显示计算机中所有的本地用户账户。net localgroup命令显示本地组成员,net localgroup administrators 命令显示管理员组中的成员,net start命令显示正在运行的服务 , 看看有没有不符合本系统的隐藏用户和组及其服务 v 系统的登陆界面按下win+U组合,如果没出现放大镜就证明系统开 了后门 v 解决方法: v 恢
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号