1、2、服务器安全设置之--系统服务篇(设置完毕需要重新启动) *除非特殊情况非开不可,下列系统服务要■停止并禁用■: Alerter 服务名称: Alerter 显示名称: Alerter 服务描述: 通知选定的用户和计算机管理警报。如果服务停止,使用管理警报的程序将不会收到它们。如果此服务被禁用,任何直接依赖它的服务都将不能启动。 可执行文件路径: E:\WINDOWS\system32\svchost.exe -k LocalService 其他补充: Application Layer Gateway Service 服务名称: ALG
2、 显示名称: Application Layer Gateway Service 服务描述: 为应用程序级协议插件提供支持并启用网络/协议连接。如果此服务被禁用,任何依赖它的服务将无法启动。 可执行文件路径: E:\WINDOWS\System32\alg.exe 其他补充: Background Intelligent Transfer Service 服务名称: BITS 显示名称: Background Intelligent Transfer Service 服务描述: 服务描述:利用空闲的网络带宽在后台传输文件。如果服务被停用,例如 Window
3、s Update 和 MSN Explorer 的功能将无法自动下载程序和其他信息。如果此服务被禁用,任何依赖它的服务如果没有容错技术以直接通过 IE 传输文件,一旦 BITS 被禁用,就可能无法传输文件。 可执行文件路径: E:\WINDOWS\system32\svchost.exe -k netsvcs 其他补充: Computer Browser 服务名称: 服务名称:Browser 显示名称: 显示名称:Computer Browser 服务描述: 服务描述:维护网络上计算机的更新列表,并将列表提供给计算机指定浏览。如果服务停止,列表不会被更新或维护。
4、如果服务被禁用,任何直接依赖于此服务的服务将无法启动。 可执行文件路径: 可执行文件路径: E:\WINDOWS\system32\svchost.exe -k netsvcs 其他补充: Distributed File System 服务名称: Dfs 显示名称: Distributed File System 服务描述: 将分散的文件共享合并成一个逻辑名称空间并在局域网或广域网上管理这些逻辑卷。如果这个服务被停止,用户则无法访问文件共享。如果这个服务被禁用,任何依赖它的服务将无法启动。 可执行文件路径: E:\WINDOWS\system32\Dfss
5、vc.exe 其他补充: Help and Support 服务名称: helpsvc 显示名称: Help and Support 服务描述: 启用在此计算机上运行帮助和支持中心。如果停止服务,帮助和支持中心将不可用。如果禁用服务,任何直接依赖于此服务的服务将无法启动。 可执行文件路径: E:\WINDOWS\System32\svchost.exe -k netsvcs 其他补充: Messenger 服务名称: Messenger 显示名称: Messenger 服务描述: 传输客户端和服务器之间的 NET SEND 和 警报器
6、服务消息。此服务与 Windows Messenger 无关。如果服务停止,警报器消息不会被传输。如果服务被禁用,任何直接依赖于此服务的服务将无法启动。 可执行文件路径: E:\WINDOWS\system32\svchost.exe -k netsvcs 其他补充: NetMeeting Remote Desktop Sharing 服务名称: mnmsrvc 显示名称: NetMeeting Remote Desktop Sharing 服务描述: 允许经过授权的用户用 NetMeeting 在公司 intranet 上远程访问这台计算机。如果服务被停止,远
7、程桌面共享将不可用。如果服务被禁用,依赖这个服务的任何服务都会无法启动。 可执行文件路径: E:\WINDOWS\system32\mnmsrvc.exe 其他补充: Print Spooler 服务名称: Spooler 显示名称: Print Spooler 服务描述: 管理所有本地和网络打印队列及控制所有打印工作。如果此服务被停用,本地计算机上的打印将不可用。如果此服务被禁用,任何依赖于它的服务将无法启用。 可执行文件路径: E:\WINDOWS\system32\spoolsv.exe 其他补充: Remote Registry 服
8、务名称: RemoteRegistry 显示名称: Remote Registry 服务描述: 使远程用户能修改此计算机上的注册表设置。如果此服务被终止,只有此计算机上的用户才能修改注册表。如果此服务被禁用,任何依赖它的服务将无法启动。 可执行文件路径: E:\WINDOWS\system32\svchost.exe -k regsvc 其他补充: Task Scheduler 服务名称: Schedule 显示名称: Task Scheduler 服务描述: 使用户能在此计算机上配置和计划自动任务。如果此服务被终止,这些任务将无法在计划时间里运行。如
9、果此服务被禁用,任何依赖它的服务将无法启动。 可执行文件路径: E:\WINDOWS\System32\svchost.exe -k netsvcs 其他补充: TCP/IP NetBIOS Helper 服务名称: LmHosts 显示名称: TCP/IP NetBIOS Helper 服务描述: 提供 TCP/IP (NetBT) 服务上的 NetBIOS 和网络上客户端的 NetBIOS 名称解析的支持,从而使用户能够共享文件、打印和登录到网络。如果此服务被停用,这些功能可能不可用。如果此服务被禁用,任何依赖它的服务将无法启动。 可执行文件路径: E:
10、\WINDOWS\system32\svchost.exe -k LocalService 其他补充: Telnet 服务名称: TlntSvr 显示名称: Telnet 服务描述: 允许远程用户登录到此计算机并运行程序,并支持多种 TCP/IP Telnet 客户端,包括基于 UNIX 和 Windows 的计算机。如果此服务停止,远程用户就不能访问程序,任何直接依赖于它的服务将会启动失败。 可执行文件路径: E:\WINDOWS\system32\tlntsvr.exe 其他补充: Workstation 服务名称: lanmanwork
11、station 显示名称: Workstation 服务描述: 创建和维护到远程服务的客户端网络连接。如果服务停止,这些连接将不可用。如果服务被禁用,任何直接依赖于此服务的服务将无法启动。 可执行文件路径: E:\WINDOWS\system32\svchost.exe -k netsvcs 其他补充: 以上是windows2003server标准服务当中需要停止的服务,作为IIS网络服务器,以上服务务必要停止,如果需要SSL证书服务,则设置方法不同 3、服务器安全设置之--组件安全设置篇 (非常重要!!!) A、卸载WScript.Shell 和
12、 Shell.application 组件,将下面的代码保存为一个.BAT文件执行(分2000和2003系统) windows2000.bat regsvr32/u C:\WINNT\System32\wshom.ocxdel C:\WINNT\System32\wshom.ocxregsvr32/u C:\WINNT\system32\shell32.dlldel C:\WINNT\system32\shell32.dll windows2003.bat regsvr32/u C:\WINDOWS\System32\wshom.ocx del C:\WINDOWS\System32\
13、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 。 第一步:
14、为了确保万无一失,把这两个注册表项导出来,保存为xxxx.reg 文件。 第二步:比如我们想做这样的更改 13709620-C279-11CE-A49E-444553540000 改名为 13709620-C279-11CE-A49E-444553540001 Shell.application 改名为 Shell.application_nohack 第三步:那么,就把刚才导出的.reg文件里的内容按上面的对应关系替换掉,然后把修改好的.reg文件导入到注册表中(双击即可),导入了改名后的注册表项之后,别忘记了删除原有的那两个项目。这里需要注意一点,Clsid中只能是
15、十个数字和ABCDEF六个字母。 其实,只要把对应注册表项导出来备份,然后直接改键名就可以了, 改好的例子 建议自己改 应该可一次成功 Windows Registry Editor Version 5.00[HKEY_CLASSES_ROOT\CLSID\{13709620-C279-11CE-A49E-444553540001}]@="Shell Automation Service"[HKEY_CLASSES_ROOT\CLSID\{13709620-C279-11CE-A49E-444553540001}\InProcServer32]@="C:\\WINNT\\sys
16、tem32\\shell32.dll""ThreadingModel"="Apartment"[HKEY_CLASSES_ROOT\CLSID\{13709620-C279-11CE-A49E-444553540001}\ProgID]@="Shell.Application_nohack.1"[HKEY_CLASSES_ROOT\CLSID\{13709620-C279-11CE-A49E-444553540001}\TypeLib]@="{50a7e9b0-70ef-11d1-b75a-00a0c90564fe}"[HKEY_CLASSES_ROOT\CLSID\{13709620-C27
17、9-11CE-A49E-444553540001}\Version]@="1.1"[HKEY_CLASSES_ROOT\CLSID\{13709620-C279-11CE-A49E-444553540001}\VersionIndependentProgID]@="Shell.Application_nohack"[HKEY_CLASSES_ROOT\Shell.Application_nohack]@="Shell Automation Service"[HKEY_CLASSES_ROOT\Shell.Application_nohack\CLSID]@="{13709620-C279-11
18、CE-A49E-444553540001}"[HKEY_CLASSES_ROOT\Shell.Application_nohack\CurVer]@="Shell.Application_nohack.1" 老杜评论: WScript.Shell 和 Shell.application 组件是 脚本入侵过程中,提升权限的重要环节,这两个组件的卸载和修改对应注册键名,可以很大程度的提高虚拟主机的脚本安全性能,一般来说,ASP和php类脚本提升权限的功能是无法实现了,再加上一些系统服务、硬盘访问权限、端口过滤、本地安全策略的设置,虚拟主机因该说,安全性能有非常大的提高,黑客入侵的可能性是非常低
19、了。注销了Shell组件之后,侵入者运行提升工具的可能性就很小了,但是prel等别的脚本语言也有shell能力,为防万一,还是设置一下为好。下面是另外一种设置,大同小异。 一、禁止使用FileSystemObject组件 FileSystemObject可以对文件进行常规操作,可以通过修改注册表,将此组件改名,来防止此类木马的危害。 HKEY_CLASSES_ROOT\Scripting.FileSystemObject\ 改名为其它的名字,如:改为 FileSystemObject_ChangeName 自己以后调用的时候使用这个就可以正常调用此组件了
20、 也要将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
21、/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_CLASS
22、ES_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\ 改
23、名为其它的名字,如:改为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:\
24、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 通过以上四步的设置
25、基本可以防范目前比较流行的几种木马,但最有效的办法还是通过综合安全设置,将服务器、程序安全都达到一定标准,才可能将安全等级设置较高,防范更多非法入侵。 C、防止Serv-U权限提升 (适用于 Serv-U6.0 以前版本,之后可以直接设置密码) 先停掉Serv-U服务 用Ultraedit打开ServUDaemon.exe 查找 Ascii:LocalAdministrator 和 #l@$ak#.lk;0@P 修改成等长度的其它字符就可以了,ServUAdmin.exe也一样处理。 另外注意设置Serv-U所在的文件夹的权限,不要让IIS匿名用户有读取的权
26、限,否则人家下走你修改过的文件,照样可以分析出你的管理员名和密码。 阿江ASP探针 4、服务器安全设置之--IIS用户设置方法 IIS安全访问的例子 IIS基本设置 这里举例4个不同类型脚本的虚拟主机 权限设置例子 主机头 主机脚本 硬盘目录 IIS用户名 硬盘权限 应用程序池 主目录 应用程序配置 HTM D:\\ IUSR_ Administrators(完全控制) IUSR_(读) 可共用 读取/纯脚本 启用父路径 ASP D:\\ IUSR_ Administrators(完全控制) IUS
27、R_(读/写) 可共用 读取/纯脚本 启用父路径 NET D:\\ IUSR_ Administrators(完全控制) IWAM_(读/写) IUSR_(读/写) 独立池 读取/纯脚本 启用父路径 PHP D:\\ IUSR_ Administrators(完全控制) IWAM_(读/写) IUSR_(读/写) 独立池 读取/纯脚本 启用父路径 其中 IWAM_ 和 IWAM_ 分别是各自独立应用程序池标识中的启动帐户 主机脚本类型 应用程序扩展名 (就是文件后缀名)对应主机脚本,只需要加载以下的应用程序扩展 HTM STM
28、 | SHTM | SHTML | MDB ASP ASP | ASA | MDB NET ASPX | ASAX | ASCX| ASHX | ASMX | AXD | VSDISCO | REM | SOAP | CONFIG | CS |CSPROJ | VB | VBPROJ | WEBINFO | LICX | RESX | RESOURCES | MDB PHP PHP | PHP3 | PHP4 MDB是共用映射,下面用红色表示 应用程序扩展 映射文件 执行动作 STM=.stm C:\WINDOWS\system32\inetsrv\ssinc.dll
29、 GET,POST SHTM=.shtm C:\WINDOWS\system32\inetsrv\ssinc.dll GET,POST SHTML=.shtml C:\WINDOWS\system32\inetsrv\ssinc.dll GET,POST ASP=.asp C:\WINDOWS\system32\inetsrv\asp.dll GET,HEAD,POST,TRACE ASA=.asa C:\WINDOWS\system32\inetsrv\asp.dll GET,HEAD,POST,TRACE ASPX=.aspx C:\WINDOWS\Micro
30、soft.NET\Framework\v1.1.4322\aspnet_isapi.dll GET,HEAD,POST,DEBUG ASAX=.asax C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\aspnet_isapi.dll GET,HEAD,POST,DEBUG ASCX=.ascx C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\aspnet_isapi.dll GET,HEAD,POST,DEBUG ASHX=.ashx C:\WINDOWS\Microsoft.NET\Fra
31、mework\v1.1.4322\aspnet_isapi.dll GET,HEAD,POST,DEBUG ASMX=.asmx C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\aspnet_isapi.dll GET,HEAD,POST,DEBUG AXD=.axd C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\aspnet_isapi.dll GET,HEAD,POST,DEBUG VSDISCO=.vsdisco C:\WINDOWS\Microsoft.NET\Framework\v
32、1.1.4322\aspnet_isapi.dll GET,HEAD,POST,DEBUG REM=.rem C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\aspnet_isapi.dll GET,HEAD,POST,DEBUG SOAP=.soap C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\aspnet_isapi.dll GET,HEAD,POST,DEBUG CONFIG=.config C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\a
33、spnet_isapi.dll GET,HEAD,POST,DEBUG CS=.cs C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\aspnet_isapi.dll GET,HEAD,POST,DEBUG CSPROJ=.csproj C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\aspnet_isapi.dll GET,HEAD,POST,DEBUG VB=.vb C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\aspnet_isapi.dll
34、 GET,HEAD,POST,DEBUG VBPROJ=.vbproj C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\aspnet_isapi.dll GET,HEAD,POST,DEBUG WEBINFO=.webinfo C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\aspnet_isapi.dll GET,HEAD,POST,DEBUG LICX=.licx C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\aspnet_isapi.dll G
35、ET,HEAD,POST,DEBUG RESX=.resx C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\aspnet_isapi.dll GET,HEAD,POST,DEBUG RESOURCES=.resources C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\aspnet_isapi.dll GET,HEAD,POST,DEBUG PHP=.php C:\php5\php5isapi.dll GET,HEAD,POST PHP3=.php3 C:\php5\php5isapi.
36、dll GET,HEAD,POST PHP4=.php4 C:\php5\php5isapi.dll GET,HEAD,POST MDB=.mdb C:\WINDOWS\system32\inetsrv\ssinc.dll GET,POST ASP.NET 进程帐户所需的 NTFS 权限 目录 所需权限 Temporary ASP.NET Files%windir%\Microsoft.NET\Framework\{版本}Temporary ASP.NET Files 进程帐户和模拟标识: 完全控制 临时目录 (%temp%) 进程帐户 完全控制
37、 .NET Framework 目录%windir%\Microsoft.NET\Framework\{版本} 进程帐户和模拟标识: 读取和执行 列出文件夹内容 读取 .NET Framework 配置目录%windir%\Microsoft.NET\Framework\{版本}\CONFIG 进程帐户和模拟标识: 读取和执行 列出文件夹内容 读取 网站根目录 C:\inetpub\wwwroot 或默认网站指向的路径 进程帐户: 读取 系统根目录 %windir%\system32 进程帐户: 读取 全局程序集高速
38、缓存 %windir%\assembly 进程帐户和模拟标识: 读取 内容目录 C:\inetpub\wwwroot\YourWebApp (一般来说不用默认目录,管理员可根据实际情况调整比如D:\wwwroot) 进程帐户: 读取和执行 列出文件夹内容 读取 注意 对于 .NET Framework 1.0,直到文件系统根目录的所有父目录也都需要上述权限。父目录包括: C:\ C:\inetpub\ C:\inetpub\wwwroot\ 6楼 6、服务器安全设置之--IP安全策略 (仅仅列出需要屏蔽或阻止的端口或协议)
39、 协议 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
40、 阻止 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
41、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 阻止 以上
42、是IP安全策略里的设置,可以根据实际情况,增加或删除端口 举报 返回顶部 8楼 发表于 2007-6-29 06:37 |只看该作者 8、防御PHP木马攻击的技巧 PHP本身再老版本有一些问题,比如在 php4.3.10和php5.0.3以前有一些比较严重的bug,所以推荐使用新版。另外,目前闹的轰轰烈烈的SQL Injection也是在PHP上有很多利用方式,所以要保证 安全,PHP代码编写是一方面,PHP的配置更是非常关键。 我们php手手工安装的,php的默认配置文件在 /usr/local/apache2/conf/php.ini,我们最
43、主要就是要配置php.ini中的内容,让我们执行 php能够更安全。整个PHP中的安全设置主要是为了防止phpshell和SQL Injection的攻击,一下我们慢慢探讨。我们先使用任何编辑工具打开 /etc/local/apache2/conf/php.ini,如果你是采用其他方式安装,配置文件可能不在该目录。 (1) 打开php的安全模式 php的安全模式是个非常重要的内嵌的安全机制,能够控制一些php中的函数,比如system(), 同时把很多文件操作函数进行了权限控制,也不允许对某些关键文件的文件,比如/etc/passwd, 但是默认的php.ini
44、是没有打开安全模式的,我们把它打开: safe_mode = on (2) 用户组安全 当safe_mode打开时,safe_mode_gid被关闭,那么php脚本能够对文件进行访问,而且相同 组的用户也能够对文件进行访问。 建议设置为: safe_mode_gid = off 如果不进行设置,可能我们无法对我们服务器网站目录下的文件进行操作了,比如我们需要 对文件进行操作的时候。 (3) 安全模式下执行程序主目录 如果安全模式打开了,但是却是要执行某些程序的时候,可以指定要执行程序的主目录: safe_mo
45、de_exec_dir = D:/usr/bin 一般情况下是不需要执行什么程序的,所以推荐不要执行系统程序目录,可以指向一个目录, 然后把需要执行的程序拷贝过去,比如: safe_mode_exec_dir = D:/tmp/cmd 但是,我更推荐不要执行任何程序,那么就可以指向我们网页目录: safe_mode_exec_dir = D:/usr/www (4) 安全模式下包含文件 如果要在安全模式下包含某些公共文件,那么就修改一下选项: safe_mode_include_dir = D:/usr/www/inclu
46、de/ 其实一般php脚本中包含文件都是在程序自己已经写好了,这个可以根据具体需要设置。 (5) 控制php脚本能访问的目录 使用open_basedir选项能够控制PHP脚本只能访问指定的目录,这样能够避免PHP脚本访问 不应该访问的文件,一定程度上限制了phpshell的危害,我们一般可以设置为只能访问网站目录: open_basedir = D:/usr/www (6) 关闭危险函数 如果打开了安全模式,那么函数禁止是可以不需要的,但是我们为了安全还是考虑进去。比如, 我们觉得不希望执行包括system()等在那的能够执行命
47、令的php函数,或者能够查看php信息的 phpinfo()等函数,那么我们就可以禁止它们: disable_functions = system,passthru,exec,shell_exec,popen,phpinfo 如果你要禁止任何文件和目录的操作,那么可以关闭很多文件操作 disable_functions = chdir,chroot,dir,getcwd,opendir,readdir,scandir,fopen,unlink,delete,copy,mkdir, rmdir,rename,file,file_get_contents,f
48、puts,fwrite,chgrp,chmod,chown 以上只是列了部分不叫常用的文件处理函数,你也可以把上面执行命令函数和这个函数结合, 就能够抵制大部分的phpshell了。 (7) 关闭PHP版本信息在http头中的泄漏 我们为了防止黑客获取服务器中php版本的信息,可以关闭该信息斜路在http头中: expose_php = Off 比如黑客在 telnet 80 的时候,那么将无法看到PHP的信息。 (8) 关闭注册全局变量 在PHP中提交的变量,包括使用POST或者GET提交的变量,都将自动注册为全局变量,能
49、够直接访问, 这是对服务器非常不安全的,所以我们不能让它注册为全局变量,就把注册全局变量选项关闭: register_globals = Off 当然,如果这样设置了,那么获取对应变量的时候就要采用合理方式,比如获取GET提交的变量var, 那么就要用$_GET['var']来进行获取,这个php程序员要注意。 (9) 打开magic_quotes_gpc来防止SQL注入 SQL注入是非常危险的问题,小则网站后台被入侵,重则整个服务器沦陷, 所以一定要小心。php.ini中有一个设置: magic_quotes_gpc = Off 这个默认是关闭的,如果它打开后将自动把用户提交对sql的查询进行转换, 比如把 ' 转为 \'等,这对防止sql注射有重大作用。所以我们推荐设置为: magic_quotes_gpc = On (10) 错误信息控制 一般php在没有连接到数据库或者其他情况下会有提示错






