- 上一篇 网络安全:常见的网络服务的安全 [2008-8-20 15:42:33]
| 微软认证MCSE2003:Security | 微软认证MCSE2003+MCDBA |
| 国家软考-网络工程师 | 华为认证网络工程师(HCNE) |
| Adobe平面设计师(ACCD) | Adobe网络设计师(ACCD) |
| 国家信息化网络安全工程师 | CEAC网络应用工程师 |
| CEAC微机装配与维护工程师 | 数据恢复职业技术培训 |
| 黑客系列:黑客攻防实战 | 瑞星病毒防范职业技能培训 |
本节内容包括非常广泛基本上包括了现在互联网上的用得最多的大多数服务具体内容包括:WEB服务安全,Telnet安全,DNS安全,邮件系统安全等等的一些最常用的服务。我们会分析每一种服务的特点及存在的一些安全隐患,然后做出一些合适的有效的策略和手段来增强服务器的安全。
网络安全:常见的网络服务的安全(20080813)在线专题授课音频
(本课程正式学员可登录学习系统,进入对应课程,在窗口左边的“课程资料室”内进行在线浏览。)一、WEB服务器安全
1.windows操作系统安全
构造一个安全系统 要创建一个安全可靠的Web服务器,必须要实现Windows 2000和IIS的双重安全,因为IIS的用户同时也是Windows 2000的用户,并且IIS目录的权限依赖Windows的NTFS文件系统的权限控制,所以保护IIS安全的第一步就是确保Windows 2000操作系统的安全:
1. 使用NTFS文件系统,以便对文件和目录进行管理。
2. 关闭默认共享
打开注册表编辑器,展开
“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters”项,添加键值AutoShareServer,类型为REG_DWORD,值为0。 这样就可以彻底关闭“默认共享”。
3. 修改共享权限
建立新的共享后立即修改Everyone的缺省权限,不让Web服务器访问者得到不必要的权限。
4. 为系统管理员账号更名,避免非法用户攻击。
鼠标右击[我的电脑]→[管理]→启动“计算机管理”程序,在“本地用户和组”中,鼠标右击“管理员账号(Administrator)”→选择“重命名”,将管理员账号修改为一个很普通的用户名。
5. 禁用TCP/IP 上的NetBIOS
鼠标右击桌面上[网络邻居] →[属性] →[本地连接] →[属性],打开“本地连接属性”对话框。选择[Internet协议(TCP/IP)]→[属性]→[高级]→[WINS],选中下侧的“禁用TCP/IP上的NetBIOS”一项即可解除TCP/IP上的NetBIOS。
6. TCP/IP上对进站连接进行控制
鼠标右击桌面上[网络邻居] →[属性] →[本地连接] →[属性],打开“本地连接属性”对话框。选择[Internet协议(TCP/IP)]→[属性]→[高级]→[选项], 在列表中单击选中“TCP/IP筛选”选项。单击[属性]按钮,选择“只允许”,再单击[添加]按钮(如图1),只填入80端口。
7. 修改注册表,减小拒绝服务攻击的风险。
打开注册表:将HKLM\System\CurrentControlSet\Services\Tcpip\Parameters下的SynAttackProtect的值修改为2,使连接对超时的响应更快。
2.保证IIS自身的安全性
要构建一个安全的IIS服务器,必须从安装时就充分考虑安全问题。
1. 不要将IIS安装在系统分区上。
2. 修改IIS的安装默认路径。
3. 打上Windows和IIS的最新补丁。
IIS的安全配置
1. 删除不必要的虚拟目录
IIS安装完成后在wwwroot下默认生成了一些目录,包括IISHelp、IISAdmin、IISSamples、MSADC等,这些目录都没有什么实际的作用,可直接删除。
2. 删除危险的IIS组件
默认安装后的有些IIS组件可能会造成安全威胁,例如 Internet服务管理器(HTML)、SMTP Service和NNTP Service、样本页面和脚本,大家可以根据自己的需要决定是否删除。
3. 为IIS中的文件分类设置权限
除了在操作系统里为IIS的文件设置必要的权限外,还要在IIS管理器中为它们设置权限。一个好的设置策略是:为Web 站点上不同类型的文件都建立目录,然后给它们分配适当权限。例如:静态文件文件夹允许读、拒绝写,ASP脚本文件夹允许执行、拒绝写和读取,EXE等可执行程序允许执行、拒绝读写。
4. 删除不必要的应用程序映射
ISS中默认存在很多种应用程序映射,除了ASP的这个程序映射,其他的文件在网站上都很少用到。
在“Internet服务管理器”中,右击网站目录,选择“属性”,在网站目录属性对话框的“主目录”页面中,点击[配置]按钮,弹出“应用程序配置”对话框,在“应用程序映射”页面,删除无用的程序映射。
5. 保护日志安全
日志是系统安全策略的一个重要环节,确保日志的安全能有效提高系统整体安全性。
● 修改IIS日志的存放路径
默认情况下,IIS的日志存放在%WinDir%\System32\LogFiles,黑客当然非常清楚,所以最好修改一下其存放路径。在“Internet服务管理器”中,右击网站目录,选择“属性”,在网站目录属性对话框的“Web站点”页面中,在选中“启用日志记录”的情况下,点击旁边的[属性]按钮,在“常规属性”页面,点击[浏览]按钮或者直接在输入框中输入日志存放路径即可。
● 修改日志访问权限,设置只有管理员才能访问。
通过以上的一些安全设置,相信你的Web服务器会安全许多。
二、SSH的介绍
1.Telnet的缺陷
Telnet本身的缺陷是:
没有口令保护,远程用户的登陆传送的帐号和密码都是明文,使用普通的sniffer都可以被截获
没有强力认证过程。只是验证连接者的帐户和密码。
没有完整性检查。传送的数据没有办法知道是否完整的,而不是被篡改过的数据。
传送的数据都没有加密。
SSH是一个很好的telnet安全保护系统,但是如果是要更严格的保护,你必须使用其他的telnet安全产品。
2、什么是SSH ?
传统的网络服务程序,如FTP、Pop和Telnet在传输机制和实现原理上是没有考虑安全机制的,其本质上都是不安全的;因为它们在网络上用明文传送数据、用户帐号和用户口令,别有用心的人通过窃听等网络攻击手段非常容易地就可以截获这些数据、用户帐号和用户口令。而且,这些网络服务程序的简单安全验证方式也有其弱点,那就是很容易受到"中间人"(man-in-the-middle)这种攻击方式的攻击。所谓"中间人"的攻击方式,就是"中间人"冒充真正的服务器接收你的传给服务器的数据,然后再冒充你把数据传给真正的服务器。服务器和你之间的数据传送被"中间人"一转手做了手脚之后,就会出现很严重的问题。
SSH是英文Secure Shell的简写形式。通过使用SSH,你可以把所有传输的数据进行加密,这样"中间人"这种攻击方式就不可能实现了,而且也能够防止DNS欺骗和IP欺骗。使用SSH,还有一个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度。SSH有很多功能,它既可以代替Telnet,又可以为FTP、Pop、甚至为PPP提供一个安全的"通道"。
最初的SSH是由芬兰的一家公司开发的。但是因为受版权和加密算法的限制,现在很多人都转而使用OpenSSH。OpenSSH是SSH的替代软件包,而且是免费的,可以预计将来会有越来越多的人使用它而不是SSH。
最后,SSH在运行方式上也很有特色。不像其他的TCP/IP应用,SSH被设计为工作于自己的基础之上,而不是利用包装(wrappers)或通过Internet守护进程inetd。但是许多人想通过TCP包装来运行SSH守护进程。虽然你可以通过tcpd(从inetd上运行启动)来运行SSH进程,但这完全没有必要。
3、SSH协议的内容
SSH协议是建立在应用层和传输层基础上的安全协议,它主要由以下三部分组成,共同实现SSH的安全保密机制。
传输层协议,它提供诸如认证、信任和完整性检验等安全措施,此外它还可以任意地提供数据压缩功能。通常情况下,这些传输层协议都建立在面向连接的TCP数据流之上。
用户认证协议层,用来实现服务器的跟客户端用户之间的身份认证,它运行在传输层协议之上。
连接协议层,分配多个加密通道至一些逻辑通道上,它运行在用户认证层协议之上。
当安全的传输层连接建立之后,客户端将发送一个服务请求。当用户认证层连接建立之后将发送第二个服务请求。这就允许新定义的协议可以和以前的协议共存。连接协议提供可用作多种目的通道,为设置安全交互Shell会话和传输任意的TCP/IP端口和X11连接提供标准方法。
4、SSH的安全验证
从客户端来看,SSH提供两种级别的安全验证。
第一种级别(基于口令的安全验证),只要你知道自己的帐号和口令,就可以登录到远程主机,并且所有传输的数据都会被加密。但是,这种验证方式不能保证你正在连接的服务器就是你想连接的服务器。可能会有别的服务器在冒充真正的服务器,也就是受到"中间人"这种攻击方式的攻击。
第二种级别(基于密匙的安全验证),需要依靠密匙,也就是你必须为自己创建一对密匙,并把公有密匙放在需要访问的服务器上。如果你要连接到SSH服务器上,客户端软件就会向服务器发出请求,请求用你的密匙进行安全验证。服务器收到请求之后,先在你在该服务器的用户根目录下寻找你的公有密匙,然后把它和你发送过来的公有密匙进行比较。如果两个密匙一致,服务器就用公有密匙加密"质询"(challenge)并把它发送给客户端软件。客户端软件收到"质询"之后就可以用你的私人密匙解密再把它发送给服务器。
与第一种级别相比,第二种级别不需要在网络上传送用户口令。另外,第二种级别不仅加密所有传送的数据,而"中间人"这种攻击方式也是不可能的(因为他没有你的私人密匙)。但是整个登录的过程可能慢一些。
三、SQL服务安全
1.SQL注入攻击原理
介绍SQL注入这一攻击方法的原理,主要是为了明确如何对其进行有效的防范,而要做到这一点,必须首先明白利用SQL注入漏洞入侵的过程。
首先得说到程序员在编写程序代码的一个习惯,一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在潜在的安全隐患。如这是一个正常的网址http://XXX/show.asp?ID=123,将这个网址提交到服务器后,服务器将进行类似Select * from 表名 where 字段="&ID的查询ID即客户端提交的参数,本例即是123),再将查询结果返回给客户端,如果这里客户端故意提交一个非法网址:http://XXX/show.asp?ID=123 and user>0,这时,服务器运行Select * from 表名 where 字段=123 and user>0这样的查询时,服务器会返回给客户端一个错误提示信息:
如果事先不知道管理员账号存在表login中,并且也不知道管理员账号为admin,但这并意味着不可能获得管理员密码。现在已经有很多专门针对SQL注入攻击编写的一些专门的应用程序和攻击软件,根本就不需要人工来判断了,只需要很短的时间就可以自动分析和判断出来,关键是只要服务器存在SQL注入漏洞,就可以向服务器提交包含非法字符的语句达到相同的目的,这个需要的仅仅是时间。
2.SQL注入攻击防御
针对SQL攻击的防御,目前主要有以下几种解决方案:
最小权限原则。如果不是必要就不要使用dbo或者sa账户,为不同的账号分配不同动作和权限,最小权限原则适用于所有与安全有关的场合,当然也包括SQL注入。
对用户输入进行检查。对一些特殊字符,比如单引号、双引号、分号、逗号、冒号、连接号等进行转换或者过滤,或者根本就不允许使用这些符号,其实这是非常有效,现在很多网站和程序员都是这么做的;使用强制数据类型,比如你需要用户输入一个整数,就要把用户输入的数据转换成整数形式;限制用户输入的长度等等。这些检查要放在server运行,client提交的任何东西都是不可信的。
使用存储过程,如果一定要使用sql语句,那么用标准的方式组建sql语句,比如可以利用parameters对象,避免用字符串直接拼sq命令。
当sql运行出错时,不要显示出错信息,因为把数据库返回的错误信息全部显示给用户,经常会透露一些数据库设计的细节。
针对常用的sql注入式攻击方式进行专门的设置。
站内检索: |
|