windows 2003 服务器安装步骤和安全配置

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,IPSECIP筛选设置(IP筛选要允许TCP80,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 viewnbtstat这些都是基于空连接的,禁止空连接就好了。打开注册表,找到Local_Machine/System/CurrentControlSet/Control/LSA 下的RestrictAnonymous 把这个值改成”1即可。

5.更改TTL(安全)

    hacker可以根据ping回的TTL值来大致判断你的操作系统,如:

TTL=107(WINNT);

TTL=108(win2000);

TTL=127128(win9x);

TTL=240241(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安装

   下载: PHP5.1.2):http://cn.php.net/get/php-5.1.2-Win32.zip/from/a/mirror

MySQL4.1.16):http://www.skycn.com/soft/24418.html

Zend Optimizer2.6.2):http://www.zend.com/store/free_download.php?pid=13

phpMyAdmin2.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“

如果自己有独立的服务器,可以直接在IISWEB服务扩展下加一个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']

 
设置你的phpmyadminWEB访问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 设置为 AdministratorsSYSTEM完全权限 即可,其他用户均无权限
对于其下的二级目录
c:/php 设置为 USERS 读取/运行 权限
c:/php/tmp 设置为 USERS // 权限
c:/php/MySQL c:/php/Zend 设置为 AdministratorsSYSTEM完全权限
phpMyAdmin WEB匿名用户读取权限

12 SerU FTP ,,.jmail aspjpeg 插件的安装  (可选,需要的时候才装也行)

先停掉Serv-U服务
Ultraedit打开ServUDaemon.exe
查找 AsciiLocalAdministrator #l@$ak#.lk;0@P
修改成等长度的其它字符就可以了,ServUAdmin.exe也一样处理。另外注意设置Serv-U所在的文件夹的权限,不要让IIS匿名用户有读取的权限,否则人家下走你修改过的文件,照样可以分析出你的管理员名和密码。

13. .windows 2003配置IIS支持.shtml
要使用 Shtml 的文件,则系统必须支持SSISSI必须是管理员通过Web 服务扩展启用的
windows 2003
安装好IIS之后默认是支持.shtml的,只要在“WEB服务扩展允许在服务器前端的包含文件即可

14. windows 2003winwebmail的安装

- 安装WinWebMail,然后重启服务器使WinWebMail完成安装.并注册.然后恢复WinWebMail数据.

- 安装MCAFEE并按WinWebMail帮助内容设定,使MCAFEEWinWebMail联合起到邮件杀毒作用(MCAFEE更新到最新的病毒库)
 
 -MCAFEE邮件服务器的设置为:

设置 WinWebMail 的杀毒产品名称为“McAfee VirusScan for Win32”并指定有效的执行程序路径。请将执行程序路径指向: 系统盘符:Program FilesCommon FilesNetwork Associates 目录或其子目录下的 SCAN.EXE 文件。
  
注意1:必须使用缺省的执行程序文件名。使用 McAfee 时就必须指向 SCAN.EXE 文件,而不能使用其他文件(如:SCAN32.EXE),否则不但无法查毒,并且会影响邮件系统的正常工作。

   注意2SCAN.EXE 文件并不在其安装目录下!

禁用 VirusScan 的电子邮件扫描功能。在 VirusScan 扫描属性下“所有进程 | 检测”中的“排除磁盘、文件和文件夹”内,点击“排除”按钮,在其“设置排除”中添加一个排除设置将安装 WinWebMail 的目录以及所有子目录都设为排除。必须要设置排除,否则有可能出现邮件计数错误,从而造成邮箱满的假象。

McAfee 控制台中有“访问保护”项中必须在其规则中不要选中“禁止大量发送邮件的蠕虫病毒发送邮件”项。否则会引起“Service unavailable”错误。
 
- 必须要在查毒设置中排除掉安装目录下的 /mail 及其所有子目录,只针对WinWebMail安装文件夹下的 /temp 文件夹进行实时查毒。注意:如果没有 /temp 文件夹时,先手工创建此 /temp 文件夹,然后再进行此项设置。
 
- WinWebMailDNS设置为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 2003IIS 6.0中,Web登录时经常出现"[超时,请重试]"的提示.
WebMail所使用的应用程序池属性-->回收中的回收工作进程以及"属性-->性能"中的在空闲此段时间后关闭工作进程这两个选项前的勾号去掉,然后重启一下IIS即可解决.

- .解决通过WebMail写信时间较长后,按下发信按钮就会回到系统登录界面的问题.
适当增加会话时间(Session)为 60分钟。在IIS站点或虚拟目录属性的主目录下点击[配置---选项],就可以进行设置了(SERVER 2003默认为20分钟).

-  .安装后查看WinWebMail的安装目录下有没有 /temp 目录,如没有,手工建立一个.

-  打开2003自带防火墙,并打开POP3.SMTP.WEB.远程桌面.充许此4项服务, OK, 如果想用IMAP4SSLSMTP.POP3.IMAP4也需要打开相应的端口.

15. 服务器安全设置之--组件安全设置 (非常重要!!!)
A、卸载WScript.Shell Shell.application 组件,

    反注册wshom.ocx控件     CMD命令:  regsvr32/u C:/WINDOWS/System32/wshom.ocx
然后手动删除C:/WINDOWS/System32/下的wshom.ocxCMD命令
: 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.10php5.0.3以前有一些比较严重的bug,所以推荐使用新版。另外,目前闹的轰轰烈烈的SQL  Injection也是在PHP上有很多利用方式,所以要保证
安全,PHP代码编写是一方面,PHP的配置更是非常关键。
我们php手手工安装的,php的默认配置文件在 /usr/local/apache2/conf/php.ini,我们最主要就是要配置php.ini中的内容,让我们执行  php能够更安全。整个PHP中的安全设置主要是为了防止phpshellSQL 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服务,okapache运行在低权限下了。
  实际上我们还可以通过设置各个文件夹的权限,来让apache用户只能执行我们想让它能干的事情,给每一个目录建立一个单独能读写的用户。
  这也是当前很多虚拟主机提供商的流行配置方法哦,不过这种方法用于防止这里就显的有点大材小用了。

16.本地安全策略

打开“本地安全策略”,推荐设置如下:

         密码策略设置为:(这个设置后,管理员密码是更改不到的.,要重新禁用 `密码必须符合复杂性要求才能更改)

         启用密码必须符合复杂性要求,

         设置密码最小长度值为8

         密码最长驻留期30天,

         最短0天,

         强制保留密码历史为5个记住的密码。


帐户锁定策略设置为:

         复位帐户锁定计数器设置为30分钟之后,

         帐户锁定时间为30分钟,

         帐户锁定阈值为5次无效登陆。

本地策略——>审核策略
  审核策略更改   成功 失败  
  审核登录事件   成功 失败
  审核对象访问      失败
   审核过程跟踪   无审核
   审核目录服务访问    失败
   审核特权使用      失败
   审核系统事件   成功 失败
   审核账户登录事件 成功 失败
   审核账户管理   成功 失败

本地策略——>用户权限分配
   关闭系统:只有Administrators组、其它全部删除。
   通过终端服务拒绝登陆:加入GuestsUser
   通过终端服务允许登陆:只加入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/

 

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页