资源描述
2、服务器安全设置之--系统服务篇(设置完毕需要重新启动)
*除非特殊情况非开不可,下列系统服务要■停止并禁用■:
Alerter
服务名称:
Alerter
显示名称:
Alerter
服务描述:
通知选定的用户和计算机管理警报。如果服务停止,使用管理警报的程序将不会收到它们。如果此服务被禁用,任何直接依赖它的服务都将不能启动。
可执行文件路径:
E:\WINDOWS\system32\svchost.exe -k LocalService
其他补充:
Application Layer Gateway Service
服务名称:
ALG
显示名称:
Application Layer Gateway Service
服务描述:
为应用程序级协议插件提供支持并启用网络/协议连接。如果此服务被禁用,任何依赖它的服务将无法启动。
可执行文件路径:
E:\WINDOWS\System32\alg.exe
其他补充:
Background Intelligent Transfer Service
服务名称:
BITS
显示名称:
Background Intelligent Transfer Service
服务描述:
服务描述:利用空闲的网络带宽在后台传输文件。如果服务被停用,例如 Windows Update 和 MSN Explorer 的功能将无法自动下载程序和其他信息。如果此服务被禁用,任何依赖它的服务如果没有容错技术以直接通过 IE 传输文件,一旦 BITS 被禁用,就可能无法传输文件。
可执行文件路径:
E:\WINDOWS\system32\svchost.exe -k netsvcs
其他补充:
Computer Browser
服务名称:
服务名称:Browser
显示名称:
显示名称:Computer Browser
服务描述:
服务描述:维护网络上计算机的更新列表,并将列表提供给计算机指定浏览。如果服务停止,列表不会被更新或维护。如果服务被禁用,任何直接依赖于此服务的服务将无法启动。
可执行文件路径:
可执行文件路径: E:\WINDOWS\system32\svchost.exe -k netsvcs
其他补充:
Distributed File System
服务名称:
Dfs
显示名称:
Distributed File System
服务描述:
将分散的文件共享合并成一个逻辑名称空间并在局域网或广域网上管理这些逻辑卷。如果这个服务被停止,用户则无法访问文件共享。如果这个服务被禁用,任何依赖它的服务将无法启动。
可执行文件路径:
E:\WINDOWS\system32\Dfssvc.exe
其他补充:
Help and Support
服务名称:
helpsvc
显示名称:
Help and Support
服务描述:
启用在此计算机上运行帮助和支持中心。如果停止服务,帮助和支持中心将不可用。如果禁用服务,任何直接依赖于此服务的服务将无法启动。
可执行文件路径:
E:\WINDOWS\System32\svchost.exe -k netsvcs
其他补充:
Messenger
服务名称:
Messenger
显示名称:
Messenger
服务描述:
传输客户端和服务器之间的 NET SEND 和 警报器服务消息。此服务与 Windows Messenger 无关。如果服务停止,警报器消息不会被传输。如果服务被禁用,任何直接依赖于此服务的服务将无法启动。
可执行文件路径:
E:\WINDOWS\system32\svchost.exe -k netsvcs
其他补充:
NetMeeting Remote Desktop Sharing
服务名称:
mnmsrvc
显示名称:
NetMeeting Remote Desktop Sharing
服务描述:
允许经过授权的用户用 NetMeeting 在公司 intranet 上远程访问这台计算机。如果服务被停止,远程桌面共享将不可用。如果服务被禁用,依赖这个服务的任何服务都会无法启动。
可执行文件路径:
E:\WINDOWS\system32\mnmsrvc.exe
其他补充:
Print Spooler
服务名称:
Spooler
显示名称:
Print Spooler
服务描述:
管理所有本地和网络打印队列及控制所有打印工作。如果此服务被停用,本地计算机上的打印将不可用。如果此服务被禁用,任何依赖于它的服务将无法启用。
可执行文件路径:
E:\WINDOWS\system32\spoolsv.exe
其他补充:
Remote Registry
服务名称:
RemoteRegistry
显示名称:
Remote Registry
服务描述:
使远程用户能修改此计算机上的注册表设置。如果此服务被终止,只有此计算机上的用户才能修改注册表。如果此服务被禁用,任何依赖它的服务将无法启动。
可执行文件路径:
E:\WINDOWS\system32\svchost.exe -k regsvc
其他补充:
Task Scheduler
服务名称:
Schedule
显示名称:
Task Scheduler
服务描述:
使用户能在此计算机上配置和计划自动任务。如果此服务被终止,这些任务将无法在计划时间里运行。如果此服务被禁用,任何依赖它的服务将无法启动。
可执行文件路径:
E:\WINDOWS\System32\svchost.exe -k netsvcs
其他补充:
TCP/IP NetBIOS Helper
服务名称:
LmHosts
显示名称:
TCP/IP NetBIOS Helper
服务描述:
提供 TCP/IP (NetBT) 服务上的 NetBIOS 和网络上客户端的 NetBIOS 名称解析的支持,从而使用户能够共享文件、打印和登录到网络。如果此服务被停用,这些功能可能不可用。如果此服务被禁用,任何依赖它的服务将无法启动。
可执行文件路径:
E:\WINDOWS\system32\svchost.exe -k LocalService
其他补充:
Telnet
服务名称:
TlntSvr
显示名称:
Telnet
服务描述:
允许远程用户登录到此计算机并运行程序,并支持多种 TCP/IP Telnet 客户端,包括基于 UNIX 和 Windows 的计算机。如果此服务停止,远程用户就不能访问程序,任何直接依赖于它的服务将会启动失败。
可执行文件路径:
E:\WINDOWS\system32\tlntsvr.exe
其他补充:
Workstation
服务名称:
lanmanworkstation
显示名称:
Workstation
服务描述:
创建和维护到远程服务的客户端网络连接。如果服务停止,这些连接将不可用。如果服务被禁用,任何直接依赖于此服务的服务将无法启动。
可执行文件路径:
E:\WINDOWS\system32\svchost.exe -k netsvcs
其他补充:
以上是windows2003server标准服务当中需要停止的服务,作为IIS网络服务器,以上服务务必要停止,如果需要SSL证书服务,则设置方法不同
3、服务器安全设置之--组件安全设置篇 (非常重要!!!)
A、卸载WScript.Shell 和 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\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六个字母。
其实,只要把对应注册表项导出来备份,然后直接改键名就可以了,
改好的例子
建议自己改
应该可一次成功
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\\system32\\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-C279-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-11CE-A49E-444553540001}"[HKEY_CLASSES_ROOT\Shell.Application_nohack\CurVer]@="Shell.Application_nohack.1"
老杜评论:
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匿名用户有读取的权限,否则人家下走你修改过的文件,照样可以分析出你的管理员名和密码。
阿江ASP探针
4、服务器安全设置之--IIS用户设置方法
IIS安全访问的例子
IIS基本设置
这里举例4个不同类型脚本的虚拟主机 权限设置例子
主机头
主机脚本
硬盘目录
IIS用户名
硬盘权限
应用程序池
主目录
应用程序配置
HTM
D:\\
IUSR_
Administrators(完全控制)
IUSR_(读)
可共用
读取/纯脚本
启用父路径
ASP
D:\\
IUSR_
Administrators(完全控制)
IUSR_(读/写)
可共用
读取/纯脚本
启用父路径
NET
D:\\
IUSR_
Administrators(完全控制)
IWAM_(读/写)
IUSR_(读/写)
独立池
读取/纯脚本
启用父路径
PHP
D:\\
IUSR_
Administrators(完全控制)
IWAM_(读/写)
IUSR_(读/写)
独立池
读取/纯脚本
启用父路径
其中 IWAM_ 和 IWAM_ 分别是各自独立应用程序池标识中的启动帐户
主机脚本类型
应用程序扩展名 (就是文件后缀名)对应主机脚本,只需要加载以下的应用程序扩展
HTM
STM | 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
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\Microsoft.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\Framework\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\v1.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\aspnet_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
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
GET,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.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%)
进程帐户
完全控制
.NET Framework 目录%windir%\Microsoft.NET\Framework\{版本}
进程帐户和模拟标识:
读取和执行
列出文件夹内容
读取
.NET Framework 配置目录%windir%\Microsoft.NET\Framework\{版本}\CONFIG
进程帐户和模拟标识:
读取和执行
列出文件夹内容
读取
网站根目录
C:\inetpub\wwwroot
或默认网站指向的路径
进程帐户:
读取
系统根目录
%windir%\system32
进程帐户:
读取
全局程序集高速缓存
%windir%\assembly
进程帐户和模拟标识:
读取
内容目录
C:\inetpub\wwwroot\YourWebApp
(一般来说不用默认目录,管理员可根据实际情况调整比如D:\wwwroot)
进程帐户:
读取和执行
列出文件夹内容
读取
注意 对于 .NET Framework 1.0,直到文件系统根目录的所有父目录也都需要上述权限。父目录包括:
C:\
C:\inetpub\
C:\inetpub\wwwroot\
6楼
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安全策略里的设置,可以根据实际情况,增加或删除端口
举报 返回顶部
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,我们最主要就是要配置php.ini中的内容,让我们执行 php能够更安全。整个PHP中的安全设置主要是为了防止phpshell和SQL Injection的攻击,一下我们慢慢探讨。我们先使用任何编辑工具打开 /etc/local/apache2/conf/php.ini,如果你是采用其他方式安装,配置文件可能不在该目录。
(1) 打开php的安全模式
php的安全模式是个非常重要的内嵌的安全机制,能够控制一些php中的函数,比如system(),
同时把很多文件操作函数进行了权限控制,也不允许对某些关键文件的文件,比如/etc/passwd,
但是默认的php.ini是没有打开安全模式的,我们把它打开:
safe_mode = on
(2) 用户组安全
当safe_mode打开时,safe_mode_gid被关闭,那么php脚本能够对文件进行访问,而且相同
组的用户也能够对文件进行访问。
建议设置为:
safe_mode_gid = off
如果不进行设置,可能我们无法对我们服务器网站目录下的文件进行操作了,比如我们需要
对文件进行操作的时候。
(3) 安全模式下执行程序主目录
如果安全模式打开了,但是却是要执行某些程序的时候,可以指定要执行程序的主目录:
safe_mode_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/include/
其实一般php脚本中包含文件都是在程序自己已经写好了,这个可以根据具体需要设置。
(5) 控制php脚本能访问的目录
使用open_basedir选项能够控制PHP脚本只能访问指定的目录,这样能够避免PHP脚本访问
不应该访问的文件,一定程度上限制了phpshell的危害,我们一般可以设置为只能访问网站目录:
open_basedir = D:/usr/www
(6) 关闭危险函数
如果打开了安全模式,那么函数禁止是可以不需要的,但是我们为了安全还是考虑进去。比如,
我们觉得不希望执行包括system()等在那的能够执行命令的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,fputs,fwrite,chgrp,chmod,chown
以上只是列了部分不叫常用的文件处理函数,你也可以把上面执行命令函数和这个函数结合,
就能够抵制大部分的phpshell了。
(7) 关闭PHP版本信息在http头中的泄漏
我们为了防止黑客获取服务器中php版本的信息,可以关闭该信息斜路在http头中:
expose_php = Off
比如黑客在 telnet 80 的时候,那么将无法看到PHP的信息。
(8) 关闭注册全局变量
在PHP中提交的变量,包括使用POST或者GET提交的变量,都将自动注册为全局变量,能够直接访问,
这是对服务器非常不安全的,所以我们不能让它注册为全局变量,就把注册全局变量选项关闭:
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在没有连接到数据库或者其他情况下会有提示错
展开阅读全文