免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
打印 上一主题 下一主题

【F5专家解答网友提问视频】联合挑战第八期 “Web应用优化” [复制链接]

论坛徽章:
0
61 [报告]
发表于 2010-06-22 21:43 |只看该作者
持续关注,web访问延迟是不可避免的把

论坛徽章:
0
62 [报告]
发表于 2010-06-22 21:46 |只看该作者
有没有具体的案例?

论坛徽章:
0
63 [报告]
发表于 2010-06-22 21:48 |只看该作者
web应用安全方面使用https是一个办法,但是效率太低,不能大量应用,那么安全方面都是什么技术?

论坛徽章:
0
64 [报告]
发表于 2010-06-22 21:48 |只看该作者
Web应用的SSL优化处理
本报记者 范毅波

安全套接层(SSL)协议是在Internet上秘密地、安全地传送数据的事实上的工具。该协议被集成到每个浏览器和每个Web服务器中,从而使任何一个用户都可以与任意Web站点以安全的方式交流。

例如,SSL可以用于在线交易时保护象信用卡号以及股票交易明细这类敏感信息。受SSL保护的网页具有“https”前缀,而非标准的“http” 前缀。

论坛徽章:
0
65 [报告]
发表于 2010-06-22 21:49 |只看该作者
遗憾的是,使用这种保护措施是要付出代价的。由于SSL复杂的认证方案和加/解密算法,SSL需要大量地消耗CPU资源,从而造成Web服务器性能很大的下降。它所造成的服务器瓶颈使Web站点的速度慢如蜗牛爬行,这无疑会失去在线客户。

一类新型专用网络设备——SSL加速器——使Web站点通过在优化的硬件和软件中进行所有的SSL处理来满足性能和安全性的需要。

当具有SSL功能的浏览器(Navigator、IE)与Web服务器(Apache、IIS)通信时,它们利用数字证书确认对方的身份。数字证书是由可信赖的第三方发放的,并被用于生成公共密钥。

当最初的认证完成后,浏览器向服务器发送48字节利用服务器公共密钥加密的主密钥,然后Web服务器利用自己的私有密钥解密这个主密钥。最后,浏览器和服务器在会话过程中用来加解密的对称密钥集合就生成了。加密算法可以为每次会话显式地配置或协商,最广泛使用的加密标准为“数据加密标准”(DES)和RC4。

一旦完成上述启动过程,安全通道就建立了,保密的数据传输就可以开始了。尽管初始认证和密钥生成对于用户是透明的,但对于Web服务器来说,它们远非透明。由于必须为每次用户会话执行启动过程,因而给服务器CPU造成了沉重负担并产生了严重的性能瓶颈。据测试,当处理安全的SSL会话时,标准的 Web服务器只能处理1%到10%的正常负载。

SSL的性能惩罚导致了下列几种人们所不希望的后果:

电子商务交易完成起来速度缓慢,增加了客户取消购买转而访问竞争对手站点的可能性;必须添加更多的Web服务器来处理这种负载;应当被保护的信息没有得到保护,从而造成了安全风险;必须部署价格昂贵的专用网络来传送敏感的信息。

SSL加速设备的出现就是为了解决对CPU资源过量需求的SSL协议所造成的性能问题,这类设备是一些用以在不增加Web服务器负担的条件下处理 SSL任务的特殊的网络部件。通过优化硬件和软件,专用SSL加速器处理SSL会话的速度为标准Web服务器的10到40倍。此外,SSL加速器解放了服务器资源,使这些资源可以真正用于处理应用逻辑和数据库查询,从而加快了整个站点的速度。

将SSL设备集成到网络中很简单,第4层到第7层交换机或负载均衡设备被配置为将所有的443端口(Https)请求改向传送到SSL设备。这时,这台设备承担所有的SSL处理任务,因而立即解脱了Web服务器的负载。随着安全传输流容量的增加,在不增加不必要的管理负担的条件下,可以再部署其他 SSL设备。

最近,SSL加速器功能已经被集成到象服务器端缓存(即所谓的“服务器加速器”)这类Web内容提交产品中了。这种作法的主要好处是,服务器加速器进行SSL处理和对象提交。

配置SSL功能的服务器加速器使广泛地将SSL用于Web基础设施上的安全内容交换成为可能,安全网页将快速地得到提交,安全交易也将迅速地完成。

论坛徽章:
0
66 [报告]
发表于 2010-06-23 08:44 |只看该作者
提速服务器端的Web缓存 (转)
不断增长的Internet活动以及对更快、更丰富Web内容的需求给企业和电子商务Web服务器造成了沉重压力。CacheFlow公司的新型 Server Accelerator 725(服务器加速器)通过从Web服务器上卸载内容提交任务,能够大大提高Web服务器的性能。最近在美国《Network World》的测试中显示,它使Web服务器性能提高了七倍。  

    SA 725是一种安装在Web服务器或服务器场前端的Web高速缓存设备。SA 725运行在该公司专用的嵌入式操作系统 CacheOS上,它通过对经常请求的内容进行缓存以及利用内置SSL(安全套接层)加速器从Web服务器卸载SSL处理,可以缩短Web页的响应时间。从Web服务器上卸载SSL加密功能的结果是大大提高了Web服务器的性能。  

    由于在测试网络时使用了SA 725,因此Web服务器的CPU占用率从90.6%减少到了0%,每秒事务处理量由13.34次提高到105.10次,并且响应时间由0.37085秒减少为0.04654秒。  

    除了大大提高了性能以外,SA 725非常易于安装,并提供了出色的冗余性。但是,文档不全以及将服务器日志上载到FTP服务器时存在的问题使其原本简单的管理应用程序大打折扣。
  
    Web页由许多不同的对象构成,如徽标、脚本和文本,当用户请求某个网页时,这些对象被逐次地检索。对于每一个对象,用户浏览器与Web 服务器之间都会出现一次TCP会话“setup”以及随后的一次HTTP“get”请求。由于每个网页有多个对象,因此,会有多个“setup”和 “get”请求,而这将给最终用户造成时延。  

    SA 725通过Pipeline(管道)专用算法消除了时延,这种算法允许多个TCP连接同时发生。只要浏览器请求这些对象,对象就直接从SA 725发送给最终用户,不必串行处理“setup”和“get”请求。
  
    CacheFlow使用另一种专有算法——自适应刷新算法(ARA),来决定Web页上的哪个对象经常被请求。ARA根据对象在Web服务器上的变化频率建立使用模型,并为每个对象确定刷新模式。SA 725自动对Web服务器进行刷新检查以保证旧内容被更换。ARA确定哪个对象所需处理时间最长,然后为需要较长响应时间的对象分配更高的优先级。  

    并行处理“setup”和“get”请求、对象刷新和优先级分配以及卸载SSL处理,所有这些功能结合起来大大提高了Web服务器的性能。
  
    SA 725抵御住了测试中试图“让设备停机”而发动的jolt2拒绝服务攻击。办法是通过发送足以使CPU占用率达到100%的SSL连接来对SA 725施加压力,然后开始拒绝服务攻击。在攻击中,SA 725仍继续处理SSL连接,尽管速度较慢。  

    SA 725提供了极好的硬件冗余性。每个冗余硬盘都支持CacheOS,并可以用作从一台设备向另一台设备进行故障切换。
  
    SA 725的安装极为简便。初始IP地址分配也很简单,一旦分配完成,屏幕上会显示4行提示,在每行中输入数值,SA 725就可以操作了。  

    出于安全性的考虑,SA 725的配置只能通过控制台上的串口进行,因为必须安装进行SSL加密所用的密钥。不过,这一过程也很简单,只要将作为普通ASCII文本文件保存在一个磁盘上的密钥代码复制并粘贴到控制台中,然后即可启动运行SSL处理功能。  

    SA 725通过运行在一个Web浏览器内部的Java应用程序来进行管理。管理屏幕设计精美,在屏幕左端有一个导航条,这个导航条非常直观易用。SA 725支持SNMP(简单网络管理协议)通过公共管理信息库来监控事件。尽管其管理应用程序总体上还不错,但文档中缺少术语表。  

    值得注意的是,SA 725具有创建自己的服务器日志的能力,该日志提供有关客户机使用Web站点的精确数据,并可以被传送到Web服务器上。Web服务器也提供这种信息,这样来自上述两种设备的数据可以进行比较和组合,使管理人员可以准确地了解访问者的行为。CacheFlow通过将日志文件从SA 725上载到FTP服务器,使文件可以离线浏览,从而简化了这一过程。不过,由于软件中存在的bug,目前还不能使用该特性。  

    SA 725证明通过卸载SSL处理和减少Web页检索所固有的时延,可以大大提高Web服务器的性能。该产品易于安装、便于管理,并提供了完美的冗余性。  
   
    测试过程  

    美国《Network World》使用Apache 1.3.12开放源码Web服务器进行测试。  

    用Mercury Interactive LoadRunner测试工具6.5版(www.merc-int.com)模拟到Web服务器的HTTP连接、“get”请求和安全套接层(SSL)用户连接。它接收有关响应时间、使用中的连接数量以及服务器CPU和内存占用率等统计数据。 LoadRunner运行配置为从Web服务器和SA 725下载Web页的测试脚本。从一台运行Linux Red Hat 6.2的Dell便携机上启动jolt2拒绝服务攻击。  

    测试人员运行了两套测试来确定Web服务器CPU的占用率、每秒事务处理量和事务处理响应时间。在第一套测试中,五个“用户”通过SSL 直接向Apache Web服务器请求一个对象。在这个测试中,LoadRunner显示Web服务器CPU占用率为90.6%,并且可以观察到每秒 13.35次事务处理量和0.37085秒的事务处理响应时间。  

    接下来,对SA 725进行了同样的测试。结果显示,Apache Web 服务器上的CPU使用率为0%(因为对象保存在SA 725的高速缓存中,SSL处理在SA 725上进行,而非Apache服务器上)。  

    测试中可以观察到每秒105.10次的命中率(比前面的测试提高了七倍)和0.04654秒的事务处理响应时间(也比前面的测试缩短了近七倍)。

论坛徽章:
0
67 [报告]
发表于 2010-06-23 09:11 |只看该作者
CentOS Squid操作系统重新规划并部署
在向大家详细介绍CentOS Squid之前,首先让大家了解下CentOS Squid,然后全面介绍CentOS Squid,希望对大家有用。Linux下实现针对Windows域身份认证的代理服务器口水熊工作的公司使用的代理服务器是基于Linux系统的,经常会出现一些或多或少的问题。直接影响到用户正常的Internet访问。

因为是以前的同事做的,再加上,本人一直忙于其它的项目,没时间去调整,优化。前不久,Linux系统突然无法进入GNU/GNOME桌面环境,促使我下定决心重新规划并部署一台符合当前应用环境需要的代理服务器系统来。

在部署之前,我们先来看看现有的代理服务器的系统环境:该代理服务器采用的是基于Redhat Linux 8.x操作系统的以NCSAR为认证模式的CentOS Squid 2.3 代理服务器。因系统比较陈旧,稳定性有所欠缺,同时还存在以下不足之处:

1. 因CentOS Squid配置的问题,系统无法自动释放CentOS Squid的Cache及日志所占用磁盘空间,经常会因为磁盘空间不足而导致CentOS Squid停止服务,需要人为的去删除cache及日志以释放磁盘空间。

2. 需要在代理服务器上,为不同的用户设置不同的密码,以前公司职员并不多,倒不是很麻烦,但,随着公司的发展,职员的数量大幅增加,加重了IT管理人员的工作负担,同时,也非常难以保证与Windows域账户的一致知性;

3. 客户端不能使用AD集成的账户认证模式,用户每次访问Internet都需要重复的输入用户名及密码,大大降低了用户使用感受。

4. 没有实现针对不同Internet访问群体,设置不同的用户权限;

5. 无法监督用户访问Internet的行为,直接影响到公司网络的正常商业行为。

据此,我们不难发现,此代理服务器需要经常对其进行维护,非常影响IT工作人员的工作效率。从公司现阶段的实际情况出发,对代理服务器的功能重新规划如下:

1. 能够在一点条件下,自动回收被CentOS Squid占用的磁盘空间;

2. 利用AD服务器上的用户账号信息对用户的身份进行验证,避免重复的设置用户信息;

3. 提供三种用户权限:

1. 拒绝所有权限;

2. 允许访问Internet,但不允许下载视频、音频、可执行文件等;

3. 不受限,可访问任意Internet资源;

4. IT管理人员可以查看用户访问Internet的日志,监督用户访问Internet的行为;

既然我们的目标已经非常明确了,我们就不再废话,开始主题吧!

I.系统环境:

1. CentOS 5.0 Linux

2. CentOS Squid-2.6.STABLE6-4.el5

3. samba-3.0.23c-2.el5.2.0.2

4. sarg-2.2.1-1.el5.rf

5. winbind

6. krb5

II. 修改kerberos 5身份验证服务的配置文件(非特殊说明,均工作在root用户模式下):

执行下列命令:[root@proxy ~]# vim /etc/krb5.conf修改后的krb5.conf为:
1[logging]
2 default = FILE:/var/log/krb5libs.log
3 kdc = FILE:/var/log/krb5kdc.log
4 admin_server = FILE:/var/log/kadmind.log
5
6[libdefaults]
7 default_realm = COMPANY.COM    #默认的域名(Realm)
8 dns_lookup_realm = false
9 dns_lookup_kdc = false
10 ticket_lifetime = 24h
11 forwardable = yes
12
13[realms]
14 COMPANY.COM = {
15 kdc = adsrv.company.com:88#此处指定KDC(密钥分配中心)服务器的名称或IP地址,一般都在AD服务器上
16 admin_server = adsrv.company.com:749#此处指定管理服务器的名称或IP地址
17 default_domain = company.com   #默认的域名(domain)
18 }
19
20[domain_realm]    #domain与realm的对应关系
21 .company.com = COMPANY.COM
22 company.com = COMPANY.COM
23
24[kdc]
25profile = /var/kerberos/krb5kdc/kdc.conf
26
27[appdefaults]
28 pam = {
29   debug = false
30   ticket_lifetime = 36000
31   renew_lifetime = 36000
32   forwardable = true
33   krb4_convert = false
34 }
III. 利用Kinit工具测试krb5的设置是否正确

执行下列命令:[root@proxy ~]# kinit administrator@COMPANY.COM提示输入用户administrator的密码,正确输入密码之后返回以下信息:kinit: NOTICE: ticket renewable lifetime is 1 week

或直接返回到命令行状态,其它提示信息均可能是出错信息。请务必确认您的Linux系统与Windows域服务器的时间及时区设置一致,否则将无法正常与活动目录服务器正常通信。

IV. Samba配置因为我们此处并不涉及到真正的samba服务器的配置,所以并没有将整个的配置内容放在这里,而仅仅只放了架设CentOS Squid代理服务器所需要的部分,如下所示:
1[global]
2idmap gid = 10000-20000
3idmap uid = 10000-20000
4password server = 192.168.21.21
5workgroup = COMPANY   #域的NetBios名
6os level = 20
7encrypt passwords = yes
8security = ads   #设置为Windows活动目录安全-ADS验证
9realm = COMPANY.COM   #验证域realm,必须大写
10winbind use default domain = yes
以上列出来的项目均需要根据实际情况改动。

V.通过ntlm验证程序来测试之前所做的配置是否正确在做测试之前,如必要时,请重新启动Linux服务器。不过,你也可以尝试仅重新启动samba及winbind服务来达到同样的目的(呵呵……这得看运气!):
[root@proxy ~]# service winbind restart
[root@proxy ~]# service smb restart
重启系统或以上服务之后,执行以下命令:

[root@proxy ~]# ntlm_auth –username=administrator
提示输入用户administrator的密码,正确输入密码之后返回以下信息:

NT_STATUS_OK: NT_STATUS_OK (0x0)
当返回的结果如上面所描述的话,则说明域账号administrator已经通过了AD的认证。可以开始接下来的工作了。

VI. 配置NSS(Name Service Switch)NSS是Name Service Switch的缩写,具体功能请参考维基百科中的解释http://en.wikipedia.org/wiki /Name_Service_Switch,具体配置如下:passwd: files winbind
group: files winbind
其它部份无需改变。

VII. CentOS Squid的配置既然是做代理服务器,CentOS Squid的设置当然是重中之重,下面,根据具体实现功能的不同,分别讲述CentOS Squid的设置:

1.为CentOS Squid配置第三方身份验证程序
1#启用CentOS Squid-2.5-ntlmssp做为ntlm验证模式的辅助协议
2auth_param ntlm program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp
3auth_param ntlm children 5
4auth_param ntlm keep_alive on
5
6#启用CentOS Squid-2.5-basic做为基本验证模式的辅助协议
7auth_param basic program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-basic
8auth_param basic children 5
9auth_param basic realm Squid proxy-caching web server
10auth_param basic credentialsttl 2 hours
11auth_param basic casesensitive off
12
13#下面的这句参数是重点,保证了CentOS Squid可以针对不同的用户组进行不同的访问控制策略
14external_acl_type NT_global_group %LOGIN /usr/lib/squid/wbinfo_group.pl
2.用户访问控制列表的设置


1#将AD中的internet全局组映射到ProxyUsers
2acl ProxyUsers external NT_global_group internet
3#将AD中的nolimitedinternet全局组映射到noLimited
4acl NoLimited external NT_global_group nolimitedinternet
5#此句保证了所有用户必须经过身份验证
6acl AuthenticatedUsers proxy_auth REQUIRED
7#定义不允许下载的文件类型
8acl InvalidFiles urlpath_regex -i \.mp3$ \.avi$ \.rmvb$ \.mpg$ \.rm$ \.wma$ \.wmv$ \.scr$ \.exe$ \.ocx$ \.dll$ \.com$
9#定义不允许访问的域名及IP地址,其存放于文件“denyDomain.list”与“denyIP.list”中
10acl denyDomain dstdomain "/etc/squid/denyDomain.list"
11acl denyIP dst "/etc/squid/denyIP.list"
12
13#允许NoLimited用户访问任意Internet资源
14http_access allow AuthenticatedUsers NoLimited
15http_access deny denyDomain
16http_access deny denyIP
17http_access deny InvalidFiles
18
19#禁止用户访问denyDomain.list以及denyIP.list中的域名及IP地址,并禁止下载InvalidFiles指定的文件类型
20http_access allow AuthenticatedUsers ProxyUsers
21acl all src 0.0.0.0/0.0.0.0
22acl manager proto cache_object
23acl localhost src 127.0.0.1/255.255.255.255
24acl to_localhost dst 127.0.0.0/8
25acl SSL_ports port 443
26acl Safe_ports port 80# http
27acl Safe_ports port 21# ftp
28acl Safe_ports port 443    # https
29acl Safe_ports port 70# gopher
30acl Safe_ports port 210    # wais
31acl Safe_ports port 1025-65535 # unregistered ports
32acl Safe_ports port 280    # http-mgmt
33acl Safe_ports port 488    # gss-http
34acl Safe_ports port 591    # filemaker
35acl Safe_ports port 777    # multiling http
36acl CONNECT method CONNECT
请注意此配置中的两条语句的位置。第一条“http_access allow AuthenticatedUsers NoLimited”,第二条“http_access allow AuthenticatedUsers ProxyUsers”,此两条语句都是将权限应用到用户组,但不同的是位置,在CentOS Squid的ACL配置语句中,先后顺序决定了其权限的不同。大家一定要多注意,细细去揣摩。

VIII. 更改winbind管道的权限

一定不能忘记这一点,没有winbind管道的足够的权限,系统是没办法对用户的身份进行验证的。其命令如下:

[root@proxy ~]# chown –R root:squid /var/cache/samba/winbindd_privileged
[root@proxy ~]# chmod –R 750 /var/cache/samba/winbindd_privileged
IX.   重启所有相关服务

命令如下:

[root@proxy ~]# service smb restart
[root@proxy ~]# service winbind restart
[root@proxy ~]# service squid restart
到此为止,我们已经成功地完成了CentOS Squid代理服务器的配置。接下来,我们还需要给予IT管理员查看并监督用户访问Internet行为的能力。

X.  Sarg的安装与配置

为了简单起见,我们直接下载二进制的安装包,执行下列命令获得二进制安装包:

[root@proxy ~]# wget http://dag.wieers.com/rpm/packag ... 1-1.el5.rf.i386.rpm
安装当然更简单了啦,没什么好说的,执行下列命令即可:

[root@proxy ~]# rpm –Uvh sarg-2.2.1-1.el5.rf.i386.rpm
安装完后,重新启动一下Apache服务器当然是再好不过了。

论坛徽章:
381
CU十二周年纪念徽章
日期:2014-01-04 22:46:58CU大牛徽章
日期:2013-03-13 15:32:35CU大牛徽章
日期:2013-03-13 15:38:15CU大牛徽章
日期:2013-03-13 15:38:52CU大牛徽章
日期:2013-03-14 14:08:55CU大牛徽章
日期:2013-04-17 11:17:19CU大牛徽章
日期:2013-04-17 11:17:32CU大牛徽章
日期:2013-04-17 11:17:37CU大牛徽章
日期:2013-04-17 11:17:42CU大牛徽章
日期:2013-04-17 11:17:47CU大牛徽章
日期:2013-04-17 11:17:52CU大牛徽章
日期:2013-04-17 11:17:56
68 [报告]
发表于 2010-06-23 09:26 |只看该作者
F5对于小企业的话,价格太高.

论坛徽章:
0
69 [报告]
发表于 2010-06-23 09:31 |只看该作者
有钱的公司通过改善硬件来达到优化效果!

没钱的优化程序和Web 服务!

论坛徽章:
0
70 [报告]
发表于 2010-06-23 09:59 |只看该作者
A:你的网络是否足够安全?你的商业数据是否得到了足够的保护?你们公司的机密资料、核心资产文档甚至是个人私密是否会有一天出现在竞争对手的手里?

B:你的员工、同事时常抱怨网络不好用?大家对缓慢迟滞的web应用访问已经习以为常?运维人员依然四处救火却又常常是束手无策?你希望有个神奇的东西来拯救越来越慢的web访问?


安全意识不够,现在数据是相当不安全。

想改善网络,但苦于没法。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP