1. 系统安装 (windows 2003启动光盘+ Raid 磁盘和软件驱)
- 系统安装,
- 用户名: jasun 单位:jasun co. SN: JCGMJ-Tc669-KcBg7-HB8X2-FXG7M
- 计算机名称: jasun-ma1 管理员密码: 1234567890
2. 完成系统安装后, 并安装相应的驱动程序(如声卡,网卡等). 并安装好IIS6 开启系统自带防火墙...设置上网的IP等...然后安装SP1并在线升级
- 安装IIS6
- 设置服务器IP
211.155.23.239
网关: 211.155.23.239 DNS: (主)61.144.56.100 (副)211.155.27.88
- windows 2003 补丁打上并在线升级补丁 winrar 5.2安装 五笔输入法安装与设置
- 防火墙设置端口: 80,1433,3306,25,110,3389,21,IPSEC或IP筛选设置(IP筛选要允许TCP的80,1433,3306,25,1103389,21端口嗵 过,其它全禁止)
- 调整虚拟内存…服务器都最高设置成 4096M
- office 2003 安装 WORD+EXCEL+ACCESS
- 安装防火墙和杀毒软件,可使用macfee的杀毒软件和防火墙。
- windows 2003 基本优化设置,
- 在 IIS 6.0 中,默认设置是特别严格和安全的,最大只能传送 204,800 个字节,这样可以最大限度地减少因以前太宽松的超时和限制而造成的攻击。(在 IIS 6.0 之前的版本中无此限制)
在 IIS 6.0 中,修改上传附件大于200k的方法,可以按以下步骤解决(一般用于WEB邮件发送或文件上传):
1、先在服务里关闭 iis admin service 服务。
2、找到 windows\system32\inetsrv\ 下的 metabase.xml 文件。
3、用纯文本方式打开,找到 ASPMaxRequestEntityAllowed 把它修改为需要的值(可修改为10M即:10240000),默认为:204800,即:200K。
4、存盘,然后重启 iis admin service 服务。
在 IIS 6.0 中,无法下载超过4M的附件时,可以按以下步骤解决:
1、先在服务里关闭 iis admin service 服务。
2、找到 windows\system32\inetsrv\ 下的 metabase.xml 文件。
3、用纯文本方式打开,找到 AspBufferingLimit 把它修改为需要的值(可修改为20M即:20480000)。
4、存盘,然后重启 iis admin service 服务。
- 禁用关机事件跟踪
开始 -> 运行 -> gpedit.msc -> Computer configuration -> Administrative Templates -> System -> Display shutdown event tracker -> 设置为 Disable。
如果是中文版,则:开始 -> 运行 -> gpedit.msc->计算机配置 -> 管理模板 -> 系统 -> 显示关机事件跟踪 -> 禁用。
- 禁用开机 CTRL+ALT+DEL和实现自动登陆
管理工具 -> Local Security Settings(本地安全策略) -> 本地策略 -> 安全选项 -> interactive logon: Do not require CTRL+ALT+DEL,启用之。
3.修改终端服务端口(安全)
- 运行regedit,找到[HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Terminal Server \ Wds \ rdpwd \ Tds \ tcp],看到右边的PortNumber了吗?在十进制状态下改成你想要的端口号吧,比如6101之类的,只要不与其它冲突即可。
- 第二处HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Terminal Server \ WinStations \ RDP-Tcp,方法同上,记得改的端口号和上面改的一样就行了。
4.禁止IPC空连接(安全)
hacker可以利用net use命令建立空连接,进而入侵,还有net view,nbtstat这些都是基于空连接的,禁止空连接就好了。打开注册表,找到Local_Machine\System\CurrentControlSet\Control\LSA 下的RestrictAnonymous 把这个值改成”1”即可。
5.更改TTL值(安全)
hacker可以根据ping回的TTL值来大致判断你的操作系统,如:
TTL=107(WINNT);
TTL=108(win2000);
TTL=127或128(win9x);
TTL=240或241(linux);
TTL=252(solaris);
TTL=240(Irix);
修改方法: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters新建一个REG_DWORD值的DefaultTTL 然后输入十进制值就是0-0xff(0-255 十进制,默认值128)改成一个莫名其妙的数字如258,起码让那些小菜鸟晕上半天,就此放弃入侵你也不一定哦
6. 删除默认共享(安全)
有人问过我一开机就共享所有盘,改回来以后,重启又变成了共享是怎么回事,这是2K为管理而设置的默认共享,必须通过修改注册表的方式取消它:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters:新建一个AutoShareServer类型是REG_DWORD把值改为0即可
7.禁用TCP/IP上的NetBIOS
网上邻居-属性-本地连接-属性-Internet协议(TCP/IP)属性-高级-WINS面板-NetBIOS设置-禁用TCP/IP上的NetBIOS。这样hacker就无法用nbtstat命令来读取你的NetBIOS信息和网卡MAC地址了。
8.更改日志文件默认保存目录,将应用程序日志、系统日志、安全日志更改到E:\logfile\event目录[需要修改注册表以更改],调整日志文件大小,将该目录只允许system有写入权限和administrator完全控制权限。
注册表中找到以下三项:HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Eventlog\Security
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Eventlog\Application
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Eventlog\System;
将其中项值Flie的路径更改
9.设置一个伪管理员帐号并将原来的Administrator管理帐号的名称改掉
进入管理工具里的计算机管理, 找到本地用户和组里的用户项目. 这时你会发现有几个帐号…直接在Administrator帐号上重命名,改成你喜欢的名称, 如: Kaitmaster 并设定一个复杂的密码 ,不用担心改掉后会影响服务器的设置,没关系的!一点也不会损坏系统和设置…
然后新建一个Administrator 帐号 然后随便设置一个密码, 下面选择密码永不过期的选项..然后在该帐号上右击点属性,,然后将这个帐号的权限设置成最低就是!,上面的功能应该关的就全关了!
不让系统显示上次登录的用户名
默认情况下,登录对话框中会显示上次登录的用户名。这使得别人可以很容易地得到系统的一些用户名,进而做密码猜测。修改注册表可以不让对话框里显示上次登录的用户名。方法为:打开注册表编辑器并找到注册表项“HKLMSoftware\Microsoft\Windows \TCurrentVersion\Winlogon\Dont-DisplayLastUserName”,把REG_SZ的键值改成1。
10.SQL2000安装+SQL SP4 安装 设定SA密码
11.PHP 5.12+MYSQL4.1.16+Zend 2.62安装
下载: PHP(5.1.2):
http://cn.php.net/get/php-5.1.2-Win32.zip/from/a/mirror
MySQL(4.1.16):
http://www.skycn.com/soft/24418.html
Zend Optimizer(2.6.2):
http://www.zend.com/store/free_download.php?pid=13
phpMyAdmin(2.8.0.3):
http://www.crsky.com/soft/4190.html
- 安装 php 5.1.2
下载解压 php5.1.2 并解压到C盘下的c:\php 文件夹里
然后将php里所有的 dll文件复制到 c:\windows\system32的文件夹里并代替原有的文件
将C:\Windows\php.ini-dist改名为php.ini,然后用记事本打开,利用记事本的查找功能搜索
register_globals = Off,将 Off 改成 On ;
extension_dir =,并将其路径指到你的 PHP 目录下的 extensions 目录,比如:extension_dir = "C:\php\ext" ;
在c:\php 下建文件夹tmp 找upload_tmp_dir并改 upload_tmp_dir = “c:\php\tmp” ,去掉前面的 ; (目录必须有读写权限。)
查找 ;Windows Extensions 将下面列举的;
;extension=php_curl.dll
;extension=php_dbase.dll
;extension=php_gd2.dll (这个是用来支持GD库的,一般需要,必选)
;extension=php_ldap.dll
;extension=php_zip.dll
;extension=php_mbstring.dll
;extension=php_mssql.dll (可选)
;extension=php_mysql.dll
将这些前的";"去掉,其他的你需要的也可以去掉前面的;然后关闭保存该文件。
查找 ;session.save_path = 去掉前面 ; 号,本文这里将其设置置为 session.save_path = “c:\php\tmp”
一些朋友经常反映无法上传较大的文件或者运行某些程序经常超时,那么可以找到C:\Windows目录下的PHP.INI以下内容修改:
max_execution_time = 30 ; 这个是每个脚本运行的最长时间,可以自己修改加长,单位秒
max_input_time = 60 ; 这是每个脚本可以消耗的时间,单位也是秒
memory_limit = 8M ; 这个是脚本运行最大消耗的内存,也可以自己加大
upload_max_filesize = 2M ; 上载文件的最大许可大小 ,自己改吧,一些图片论坛需要这个更大的值
上面修改完成后,将php.ini文件复制到 c:\windows下
配置IIS来支持 php
ISAPI 模式设置:
打开IIS 6 展开”Internet 服务管理器“的下在你需要设置的”网站“上并单击右键选择“属性”
在弹出的属性窗口上选择“ISAPI 筛选器”选项卡找到并点击“添加”按钮,在弹出的“筛选器属性”窗口中的“筛选器名称”栏中输入:php 可执行文件里浏览选择php5isapi.dll文件,在c:\php\ php5isapi.dll下
打开“站点属性”窗口的“主目录”选项卡,找到并点击“配置”按钮; 在”应用程序映射“选项卡找到并点击“添加”按钮新增一个扩展名映射, 可执行文件指向 php4isapi.dll 所在路径(c:\php\ php5isapi.dll) 扩展名为 .php 动作限于”GET,HEAD,POST,TRACE“,
如果自己有独立的服务器,可以直接在IIS的WEB服务扩展下加一个php的扩展,方法如ISAPI 筛选器的增加方法,最后设置为允许.
然后重启服务器,,
在网站目录下新建一个 php文件来测试,内容如下:
<?php
phpinfo();
?>
安装MYSQL (参照
http://kait.onw.cn/article.asp?id=104 )
安装 Zend Optimizer 2.62
安装 phpMyAdmin
解压然后放到虚拟主机下,新建一个目录,把文件都放进去, 找到并打开phpMyAdmin目录下的 config.default.php ,做以下修改:
查找 $cfg['PmaAbsoluteUri']
设置你的phpmyadmin的WEB访问URL,比如本文中:$cfg['PmaAbsoluteUri'] = 'http://localhost/phpmyadmin/'; 注意这里假设 phpmyadmin在默认站点的根目录下
查找 $cfg['blowfish_secret'] =
设置COOKIES加密密匙,如abc.com则设置为$cfg['blowfish_secret'] = 'abc.com';
查找 $cfg['Servers'][$i]['auth_type'] = ,
默认为config,是不安全的,不推荐,推荐使用cookie,将其设置为 $cfg['Servers'][$i]['auth_type'] = 'cookie';
注意这里如果设置为config请在下面设置用户名和密码!例如:
$cfg['Servers'][$i]['user'] = 'root'; // MySQL user-----MySQL连接用户
$cfg['Servers'][$i]['password'] = 'abc.com';
搜索$cfg['DefaultLang'] ,将其设置为 zh-gb2312 ;
搜索$cfg['DefaultCharset'] ,将其设置为 gb2312 ;
打开浏览器,输入:http://地址/PHPAD的目录 ,若 IIS 和 MySQL 均已启动,输入用户ROOT密码abc.com(如没有设置密码则密码留空)即可进入phpMyAdmin数据库管理。
首先点击权限进入用户管理,删除除ROOT和主机不为localhost的用户并重新读取用户权限表,这里同样可以修改和设置ROOT的密码,添加其他用户等
phpMyAdmin 的具体功能,请慢慢熟悉,这里不再赘述。
至此所有安装完毕。
目录结构以及MTFS格式下安全的目录权限设置:
当前目录结构为
c:\php
|
+—————+——————+———————+———————+
(php5) tmp MySQL Zend phpMyAdmin
c:\php 设置为 Administrators和SYSTEM完全权限 即可,其他用户均无权限
对于其下的二级目录
c:\php 设置为 USERS 读取/运行 权限
c:\php\tmp 设置为 USERS 读/写/删 权限
c:\php\MySQL 、c:\php\Zend 设置为 Administrators和SYSTEM完全权限
phpMyAdmin WEB匿名用户读取权限
12 SerU FTP ,,.jmail 和 aspjpeg 插件的安装 (可选,需要的时候才装也行)
先停掉Serv-U服务
用Ultraedit打开ServUDaemon.exe
查找 Ascii:LocalAdministrator 和 #l@$ak#.lk;0@P
修改成等长度的其它字符就可以了,ServUAdmin.exe也一样处理。另外注意设置Serv-U所在的文件夹的权限,不要让IIS匿名用户有读取的权限,否则人家下走你修改过的文件,照样可以分析出你的管理员名和密码。
13. .windows 2003配置IIS支持.shtml
要使用 Shtml 的文件,则系统必须支持SSI,SSI必须是管理员通过Web 服务扩展启用的
windows 2003安装好IIS之后默认是支持.shtml的,只要在“WEB服务扩展”允许“在服务器前端的包含文件”即可
14. windows 2003下winwebmail的安装
- 安装WinWebMail,然后重启服务器使WinWebMail完成安装.并注册.然后恢复WinWebMail数据.
- 安装MCAFEE并按WinWebMail帮助内容设定,使MCAFEE与WinWebMail联合起到邮件杀毒作用(将MCAFEE更新到最新的病毒库)
-MCAFEE在邮件服务器的设置为:
设置 WinWebMail 的杀毒产品名称为“McAfee VirusScan for Win32”并指定有效的执行程序路径。请将执行程序路径指向: 系统盘符
rogram FilesCommon FilesNetwork Associates 目录或其子目录下的 SCAN.EXE 文件。
注意1:必须使用缺省的执行程序文件名。使用 McAfee 时就必须指向 SCAN.EXE 文件,而不能使用其他文件(如:SCAN32.EXE),否则不但无法查毒,并且会影响邮件系统的正常工作。
注意2:SCAN.EXE 文件并不在其安装目录下!
禁用 VirusScan 的电子邮件扫描功能。在 VirusScan 扫描属性下“所有进程 | 检测”中的“排除磁盘、文件和文件夹”内,点击“排除”按钮,在其“设置排除”中添加一个排除设置将安装 WinWebMail 的目录以及所有子目录都设为排除。必须要设置排除,否则有可能出现邮件计数错误,从而造成邮箱满的假象。
在 McAfee 控制台中有“访问保护”项中必须在其规则中不要选中“禁止大量发送邮件的蠕虫病毒发送邮件”项。否则会引起“Service unavailable”错误。
- 必须要在查毒设置中排除掉安装目录下的 \mail 及其所有子目录,只针对WinWebMail安装文件夹下的 \temp 文件夹进行实时查毒。注意:如果没有 \temp 文件夹时,先手工创建此 \temp 文件夹,然后再进行此项设置。
- 将WinWebMail的DNS设置为win2k3中网络设置的DNS,切记,要想发的出去最好设置一个不同的备用DNS地址,对外发信的就全靠这些DNS地址了
- 给予安装 WinWebMail 的盘符以及父目录以 Internet 来宾帐户 (IUSR_*) 允许 [读取\运行\列出文件夹目录] 的权限.
WinWebMail的安装目录,INTERNET访问帐号完全控制给予[超级用户/SYSTEM]在安装盘和目录中[完全控制]权限,重启IIS以保证设定生效.
- 防止外发垃圾邮件:
- 在服务器上点击右下角图标,然后在弹出菜单的“系统设置”-->“收发规则”中选中“启用SMTP发信认证功能”项,有效的防范外发垃圾邮件。
- 在“系统设置”-->“收发规则”中选中“只允许系统内用户对外发信”项。
- 在服务器上点击右下角图标,然后在弹出菜单的“系统设置”-->“防护”页选中“启用外发垃圾邮件自动过滤功能”项,然后再启用其设置中的“允许自动调整”项。
- “系统设置”-->“收发规则”中设置“最大收件人数”-----> 10.
- “系统设置”-->“防护”页选中“启用连接攻击保护功能”项,然后再设置“启用自动保护功能”.
- 用户级防付垃圾邮件,需登录WebMail,在“选项 | 防垃圾邮件”中进行设置。
- 打开IIS 6.0, 确认启用支持 asp 功能, 然后在默认站点下建一个虚拟目录(如: mail), 然后指向安装 WinWebMail 目录下的 \Web 子目录, 打开浏览器就可以按下面的地址访问webmail了:
- Web基本设置:
- 确认“系统设置”-->“资源使用设置”内没有选中“公开申请的是含域名帐号”
- “系统设置”-->“收发规则”中设置Helo为您域名的MX记录
- .解决大附件上传容易超时失败的问题.
在IIS中调大一些脚本超时时间,操作方法是: 在IIS的“站点或(虚拟目录)”的“主目录”下点击“配置”按钮,设置脚本超时间为:300秒(注意:不是Session超时时间)。
- .解决Windows 2003的IIS 6.0中,Web登录时经常出现"[超时,请重试]"的提示.
将WebMail所使用的应用程序池“属性-->回收”中的“回收工作进程”以及"属性-->性能"中的“在空闲此段时间后关闭工作进程”这两个选项前的勾号去掉,然后重启一下IIS即可解决.
- .解决通过WebMail写信时间较长后,按下发信按钮就会回到系统登录界面的问题.
适当增加会话时间(Session)为 60分钟。在IIS站点或虚拟目录属性的“主目录”下点击[配置---选项],就可以进行设置了(SERVER 2003默认为20分钟).
- .安装后查看WinWebMail的安装目录下有没有 \temp 目录,如没有,手工建立一个.
- 打开2003自带防火墙,并打开POP3.SMTP.WEB.远程桌面.充许此4项服务, OK, 如果想用IMAP4或SSL的SMTP.POP3.IMAP4也需要打开相应的端口.
15. 服务器安全设置之--组件安全设置 (非常重要!!!)
A、卸载WScript.Shell 和 Shell.application 组件,
反注册wshom.ocx控件 CMD命令: regsvr32/u C:\WINDOWS\System32\wshom.ocx
然后手动删除C:\WINDOWS\System32\下的wshom.ocx或CMD命令: del C:\WINDOWS\System32\wshom.ocx
反注册shell32.dll 组件 CMD命令: regsvr32/u C:\WINDOWS\system32\shell32.dll
然后手动删除C:\WINDOWS\System32\的shell32.dll 或CMD命令: 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六个字母。 其实,只要把对应注册表项导出来备份,然后直接改键名就可以了,
C、禁止使用FileSystemObject组件 (注意:更改了这个后,如果你利用该组件,记得在asp程序里将原来的\Scripting.FileSystemObject也改成\Scripting.FileSystemObject_c 不然不能上传文件)
FileSystemObject可以对文件进行常规操作,可以通过修改注册表,将此组件改名,来防止此类木马的危害。
HKEY_CLASSES_ROOT \ Scripting.FileSystemObject \
改名为其它的名字,如:改为\Scripting.FileSystemObject_c
自己以后调用的时候使用这个就可以正常调用此组件了
也要将clsid值也改一下
HKEY_CLASSES_ROOT\Scripting.FileSystemObject\CLSID\项目的值
也可以将其删除,来防止此类木马的危害。
2003注销此组件命令:RegSrv32 /u C:\WINDOWS\SYSTEM\scrrun.dll
如何禁止Guest用户使用scrrun.dll来防止调用此组件?
使用这个命令:cacls C:\WINNT\system32\scrrun.dll /e /d guests
D、禁止使用WScript.Shell组件(同A的组件)
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\项目的值
也可以将其删除,来防止此类木马的危害。
E、禁止使用Shell.Application组件(同A的组件)
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来防止调用此组件。
2003使用命令:cacls C:\WINDOWS\system32\shell32.dll /e /d guests
F、调用Cmd.exe
禁用Guests组用户调用cmd.exe
2003使用命令:cacls C:\WINDOWS\system32\Cmd.exe /e guests
G、防御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
www.12345.com 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在没有连接到数据库或者其他情况下会有提示错误,一般错误信息中会包含php脚本当
前的路径信息或者查询的SQL语句等信息,这类信息提供给黑客后,是不安全的,所以一般服务器建议禁止错误提示:
display_errors = Off
如果你却是是要显示错误信息,一定要设置显示错误的级别,比如只显示警告以上的信息:
error_reporting = E_WARNING & E_ERROR
当然,我还是建议关闭错误提示。
(11) 错误日志
建议在关闭display_errors后能够把错误信息记录下来,便于查找服务器运行的原因:
log_errors = On
同时也要设置错误日志存放的目录,建议根apache的日志存在一起:
error_log = D:/usr/local/apache2/logs/php_error.log
注意:给文件必须允许apache用户的和组具有写的权限。
MYSQL的降权运行
新建立一个用户比如mysqlstart
net user mysqlstart fuckmicrosoft /add
net localgroup users mysqlstart /del
不属于任何组
如果MYSQL装在d:\mysql ,那么,给 mysqlstart 完全控制 的权限
然后在系统服务中设置,MYSQL的服务属性,在登录属性当中,选择此用户 mysqlstart 然后输入密码,确定。
重新启动 MYSQL服务,然后MYSQL就运行在低权限下了。
如果是在windos平台下搭建的apache我们还需要注意一点,apache默认运行是system权限,
这很恐怖,这让人感觉很不爽.那我们就给apache降降权限吧。
net user apache fuckmicrosoft /add
net localgroup users apache /del
ok.我们建立了一个不属于任何组的用户apche。
我们打开计算机管理器,选服务,点apache服务的属性,我们选择log on,选择this account,我们填入上面所建立的账户和密码,重启apache服务,ok,apache运行在低权限下了。
实际上我们还可以通过设置各个文件夹的权限,来让apache用户只能执行我们想让它能干的事情,给每一个目录建立一个单独能读写的用户。
这也是当前很多虚拟主机提供商的流行配置方法哦,不过这种方法用于防止这里就显的有点大材小用了。
16.本地安全策略
打开“本地安全策略”,推荐设置如下:
密码策略设置为:(这个设置后,管理员密码是更改不到的.,要重新禁用 `密码必须符合复杂性要求’ 才能更改)
启用密码必须符合复杂性要求,
设置密码最小长度值为8,
密码最长驻留期30天,
最短0天,
强制保留密码历史为5个记住的密码。
帐户锁定策略设置为:
复位帐户锁定计数器设置为30分钟之后,
帐户锁定时间为30分钟,
帐户锁定阈值为5次无效登陆。
本地策略——>审核策略
审核策略更改 成功 失败
审核登录事件 成功 失败
审核对象访问 失败
审核过程跟踪 无审核
审核目录服务访问 失败
审核特权使用 失败
审核系统事件 成功 失败
审核账户登录事件 成功 失败
审核账户管理 成功 失败
本地策略——>用户权限分配
关闭系统:只有Administrators组、其它全部删除。
通过终端服务拒绝登陆:加入Guests、User组
通过终端服务允许登陆:只加入Administrators组,其他全部删除
本地策略——>安全选项
交互式登陆:不显示上次的用户名 启用
网络访问:不允许SAM帐户和共享的匿名枚举 启用
网络访问:不允许为网络身份验证储存凭证 启用
网络访问:可匿名访问的共享 全部删除
网络访问:可匿名访问的命名管道 全部删除
网络访问:可远程访问的注册表路径 全部删除
网络访问:可远程访问的注册表路径和子路径 全部删除
帐户:重命名来宾帐户 重命名一个帐户
帐户:重命名系统管理员帐户 重命名一个帐户
17. 禁用或删除掉guest帐号 (先设置好上面的安全策略才删除guest,如果先删Guest是不能设置安全策略的), 推荐 禁用就行
(手工或工具均可,推荐删除guest)。先在regedit下将administrator授权为完全控制..然后regedt32程序运行了 打开注册表程序,把 HKEY_LOCAL_MACHINE\SAM\Domains\Account\Users下的两个相关键删掉。一个是000001F5,一个是Names下的Guest
18.服务 禁用设置
必须禁用的服务:
以下服务危险性较大,必须禁用[先停止服务再将属性设置为已禁用]。
禁用Alerter
禁用Print Spooler
禁用Remote Registry服务 [说明:禁止远程连接注册表]
禁用task schedule服务 [说明:禁止自动运行程序]
禁用server服务 [说明:禁止默认共享]
禁Computer Browser服务 [说明:禁止共享浏览, 对于服务器没用的,一般用来自动浏览局域网里的网络资源]
禁用Telnet服务 [说明:禁止telnet远程登陆]
禁用workstation服务 [说明:防止一些漏洞和系统敏感信息获取]
[以下可选禁用或手动]
ClipBook [不需要查看远程剪贴簿的剪贴页面]
Fax Service [不需要发送或接收传真]
Indexing Service [不提供远程文件索引和快速访问或者没有连上局域网]
Internet Connection Sharing [不需要共享连接网络]
IPSEC Policy Agent [如连接要windows域该服务需要开启]
Messager [未连接到Windows 2000的域并且不需要管理警报]
Net Logon [不需要让局域网的其他用户登陆]
NetMeeting Remote Desktop Sharing [不需要使用NetMeeting远程管理计算机]
Network DDE [提高安全性]
Network DDE DSDM [提高安全性]
TCP/IP NetBIOS Helper Service [服务器不需要开启共享]
RunAs Service [不需要在某一用户态下用另外一用户执行程序]
Wireless Configuration [不需要无线网络]
QoS RSVP [不需要使用依赖于QoS的程序]
Remote Access Auto Connection Manager [不需要让程序读取网络信息时自动连接到网络]
Routing and Remote Access [机器不做路由之用]
Smart Card [没有智能卡阅读器和智能卡]
Smart Card Helper [没有旧式智能卡阅读器和智能卡]
Uninterruptible Power Supply [没有使用UPS或者UPS不支持双向传输信号]
Utility Manager [不从一个窗口中启动和配置辅助工具]
19.CMD命令的权限设置..都基本上关系到系统帐号提权的,
然后去除部分危险命令的system权限以防止缓冲区溢出等安全问题引发的安全问题。
首先可以将cacls设置为拒绝任何人访问,然后取消下列命令的system访问权限:
net.exe
net1.exet
cmd.exe
tftp.exe
netstat.exe
regedit.exe
at.exe
attrib.exe
cacls.exe
format.com
cscript.exe
ftp.exe
runas.exe
telnet.exe
tlntadmn.exe
wscript.exe
20. 硬盘权限篇 (参巧附件)
21. MSSQL安全设置
删除了调用shell,注册表,COM组件的破坏权限
use master
EXEC sp_dropextendedproc 'xp_cmdshell'
EXEC sp_dropextendedproc 'Sp_OACreate'
EXEC sp_dropextendedproc 'Sp_OADestroy'
EXEC sp_dropextendedproc 'Sp_OAGetErrorInfo'
EXEC sp_dropextendedproc 'Sp_OAGetProperty'
EXEC sp_dropextendedproc 'Sp_OAMethod'
EXEC sp_dropextendedproc 'Sp_OASetProperty'
EXEC sp_dropextendedproc 'Sp_OAStop'
EXEC sp_dropextendedproc 'Xp_regaddmultistring'
EXEC sp_dropextendedproc 'Xp_regdeletekey'
EXEC sp_dropextendedproc 'Xp_regdeletevalue'
EXEC sp_dropextendedproc 'Xp_regenumvalues'
EXEC sp_dropextendedproc 'Xp_regread'
EXEC sp_dropextendedproc 'Xp_regremovemultistring'
EXEC sp_dropextendedproc 'Xp_regwrite'
drop procedure sp_makewebtask
全部复制到"SQL查询分析器"
点击菜单上的--"查询"--"执行",就会将有安全问题的SQL过程删除
如果想恢复被drop掉的存储过程,请选择性的运行以下查询
use master
exec sp_addextendedproc xp_cmdshell,'xp_cmdshell.dll'
exec sp_addextendedproc xp_dirtree,'xpstar.dll'
exec sp_addextendedproc xp_enumgroups,'xplog70.dll'
exec sp_addextendedproc xp_fixeddrives,'xpstar.dll'
exec sp_addextendedproc xp_loginconfig,'xplog70.dll'
exec sp_addextendedproc xp_enumerrorlogs,'xpstar.dll'
exec sp_addextendedproc xp_getfiledetails,'xpstar.dll'
exec sp_addextendedproc sp_OACreate,'odsole70.dll'
exec sp_addextendedproc sp_OADestroy,'odsole70.dll'
exec sp_addextendedproc sp_OAGetErrorInfo,'odsole70.dll'
exec sp_addextendedproc sp_OAGetProperty,'odsole70.dll'
exec sp_addextendedproc sp_OAMethod,'odsole70.dll'
exec sp_addextendedproc sp_OASetProperty,'odsole70.dll'
exec sp_addextendedproc sp_OAStop,'odsole70.dll'
exec sp_addextendedproc xp_regaddmultistring,'xpstar.dll'
exec sp_addextendedproc xp_regdeletekey,'xpstar.dll'
exec sp_addextendedproc xp_regdeletevalue,'xpstar.dll'
exec sp_addextendedproc xp_regenumvalues,'xpstar.dll'
exec sp_addextendedproc xp_regread,'xpstar.dll'
exec sp_addextendedproc xp_regremovemultistring,'xpstar.dll'
exec sp_addextendedproc xp_regwrite,'xpstar.dll'
22. IIS用户设置方法
这里举例4个不同类型脚本的虚拟主机 权限设置例子
主机头 主机脚本 硬盘目录 IIS用户名 硬盘权限 应用程序池 主目录 应用程序配置
www.1.com HTM D:\
www.1.com\ IUSR_1.com Administrators(完全控制)
IUSR_1.com(读) 可共用 读取/纯脚本 启用父路径
www.2.com ASP D:\
www.2.com\ IUSR_1.com Administrators(完全控制)
IUSR_2.com(读/写) 可共用 读取/纯脚本 启用父路径
www.3.com NET D:\
www.3.com\ IUSR_1.com Administrators(完全控制)
IWAM_3.com(读/写)
IUSR_3.com(读/写) 独立池 读取/纯脚本 启用父路径
www.4.com PHP D:\
www.4.com\ IUSR_1.com Administrators(完全控制)
IWAM_4.com(读/写)
IUSR_4.com(读/写) 独立池 读取/纯脚本 启用父路径
其中 IWAM_3.com 和 IWAM_4.com 分别是各自独立应用程序池标识中的启动帐户
主机脚本类型 应用程序扩展名 (就是文件后缀名)对应主机脚本,只需要加载以下的应用程序扩展
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\