防止跨网站追踪怎么设置_大网站有防跨站攻击吗

hacker|
202

如何防止http TRACE 跨站攻击

如果一台 Web Server 支持 Trace 和 / 或 Track 方式,那么它一定存在跨站脚本漏洞,将有可能受到跨站攻击。 Trace 和 Track 是用来调试 Web 服务器连接的 HTTP 方式。

我们通常在描述各种浏览器缺陷的时候,把“Cross-Site-Tracing”(跨站攻击)简称为 XST。

攻击者可以利用此漏洞欺骗合法用户并得到他们的私人信息。

解决方案:禁用 Trace 和 / 或 Track 方式。

针对 Apache,可以借助 mod_rewrite 模块来禁止 HTTP Trace 请求。只要在各虚拟主机的配置文件里添加如下语句:

RewriteEngine on

RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)

RewriteRule .* - [F]

补充其他 Web Server 的解决方案:

1、Microsoft IIS

使用 URLScan 工具禁用 HTTP Trace 请求,或者只开放满足站点需求和策略的方式。

2、Sun ONE Web Server releases 6.0 SP2 或者更高的版本:

在 obj.conf 文件的默认 object section 里添加下面的语句:

Client method="TRACE"

AuthTrans fn="set-variable"

remove-headers="transfer-encoding"

set-headers="content-length: -1"

error="501"

/Client

如何防止跨站点脚本攻击

防止跨站点脚本攻击的解决方法:1.输入过滤对每一个用户的输入或者请求首部,都要进行过滤。这需要程序员有良好的安全素养,而且需要覆盖到所有的输入源。而且还不能够阻止其他的一些问题,如错误页等。 final String filterPattern="[{}\\[\\];\\]"; String inputStr = s.replaceAll(filterPattern," ");2.输出过滤public static String encode(String data) { final StringBuffer buf = new StringBuffer(); final char[] chars = data.toCharArray(); for (int i = 0; i chars.length; i++) { buf.append("" + (int) chars[i]); } return buf.toString(); } public static String decodeHex(final String data, final String charEncoding) { if (data == null) { return null; } byte[] inBytes = null; try { inBytes = data.getBytes(charEncoding); } catch (UnsupportedEncodingException e) { //use default charset inBytes = data.getBytes(); }byte[] outBytes = new byte[inBytes.length]; int b1; int b2; int j=0; for (int i = 0; i inBytes.length; i++) { if (inBytes[i] == '%') { b1 = Character.digit((char) inBytes[++i], 16); b2 = Character.digit((char) inBytes[++i], 16); outBytes[j++] = (byte) (((b1 0xf) 4) + (b2 0xf)); } else { outBytes[j++] = inBytes[i]; } }String encodedStr = null; try { encodedStr = new String(outBytes, 0, j, charEncoding); } catch (UnsupportedEncodingException e) { encodedStr = new String(outBytes, 0, j); } return encodedStr; } !-- Maps the 404 Not Found response code to the error page /errPage404 --error-page error-code404/error-code location/errPage404/location /error-page!-- Maps any thrown ServletExceptions to the error page /errPageServ -- error-page exception-typejavax.servlet.ServletException/exception-type location/errPageServ/location /error-page!-- Maps any other thrown exceptions to a generic error page /errPageGeneric -- error-page exception-typejava.lang.Throwable/exception-type location/errPageGeneric/location /error-page 任何的非servlet例外都被/errPageGeneric路径捕捉,这样就可以处理。 Throwable throwable = (Throwable) request.getAttribute("javax.servlet.error.exception"); String status_code = ((Integer) request.getAttribute("javax.servlet.error.status_code")).toString( );3.安装三方的应用防火墙,可以拦截css攻击。附:跨站脚本不像其他攻击只包含两个部分:攻击者和web站点。 跨站脚本包含三个部分:攻击者,客户和web站点。 跨站脚本攻击的目的是窃取客户的cookies,或者其他可以证明用户身份的敏感信息。攻击 一个get请求 GET /welcome.cgi?name=Joe%20Hacker HTTP/1.0 Host:会产生如下的结果 HTML TitleWelcome!/Title Hi Joe Hacker BR Welcome to our system ... /HTML 但是如果请求被篡改 GET /welcome.cgi?name=scriptalert(document.cookie)/script HTTP/1.0 Host: 就会得到如下的响应 HTML TitleWelcome!/Title Hi scriptalert(document.cookie)/script BR Welcome to our system ... /HTML 这样在客户端会有一段非法的脚本执行,这不具有破坏作用,但是如下的脚本就很危险了。 ;scriptwindow.open(“”%2Bdocument.cookie)/script 响应如下: HTML TitleWelcome!/Title Hi scriptwindow.open(“”+document.cookie)/script BR Welcome to our system ... /HTML 浏览器回执行该脚本并将客户的cookie发到一个攻击者的网站,这样攻击者就得到了客户的cookie。

像网易这种网站他是怎样避免被黑客攻击的?

除了自身的硬件条件外,还需要对你的服务器做出安全设置控制,用2003系统来说下具体安全设置如下:

1、服务器安全设置之--硬盘权限篇

这里着重谈需要的权限,也就是最终文件夹或硬盘需要的权限,可以防御各种木马入侵,提权攻击,跨站攻击等。本实例经过多次试验,安全性能很好,服务器基本没有被木马威胁的担忧了。

硬盘或文件夹: C:\ D:\ E:\ F:\ 类推

主要权限部分:

Administrators 完全控制 无

该文件夹,子文件夹及文件

不是继承的

CREATOR OWNER 完全控制

只有子文件夹及文件

不是继承的

SYSTEM 完全控制

该文件夹,子文件夹及文件

不是继承的

其他权限部分:

如果安装了其他运行环境,比如PHP等,则根据PHP的环境功能要求来设置硬盘权限,一般是安装目录加上users读取运行权限就足够了,比如c:\php的话,就在根目录权限继承的情况下加上users读取运行权限,需要写入数据的比如tmp文件夹,则把users的写删权限加上,运行权限不要,然后把虚拟主机用户的读权限拒绝即可。如果是mysql的话,用一个独立用户运行MYSQL会更安全,下面会有介绍。如果是winwebmail,则最好建立独立的应用程序池和独立IIS用户,然后整个安装目录有users用户的读/运行/写/权限,IIS用户则相同,这个IIS用户就只用在winwebmail的WEB访问中,其他IIS站点切勿使用

硬盘设置需要根据你的实际需要来设置权限!

2、服务器安全设置之--系统服务篇(设置完毕需要重新启动)

*除非特殊情况非开不可,下列系统服务要停止并禁用:

1、Alerter 2、Application Layer Gateway Service 3、

Background Intelligent Transfer Service

4、Computer Browser 5、Distributed File System 6、Help and Support 7、Messenger 8、NetMeeting Remote Desktop Sharing 9、Print Spooler 10、Remote Registry 11、Task Scheduler 12、TCP/IP NetBIOS Helper 13、Telnet 14、Workstation 以上是windows2003server标准服务当中需要停止的服务,作为IIS网络服务器,以上服务务必要停止,如果需要SSL证书服务,则设置方法不同。如果你装有虚拟主机系统,设置当然也不一样!更详细设置可以根据自己的需要找更详细的参考资料。

3、服务器安全设置之--组件安全设置篇 (非常重要!!!)

A、卸载WScript.Shell 和 Shell.application 组件,将下面的代码保存为一个.BAT文件执行(分2000和2003系统)

win2000

regsvr32/u C:\WINNT\System32\wshom.ocx

del C:\WINNT\System32\wshom.ocx

regsvr32/u C:\WINNT\system32\shell32.dll

del C:\WINNT\system32\shell32.dll

win2003

regsvr32/u C:\WINDOWS\System32\wshom.ocx

del C:\WINDOWS\System32\wshom.ocx

regsvr32/u C:\WINDOWS\system32\shell32.dll

del C:\WINDOWS\system32\shell32.dll

B、改名不安全组件,需要注意的是组件的名称和Clsid都要改,并且要改彻底了,不要照抄,要自己改

【开始→运行→regedit→回车】打开注册表编辑器

然后【编辑→查找→填写Shell.application→查找下一个】

用这个方法能找到两个注册表项:

{13709620-C279-11CE-A49E-444553540000} 和 Shell.application 。

第一步:为了确保万无一失,把这两个注册表项导出来,保存为xxxx.reg 文件。

第二步:比如我们想做这样的更改

13709620-C279-11CE-A49E-444553540000 改名为 13709620-C279-11CE-A49E-444553540001

Shell.application 改名为 Shell.application_nohack

第三步:那么,就把刚才导出的.reg文件里的内容按上面的对应关系替换掉,然后把修改好的.reg文件导入到注册表中(双击即可),导入了改名后的注册表项之后,别忘记了删除原有的那两个项目。这里需要注意一点,Clsid中只能是十个数字和ABCDEF六个字母。

其实,只要把对应注册表项导出来备份,然后直接改键名就可以了。

WScript.Shell 和 Shell.application 组件是 脚本入侵过程中,提升权限的重要环节,这两个组件的卸载和修改对应注册键名,可以很大程度的提高虚拟主机的脚本安全性能,一般来说,ASP和php类脚本提升权限的功能是无法实现了,再加上一些系统服务、硬盘访问权限、端口过滤、本地安全策略的设置,虚拟主机因该说,安全性能有非常大的提高,黑客入侵的可能性是非常低了。注销了Shell组件之后,侵入者运行提升工具的可能性就很小了,但是prel等别的脚本语言也有shell能力,为防万一,还是设置一下为好。下面是另外一种设置,大同小异。

一、禁止使用FileSystemObject组件

FileSystemObject可以对文件进行常规操作,可以通过修改注册表,将此组件改名,来防止此类木马的危害。

HKEY_CLASSES_ROOT\Scripting.FileSystemObject\

改名为其它的名字,如:改为 FileSystemObject_ChangeName

自己以后调用的时候使用这个就可以正常调用此组件了

也要将clsid值也改一下

HKEY_CLASSES_ROOT\Scripting.FileSystemObject\CLSID\项目的值

也可以将其删除,来防止此类木马的危害。

2000注销此组件命令:RegSrv32 /u C:\WINNT\SYSTEM\scrrun.dll

2003注销此组件命令:RegSrv32 /u C:\WINDOWS\SYSTEM\scrrun.dll

如何禁止Guest用户使用scrrun.dll来防止调用此组件?

使用这个命令:cacls C:\WINNT\system32\scrrun.dll /e /d guests

二、禁止使用WScript.Shell组件

WScript.Shell可以调用系统内核运行DOS基本命令

可以通过修改注册表,将此组件改名,来防止此类木马的危害。

HKEY_CLASSES_ROOT\WScript.Shell\及HKEY_CLASSES_ROOT\WScript.Shell.1\

改名为其它的名字,如:改为WScript.Shell_ChangeName 或 WScript.Shell.1_ChangeName

自己以后调用的时候使用这个就可以正常调用此组件了

也要将clsid值也改一下

HKEY_CLASSES_ROOT\WScript.Shell\CLSID\项目的值

HKEY_CLASSES_ROOT\WScript.Shell.1\CLSID\项目的值

也可以将其删除,来防止此类木马的危害。

三、禁止使用Shell.Application组件

Shell.Application可以调用系统内核运行DOS基本命令

可以通过修改注册表,将此组件改名,来防止此类木马的危害。

HKEY_CLASSES_ROOT\Shell.Application\

HKEY_CLASSES_ROOT\Shell.Application.1\

改名为其它的名字,如:改为Shell.Application_ChangeName 或 Shell.Application.1_ChangeName

自己以后调用的时候使用这个就可以正常调用此组件了

也要将clsid值也改一下

HKEY_CLASSES_ROOT\Shell.Application\CLSID\项目的值

HKEY_CLASSES_ROOT\Shell.Application\CLSID\项目的值

也可以将其删除,来防止此类木马的危害。

禁止Guest用户使用shell32.dll来防止调用此组件。

2000使用命令:cacls C:\WINNT\system32\shell32.dll /e /d guests

2003使用命令:cacls C:\WINDOWS\system32\shell32.dll /e /d guests

注:操作均需要重新启动WEB服务后才会生效。

四、调用Cmd.exe

禁用Guests组用户调用cmd.exe

2000使用命令:cacls C:\WINNT\system32\Cmd.exe /e /d guests

2003使用命令:cacls C:\WINDOWS\system32\Cmd.exe /e /d guests

通过以上四步的设置基本可以防范目前比较流行的几种木马,但最有效的办法还是通过综合安全设置,将服务器、程序安全都达到一定标准,才可能将安全等级设置较高,防范更多非法入侵。

C、防止Serv-U权限提升 (适用于 Serv-U6.0 以前版本,之后可以直接设置密码)

先停掉Serv-U服务

用Ultraedit打开ServUDaemon.exe

查找 Ascii:LocalAdministrator 和 #l@$ak#.lk;0@P

修改成等长度的其它字符就可以了,ServUAdmin.exe也一样处理。

另外注意设置Serv-U所在的文件夹的权限,不要让IIS匿名用户有读取的权限,否则人家下走你修改过的文件,照样可以分析出你的管理员名和密码。

4、服务器安全设置之--IIS用户设置方法

不同站点使用不用的IIS用户。另外权限的设置要细致。

5、服务器安全设置之--服务器安全和性能配置

把下面文本保存为: windows2000-2003服务器安全和性能注册表自动配置文件.reg 运行即可。[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer]

"NoRecentDocsMenu"=hex:01,00,00,00

"NoRecentDocsHistory"=hex:01,00,00,00

[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon]

"DontDisplayLastUserName"="1"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa]

"restrictanonymous"=dword:00000001

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\Parameters]

"AutoShareServer"=dword:00000000

"AutoShareWks"=dword:00000000

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]

"EnableICMPRedirect"=dword:00000000

"KeepAliveTime"=dword:000927c0

"SynAttackProtect"=dword:00000002

"TcpMaxHalfOpen"=dword:000001f4

"TcpMaxHalfOpenRetried"=dword:00000190

"TcpMaxConnectResponseRetransmissions"=dword:00000001

"TcpMaxDataRetransmissions"=dword:00000003

"TCPMaxPortsExhausted"=dword:00000005

"DisableIPSourceRouting"=dword:00000002

"TcpTimedWaitDelay"=dword:0000001e

"TcpNumConnections"=dword:00004e20

"EnablePMTUDiscovery"=dword:00000000

"NoNameReleaseOnDemand"=dword:00000001

"EnableDeadGWDetect"=dword:00000000

"PerformRouterDiscovery"=dword:00000000

"EnableICMPRedirects"=dword:00000000

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NetBT\Parameters]

"BacklogIncrement"=dword:00000005

"MaxConnBackLog"=dword:000007d0

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\AFD\Parameters]

"EnableDynamicBacklog"=dword:00000001

"MinimumDynamicBacklog"=dword:00000014

"MaximumDynamicBacklog"=dword:00007530

"DynamicBacklogGrowthDelta"=dword:0000000a

功能:可抵御DDOS攻击2-3万包,提高服务器TCP-IP整体安全性能(效果等于软件防火墙,节约了系统资源)

6、服务器安全设置之--IP安全策略 (仅仅列出需要屏蔽或阻止的端口或协议)

协议 IP协议端口 源地址 目标地址 描述 方式

ICMP -- -- -- ICMP 阻止

UDP 135 任何IP地址 我的IP地址 135-UDP 阻止

UDP 136 任何IP地址 我的IP地址 136-UDP 阻止

UDP 137 任何IP地址 我的IP地址 137-UDP 阻止

UDP 138 任何IP地址 我的IP地址 138-UDP 阻止

UDP 139 任何IP地址 我的IP地址 139-UDP 阻止

TCP 445 任何IP地址-从任意端口 我的IP地址-445 445-TCP 阻止

UDP 445 任何IP地址-从任意端口 我的IP地址-445 445-UDP 阻止

UDP 69 任何IP地址-从任意端口 我的IP地址-69 69-入 阻止

UDP 69 我的IP地址-69 任何IP地址-任意端口 69-出 阻止

TCP 4444 任何IP地址-从任意端口 我的IP地址-4444 4444-TCP 阻止

TCP 1026 我的IP地址-1026 任何IP地址-任意端口 灰鸽子-1026 阻止

TCP 1027 我的IP地址-1027 任何IP地址-任意端口 灰鸽子-1027 阻止

TCP 1028 我的IP地址-1028 任何IP地址-任意端口 灰鸽子-1028 阻止

UDP 1026 我的IP地址-1026 任何IP地址-任意端口 灰鸽子-1026 阻止

UDP 1027 我的IP地址-1027 任何IP地址-任意端口 灰鸽子-1027 阻止

UDP 1028 我的IP地址-1028 任何IP地址-任意端口 灰鸽子-1028 阻止

TCP 21 我的IP地址-从任意端口 任何IP地址-到21端口 阻止tftp出站 阻止

TCP 99 我的IP地址-99 任何IP地址-任意端口 阻止99shell 阻止

以上是IP安全策略里的设置,可以根据实际情况,增加或删除端口

7、服务器安全设置之--本地安全策略设置

安全策略自动更新命令:GPUpdate /force (应用组策略自动生效不需重新启动)

开始菜单—管理工具—本地安全策略

A、本地策略——审核策略

审核策略更改 成功 失败

审核登录事件 成功 失败

审核对象访问 失败

审核过程跟踪 无审核

审核目录服务访问 失败

审核特权使用 失败

审核系统事件 成功 失败

审核账户登录事件 成功 失败

审核账户管理 成功 失败

B、本地策略——用户权限分配

关闭系统:只有Administrators组、其它全部删除。

通过终端服务拒绝登陆:加入Guests、User组

通过终端服务允许登陆:只加入Administrators组,其他全部删除

C、本地策略——安全选项

交互式登陆:不显示上次的用户名 启用

网络访问:不允许SAM帐户和共享的匿名枚举 启用

网络访问:不允许为网络身份验证储存凭证 启用

网络访问:可匿名访问的共享 全部删除

网络访问:可匿名访问的命 全部删除

网络访问:可远程访问的注册表路径 全部删除

网络访问:可远程访问的注册表路径和子路径 全部删除

帐户:重命名来宾帐户 重命名一个帐户

帐户:重命名系统管理员帐户 重命名一个帐户

还有很多设置!你可以多找找资料!

防止跨站攻击——CSRFToken

CSRF:无法获取受害者的cookie,无法看到cookie;

只是利用受害者是被服务器信任的(靠验证cookie),而给服务器发送请求;

怎么防止跨站攻击:

表单:在 Form 表单中添加一个隐藏的的字段,值是 csrf_token。

非表单:在ajax获取数据时,添加headers:{ 'X-CSRFToken':getCookie('csrf_token') }。

原理:在浏览器访问网站A时,网站A设置cookie会增加随机值csrf_token,这个值是随机的。返回给浏览器时,cookie会储存在浏览器,同时会把csrf_token传给表单里面的隐藏字段。所以当浏览器用自己的表单时会自带csrf_token,网站A取到这个值和cookie里的csrf_token一致就通过。而网站B里面的表单没有这个值,所以不能通过,这样就阻止了恶意攻击。非表单也是这样的原理。

0条大神的评论

发表评论