win2003 服务器安全配置全套详解

我写这篇文章的时候心里很不踏实,总害怕说错了会误了别人的事。呵呵 下面开始说下。

本文更侧重于防止ASP漏洞攻击,所以服务器防黑等方面的讲解可能略嫌少了点。
  基本的服务器安全设置
  安装补丁
  安装好操作系统之后,最好能在托管之前就完成补丁的安装,配置好网络后,如果是2000则确定安装上了SP4,如果是2003,则最好安装上SP1,然后点击开始→Windows Update,安装所有的关键更新。
  安装杀毒软件
  虽然杀毒软件有时候不能解决问题,但是杀毒软件避免了很多问题。我一直在用诺顿2004,据说2005可以杀木马,不过我没试过。还有人用瑞星,瑞星是确定可以杀木马的。更多的人说卡巴司机好,不过我没用过。
  不要指望杀毒软件杀掉所有的木马,因为ASP木马的特征是可以通过一定手段来避开杀毒软件的查杀。
  设置端口保护和防火墙、删除默认共享
  都是服务器防黑的措施,即使你的服务器上没有IIS,这些安全措施都最好做上。这是阿江的盲区,大概知道屏蔽端口用本地安全策略,不过这方面的东西网上攻略很多,大家可以擞出来看看,晚些时候我或者会复制一些到我的网站上。
  权限设置
  阿江感觉这是防止ASP漏洞攻击的关键所在,优秀的权限设置可以将危害减少在一个IIS站点甚至一个虚拟目录里。我这里讲一下原理和设置思路,聪明的朋友应该看完这个就能解决问题了。
  权限设置的原理
  WINDOWS用户,在WINNT系统中大多数时候把权限按用户(組)来划分。在【开始→程序→管理工具→计算机管理→本地用户和组】管理系统用户和用户组。
  NTFS权限设置,请记住分区的时候把所有的硬盘都分为NTFS分区,然后我们可以确定每个分区对每个用户开放的权限。【文件(夹)上右键→属性→安全】在这里管理NTFS文件(夹)权限。
  IIS匿名用户,每个IIS站点或者虚拟目录,都可以设置一个匿名访问用户(现在暂且把它叫“IIS匿名用户”),当用户访问你的网站的.ASP文件的时候,这个.ASP文件所具有的权限,就是这个“IIS匿名用户”所具有的权限。
  权限设置的思路
  要为每个独立的要保护的个体(比如一个网站或者一个虚拟目录)创建一个系统用户,让这个站点在系统中具有惟一的可以设置权限的身份。
  在IIS的【站点属性或者虚拟目录属性→目录安全性→匿名访问和验证控制→编辑→匿名访问→编辑】填写刚刚创建的那个用户名。
  设置所有的分区禁止这个用户访问,而刚才这个站点的主目录对应的那个文件夹设置允许这个用户访问(要去掉继承父权限,并且要加上超管组和SYSTEM组)。
  这样设置了之后,这个站点里的ASP程序就只有当前这个文件夹的权限了,从探针上看,所有的硬盘都是红叉叉。
  我的设置方法
  我是先创建一个用户组,以后所有的站点的用户都建在这个組里,然后设置这个组在各个分区没有权限或者完全拒绝。然后再设置各个IIS用户在各在的文件夹里的权限。
  因为比较多,所以我很不想写,其实知道了上面的原理,大多数人都应该懂了,除非不知道怎么添加系统用户和組,不知道怎么设置文件夹权限,不知道IIS站点属性在那里。真的有那样的人,你也不要着急,要沉住气慢慢来,具体的方法其实自己也能摸索出来的,我就是这样。当然,如果我有空,我会写我的具体设置方法,很傲能还会配上图片。
  改名或卸载不安全组件
  不安全组件不惊人
  我的在阿江探针1.9里加入了不安全组件检测功能(其实这是参考7i24的代码写的,只是把界面改的友好了一点,检测方法和他是基本一样的),这个功能让很多站长吃惊不小,因为他发现他的服务器支持很多不安全组件。
  其实,只要做好了上面的权限设置,那么FSO、XML、strem都不再是不安全组件了,因为他们都没有跨出自己的文件夹或者站点的权限。那个欢乐时光更不用怕,有杀毒软件在还怕什么时光啊。
  最危险的组件是WSH和Shell,因为它可以运行你硬盘里的EXE等程序,比如它可以运行提升程序来提升SERV-U权限甚至用SERVU来运行更高权限的系统程序。
  谨慎决定是否卸载一个组件
  组件是为了应用而出现的,而不是为了不安全而出现的,所有的组件都有它的用处,所以在卸载一个组件之前,你必须确认这个组件是你的网站程序不需要的,或者即使去掉也不关大体的。否则,你只能留着这个组件并在你的ASP程序本身上下工夫,防止别人进来,而不是防止别人进来后SHELL。
  比如,FSO和XML是非常常用的组件之一,很多程序会用到他们。WSH组件会被一部分主机管理程序用到,也有的打包程序也会用到。
  一、操作系统配置
  1.安装操作系统(NTFS分区)后,装杀毒软件,我选用的是卡巴。
  2.安装系统补丁。扫描漏洞全面杀毒
  3.删除Windows Server 2003默认共享
  首先编写如下内容的批处理文件:
  复制代码 代码如下:
  @echo off
  net share C$ /del
  net share D$ /del
  net share E$ /del
  net share F$ /del
  net share admin$ /del
  文件名为delshare.bat,放到启动项中,每次开机时会自动删除共享。
  4.禁用IPC连接
  打开CMD后输入如下命令即可进行连接:net use\\ip\ipc$ "password" /user:"usernqme"。我们可以通过修改注册表来禁用IPC连接。打开注册表编辑器。找到如下组建HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa中的restrictanonymous子键,将其值改为1即可禁用IPC连接。
  5.删除"网络连接"里的协议和服务
  在"网络连接"里,把不需要的协议和服务都删掉,这里只安装了基本的Internet协议(TCP/IP),同时在高级tcp/ip设置里--"NetBIOS"设置"禁用tcp/IP上的NetBIOS(S)"。
  6.启用windows连接防火墙,只开放web服务(80端口)。
  注:在2003系统里,不推荐用TCP/IP筛选里的端口过滤功能,譬如在使用FTP服务器的时候,如果仅仅只开放21端口,由于FTP协议的特殊性,在进行FTP传输的时候,由于FTP 特有的Port模式和Passive模式,在进行数据传输的时候,需要动态的打开高端口,所以在使用TCP/IP过滤的情况下,经常会出现连接上后无法列出目录和数据传输的问题。所以在2003系统上增加的windows连接防火墙能很好的解决这个问题,所以都不推荐使用网卡的TCP/IP过滤功能。
  7.磁盘权限
  系统盘只给 Administrators 和 SYSTEM 权限
  系统盘\Documents and Settings 目录只给 Administrators 和 SYSTEM 权限;
  系统盘\Documents and Settings\All Users 目录只给 Administrators 和 SYSTEM 权限;
  系统盘\Documents and Settings\All Users\Application Data目录只给 Administrators 和 SYSTEM 权限;
  系统盘\Windows 目录只给 Administrators 、 SYSTEM 和 users 权限;
  系统盘\Windows\System32\net.exe;net1.exe;cmd.exe;command.exeftp.exe;netstat.exe;regedit.exe;at.exe;attrib.exe;cacls.exe 文件只给 Administrators 权限(如果觉得没用就删了它,比如我删了cmd.exe,command.exe,嘿嘿。);
  其它盘,有安装程序运行的(我的sql server 2000 在D盘)给 Administrators 和 SYSTEM 权限,无只给 Administrators 权限。
  8.本地安全策略设置
  开始菜单—>管理工具—>本地安全策略
  A、本地策略——>审核策略 (可选用)
  审核策略更改 成功 失败
  审核登录事件 成功 失败
  审核对象访问 失败
  审核过程跟踪 无审核
  审核目录服务访问 失败
  审核特权使用 失败
  审核系统事件 成功 失败
  审核账户登录事件 成功 失败
  审核账户管理 成功 失败
  B、本地策略——>用户权限分配
  关闭系统:只有Administrators组、其它全部删除。
  通过终端服务拒绝登陆:加入Guests、Users组
  通过终端服务允许登陆:只加入Administrators组,其他全部删除
  C、本地策略——>安全选项
  交互式登陆:不显示上次的用户名 启用
  网络访问:可匿名访问的共享 全部删除
  网络访问:可匿名访问的命名管道 全部删除
  **网络访问:可远程访问的注册表路径 全部删除
  **网络访问:可远程访问的注册表路径和子路径 全部删除
  帐户:重命名来宾帐户 重命名一个帐户
  (下面一项更改可能导致sqlserver不能使用)
  帐户:重命名系统管理员帐户 重命名一个帐户
  二、iis配置(包括网站所在目录)
  1.新建自己的网站(*注意:在应用程序设置中执行权限设为无,在需要的目录里再更改),目录不在系统盘
  注:为支持asp.net,将系统盘\Inetpub\wwwroot中的aspnet_client文件夹复制到web根目录下,并给web根目录加上users权限。
  2.删掉系统盘\inetpub目录
  3.删除不用的映射
  在"应用程序配置"里,只给必要的脚本执行权限:ASP、ASPX。
  4.为网站创建系统用户
  A.例如:网站为sinesafe.cn,新建用户sinesafe权限为guests。然后在web站点属性里"目录安全性"---"身份验证和访问控制"里设置匿名访问使用下列Windows 用户帐户"的用户名和密码都使用sinesafe.cn这个用户的信息。(用户名:主机名\sinesafe.cn)
  B.给网站所在的磁盘目录添加用户sinesafe,只给读取和写入的权限。
  5.设置应用程及子目录的执行权限
  A.主应用程序目录中的"属性--应用程序设置--执行权限"设为纯脚本
  B.在不需要执行asp、asp.net的子目录中,例如上传文件目录,执行权限设为无
  6.应用程序池设置
  我的网站使用的是默认应用程序池。设置"内存回收":这里的最大虚拟内存为:1000M,最大使用的物理内存为256M,这样的设置几乎是没限制这个站点的性能的。
  回收工作进程(分钟):1440
  在下列时间回收工作进程:06:00
  三、sql server 2000 配置
  1.密码设置
  我编的程序用了sa用户,密码设置超复杂(自己记不住,保存在手机里,嘿嘿)。
  2.删除危险的扩展存储过程和相关.dll。
  3.Xp_cmdshell(这个肯定首当其冲,不用说了)、Xp_regaddmultistring、Xp_regdeletekey、Xp_regdeletevalue、Xp_regenumvalues、Xp_regread、Xp_regwrite、Xp_regremovemultistring
  漏洞一直很多前段时间我自己的服务器就出现了一个sql的临时储存过程漏洞漏洞扩展:xp_dirtree储存过程。
  事前:最近发现一个漏洞是sql服务器造成的
  前几天正好没有什么事情,就用阿d的sql注入工具对自己服务器的网站进行注入,偶然发现了使用mssql的网站浸染可以利用sql注入的形式得到整个服务器上所有目录(我的服务器作了安全设置的)依然可以看见,然后在服务器上安装了一个抓包工具对sql server进行抓包发现,使用工具连接sql漏洞xp_dirtree读取目录,可获得整个服务器目录,如列出c盘目录他会把你c盘下的所有目录列出来,这样是很不安全的,目前是只可以查处目录上穿东西,大家可以设想一下,如果我随意修改一个boot.ini覆盖了c盘的boot.ini是一个什么概念,呵呵首先可以导致服务其瘫痪,无法读取系统
  解决方案:删除xp_dirtree,命令是sp_dropextendedproc 'xp_dirtree'
  删除了以上的那个组建您在使用阿d或者任何的sql注入工具都是白搭
  在这里也给大家提供一些其他sql危险的储存过程
  建议删除
  [注意:所有删除sql储存过程的操作必须在mssql查询分析器里操作,下面哪些前面的是储存过程的名字后面是删除储存过程的命令]
  先来列出危险的内置存储过程:
  复制代码 代码如下:
  xp_cmdshell sp_dropextendedproc 'xp_cmdshell'
  xp_regaddmultistring sp_dropextendedproc 'xp_regaddmultistring'
  xp_regdeletekey sp_dropextendedproc 'xp_regdeletekey'
  xp_regdeletevalue sp_dropextendedproc 'xp_regdeletevalue'
  xp_regenumkeys sp_dropextendedproc 'xp_regenumkeys'
  xp_regenumvalues sp_dropextendedproc 'xp_regenumvalues'
  xp_regread sp_dropextendedproc 'xp_regread'
  xp_regremovemultistring sp_dropextendedproc 'xp_regremovemultistring'
  xp_regwrite sp_dropextendedproc 'xp_regwrite'
  ActiveX脚本:
  复制代码 代码如下:
  sp_OACreate sp_dropextendedproc 'sp_OACreate'
  sp_OADestroy sp_dropextendedproc 'sp_OADestroy'
  sp_OAMethod sp_dropextendedproc 'sp_OAMethod'
  sp_OAGetProperty sp_dropextendedproc 'sp_OAGetProperty'
  sp_OAGetErrorInfo sp_dropextendedproc 'sp_OAGetErrorInfo'
  sp_OAStop sp_dropextendedproc 'sp_OAStop'
  四、其它设置(可选用,本人可不负责)
  1.任何用户密码都要复杂,不需要的用户---删。
  2.防止SYN洪水攻击
  HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
  新建DWORD值,名为SynAttackProtect,值为2
  3.禁止响应ICMP路由通告报文
  HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\interface
  新建DWORD值,名为PerformRouterDiscovery 值为0
  4.防止ICMP重定向报文的攻击
  HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
  将EnableICMPRedirects 值设为0
  5.不支持IGMP协议
  HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
  新建DWORD值,名为IGMPLevel 值为0
  6.禁用DCOM:
  运行中输入 Dcomcnfg.exe。 回车, 单击“控制台根节点”下的“组件服务”。 打开“计算机”子文件夹。
  对于本地计算机,请以右键单击“我的电脑”,然后选择“属性”。选择“默认属性”选项卡。
  清除“在这台计算机上启用分布式 COM”复选框。
  7.卸载不安全组件。
  [code]
  regsvr32/u C:\Windows\System32\wshom.ocx
  regsvr32/u C:\Windows\System32\shell32.dll 在CMD 下执行以上两个命令。
  五.防止Serv-U权限提升
  其实,注销了Shell组件之后,侵入者运行提升工具的可能性就很小了,但是prel等别的脚本语言也有shell能力,为防万一,还是设置一下为好。
  用Ultraedit打开ServUDaemon.exe查找Ascii:LocalAdministrator,和[email=#l@$ak#.lk;0@P]#l@$ak#.lk;0@P[/email],修改成等长度的其它字符就可以了,ServUAdmin.exe也一样处理。
  另外注意设置Serv-U所在的文件夹的权限,不要让IIS匿名用户有读取的权限,否则人家下走你修改过的文件,照样可以分析出你的管理员名和密码。
  利用ASP漏洞攻击的常见方法及防范
  一般情况下,黑客总是瞄准论坛等程序,因为这些程序都有上传功能,他们很容易的就可以上传ASP木马,即使设置了权限,木马也可以控制当前站点的所有文件了。另外,有了木马就然后用木马上传提升工具来获得更高的权限,我们关闭shell组件的目的很大程度上就是为了防止攻击者运行提升工具。
  如果论坛管理员关闭了上传功能,则黑客会想办法获得超管密码,比如,如果你用动网论坛并且数据库忘记了改名,人家就可以直接下载你的数据库了,然后距离找到论坛管理员密码就不远了。
  作为管理员,我们首先要检查我们的ASP程序,做好必要的设置,防止网站被黑客进入。另外就是防止攻击者使用一个被黑的网站来控制整个服务器,因为如果你的服务器上还为朋友开了站点,你可能无法确定你的朋友会把他上传的论坛做好安全设置。这就用到了前面所说的那一大堆东西,做了那些权限设置和防提升之后,黑客就算是进入了一个站点,也无法破坏这个网站以外的东西。
  后记
  也许有安全高手或者破坏高手看了我的文章会嘲笑或者窃喜,但我想我的经验里毕竟还是存在很多正确的地方,有千千万万的比我知道的更少的人像我刚开始完全不懂的时候那样在渴求着这样一篇文章,所以我必须写,我不管别人怎么说我,我也不怕后世会有千千万万的人对我唾骂,我一个人承担下来,我也没有娘子需要交代的……
  好了今天的就先到这里,最后送各位站长一句话:最小的权限,最大的安全! 不要嫌麻烦不要疏忽大意,设置的越细心安全指数越高,我们设置密码的时候多设置一位数也许就需要黑客多话N天来破解,都是一样的道理。如果有不明白的或需要我帮助的 请联系我 我将很热心的为大家服务,谢谢大家。

(0)

相关推荐

  • win2003 服务器安全配置全套详解

    我写这篇文章的时候心里很不踏实,总害怕说错了会误了别人的事.呵呵 下面开始说下. 本文更侧重于防止ASP漏洞攻击,所以服务器防黑等方面的讲解可能略嫌少了点. 基本的服务器安全设置 安装补丁 安装好操作系统之后,最好能在托管之前就完成补丁的安装,配置好网络后,如果是2000则确定安装上了SP4,如果是2003,则最好安装上SP1,然后点击开始→Windows Update,安装所有的关键更新. 安装杀毒软件 虽然杀毒软件有时候不能解决问题,但是杀毒软件避免了很多问题.我一直在用诺顿2004,据说2

  • 基于Linux网关服务器squid配置过程详解

    前言 在此,我们要配置一个只对内部网络提供代理服务的 Proxy Server.它具有如下功能它将用户分为高级用户和普通用户两种,对高级用户采用网卡物理地址识别的方法, 普通用户则需要输入用户名和口令才能正常使用. 高级用户没有 访问时间和文件类型的限制,而普通用户只在上班时可以访问以及一些其它的限制. 安装 从源中安装 源中自带稳定版本,执行下面的命令进行安装 sudo apt-get install squid squid-common 源码编译安装 当然你也可以到官方网站下载最新的版本进行

  • ECMall支持SSL连接邮件服务器的配置方法详解

    首先,主要是ecmall使用的phpmailer版本太低,不支持加密连接. 然后,得对相应代码做一定调整. 1. 覆盖phpmailer 请从附件进行下载: 复制代码 代码如下: http://cywl.jb51.net:81/201405/yuanma/ecmall_phpmailer_lib(jb51.net).zip 2. 改造lib 涉及到两个lib:mail.lib.php .mail_quequ.lib.php 在这两个类的构造函数中,增加一个参数传递.如Mailer 复制代码 代码

  • Redis Sentinel服务配置流程(详解)

    1.Redis Sentinel服务配置 1.1简介 Redis 的 Sentinel 系统用于管理多个 Redis 服务器(instance), 该系统执行以下三个任务: 监控(Monitoring): Sentinel 会不断地检查你的主服务器和从服务器是否运作正常. 提醒(Notification): 当被监控的某个 Redis 服务器出现问题时, Sentinel 可以通过API 向管理员或者其他应用程序发送通知. 自动故障迁移(Automatic failover): 当一个主服务器不

  • Linux 下FTP的安装与配置教程详解

    0.安装ftp的前置条件是关掉SElinux # vi /etc/selinux/config 修改 SELINUX=" disabled " ,重启服务器.若相同,则跳过此步骤. 1. 可先查看是否安装过vsftp # rpm -qa | grep vsftpd 则代表已经安装.可直接跳过步骤2 2 .安装 vsftp # yum install vsftp* Is this ok [y/N]: y 代表安装完成. 3. 对vsftp 进行配置 # /etc/vsftpd/vsftp

  • Mybatis 创建方法、全局配置教程详解

    总体介绍:MyBatis实际上是Ibatis3.0版本以后的持久化层框架[也就是和数据库打交道的框架]! 和数据库打交道的技术有: 原生的JDBC技术--->Spring的JdbcTemplate技术 这些工具都是提供简单的SQL语句的执行,但是和我们这里学的MyBatis框架还有些不同, 框架是一整套的东西,例如事务控制,查询缓存,字段映射等等. 我们用原生JDBC操作数据库的时候都会经过: 编写sql---->预编译---->设置参数----->执行sql------->

  • Nginx服务器Nginx.com配置文件详解

    在此记录下Nginx服务器nginx.conf的配置文件说明, 部分注释收集与网络. #运行用户 user www-data; #启动进程,通常设置成和cpu的数量相等 worker_processes 1; #全局错误日志及PID文件 error_log /var/log/nginx/error.log; pid /var/run/nginx.pid; #工作模式及连接数上限 events { use epoll; #epoll是多路复用IO(I/O Multiplexing)中的一种方式,但

  • php.ini中的php-5.2.0配置指令详解

    ;; 关于php.ini ;;  这个文件必须命名为'php.ini'并放置在httpd.conf中的PHPIniDir指令指定的目录中. ; 最新版本的php.ini可以在下面两个位置查看: ; http://cvs.php.net/viewvc.cgi/php-src/php.ini-recommended?view=co ; http://cvs.php.net/viewvc.cgi/php-src/php.ini-dist?view=co ;;;;;;;;;;;; ;; 语法 ;; ;;

  • CentOS安装mysql5.7 及简单配置教程详解

    安装 保证你的用户有权限 安装 没有 切换 root su root (su的意思:swich user) # rpm -ivh http://dev.mysql.com/get/mysql57-community-release-el6-9.noarch.rpm 可能会遇到 warning: /var/tmp/rpm-tmp.6V5aFC: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY 可以忽略(个人意见,百度了一下没找到合适的答案)

  • Java 获取服务器环境的实例详解

    Java 获取服务器环境的实例详解 废话不多说,直接上代码,代码中的注释写的比较清楚,请大家好好看, package com.rapido.utils; import java.util.Properties; /** * 获取服务器环境信息 * @author X-rapido * */ public class SystemDataUtil { public static Properties getSystemProperties() { Properties props = System

随机推荐