找回密码
 注册
搜索
热搜: 回贴

大家好,我是A5安全小组 jack ,今天跟大家交流下 关于WEB服务器安全的相关问题。

2010-1-31 07:47| 发布者: admin| 查看: 24| 评论: 0|原作者: 琴姬

其实,在服务器和网站的安全设置方面,我虽然有一些经验,但是还谈不上有研究,所以我今天做这个讲座的时候心里很不踏实,总害怕说错了会误了别人的事,有说错的地方还请大家指出,今天就全当互相讨论交流了。也许各位当中有安全高手或者破坏高手看了我所说的会嘲笑或者窃喜,但我想我的经验里毕竟还是存在很多正确的地方,有千千万万的比我知道的更少的人还是需要有人来提供这些经验和信息的。呵呵

  现在几乎有一部分的站长都拥有自己的服务器,一部分的人还使用虚拟主机或合租服务器。对于现在在使用虚拟主机和合租的部分站长来说 可能在服务器安全方面考虑的比较少,因为有IDC过硬的技术在支撑,只要对自己的使用的网站程序相对多了解一些,多关注下程序官方发布的新闻和漏洞补丁提示,及时的升级程序打上最新漏洞补丁就已经有80%的安全性了,官方补丁是免费发布给我们的东西,如果连程序漏洞补丁都不能及时打上,那么这个网站被黑的可能性几乎在80%以上,所以说程序补丁务必要及时打上。其次就是虚拟主机管理帐号密码和FTP帐号密码、后台登陆路径地址和管理员帐号密码的设置,这个可能很多人有时候容易忽略,但是由于疏忽大意设置的密码过于简单或没有更改默认的帐号密码、后台路径而造成网站被黑的还是有一小部分站长。现在有很多傻瓜式的黑客工具,随便一个懂点计算机技术的人就能上手,对于一些FTP帐号密码和网站后台密码简单的网站可以批量获取到帐号密码,直接登陆FTP或后台拿到WEBSHELL ,所以说一般在拿到FTP帐号密码后要及时的修改尽量越复杂越好。网站在安装完毕后及时的删除安装文件修改后台路径和后台登陆帐号密码是务必要做的,不要嫌麻烦,也许你的小小的操作就会给你网站带来很大的安全保障,疏忽大意,侥幸心理只会给网站带来很大的安全隐患,因为一个入侵找的就是你被忽略的死角钻你不注意的漏洞。

  好了 对于使用虚拟主机的网站安全我暂时先说这么多,我们下面重点说一下独立WEB服务器的安全设置。

  最近遇到好几位站长找我求助,看了下情况都是差不多,都是因为前期只顾着弄网站,对服务器安全方面的意识和技术防范不够 所以导致整个服务器都被黑客控制,服务器上的所有网站都被挂马,都是好几万流量的网站,这个后果很严重。在服务器配置网站和环境的时候没有把安全性考虑进去,只是为了能让自己的网站能正常访问,所以整个服务器的权限几乎都是Everyone 权限在运作。这样的服务器能不被黑纯属意外。下面我们就针对目前主流的服务器系统WIN2003 给大家提一些相关安全配置和防范方面的信息,希望对各位有所帮助。我直接分几大块写出来 。

  一、操作系统配置

  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 权限;( 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、本地策略——>安全选项

  交互式登陆:不显示上次的用户名 启用

  网络访问:可匿名访问的共享 全部删除

  网络访问:可匿名访问的命名管道 全部删除

  网络访问:可远程访问的注册表路径 全部删除

  网络访问:可远程访问的注册表路径和子路径 全部删除

  网络访问:不允许SAM帐户和共享的匿名枚举 启用

  网络访问:不允许为网络身份验证储存凭据或.Net passports

  帐户:重命名来宾帐户 重命名一个帐户

  (下面一项更改可能导致sqlserver不能使用)

  帐户:重命名系统管理员帐户 重命名一个帐户

  9.关闭不必要的危险服务项目。

  右键我的电脑—>管理—>服务和应用程序—>服务

  找到 Server 双击 选择启动类型——>禁用——>服务状态——>关闭

  找到 TCP/IP NetBIOS Helper 双击 选择启动类型——>禁用——>服务状态——>关闭

  找到 Workstation 双击 选择启动类型——>禁用——>服务状态——>关闭

  10.开启默认防火墙

  开启默认防火墙 将常用的端口 80 1433 3306 21 3389 等端口还有你经常使用的特殊端口添加进去 点确定。

  11.更改默认的3389远程端口

  现在有很多小工具直接可以修改的。但是也可以直接在注册表自己修改(这个要慎重,如果修改错就掉远程了)

  第一:

  [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal

  Server\Wds\rdpwd\Tds\tcp]

  PortNumber值,默认是3389,修改为自定义的端口,如6553

  第二:

  [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal

  Server\WinStations\RDP-Tcp]

  PortNumber值,默认是3389,修改为自定义的端口, 如6553

  注意:这两处的修改端口都必须一致才行。

  二、iis配置(包括网站所在目录)

  1.新建自己的网站(*注意:在应用程序设置中执行权限设为无,在需要的目录里再更改),目录不在系统盘

  注:为支持asp.net,将系统盘\Inetpub\wwwroot中的aspnet_client文件夹复制到web根目录下,并给web根目录加上users权限。

  2.删掉系统盘\inetpub目录

  3.删除不用的映射

  在"应用程序配置"里,只给必要的脚本执行权限:ASP、ASPX。

  4.为网站创建系统用户

  A.例如:网站为admin5.net,新建用户admin5.net权限为guests。然后在web站点属性里"目录安全性"---"身份验证和访问控制"里设置匿名访问使用下列Windows 用户帐户"的用户名和密码都使用admin5.net这个用户的信息。(用户名:主机名\admin5.net)

  B.给网站所在的磁盘目录添加用户admin5.net,只给读取和写入的权限。

  5.设置应用程及子目录的执行权限

  A.主应用程序目录中的"属性--应用程序设置--执行权限"设为纯脚本

  B.在不需要执行asp、asp.net的子目录中,例如上传文件目录,执行权限设为无

  6.应用程序池设置

  我的网站使用的是默认应用程序池。设置"内存回收":这里的最大虚拟内存为:1000M,最大使用的物理内存为256M,这样的设置几乎是没限制这个站点的性能的。

  回收工作进程(分钟):1440

  在下列时间回收工作进程:06:00

  三、sql server 2000 配置

  二,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注入工具都是白搭

  曾经遇过,差点抓狂,有装MSSQL的朋友,赶紧试一下,删除以下的组件.当然,前提是你要把自己的数据库搞定后再去删除,否则组件删除后很多功能不能用,为了安全,就得牺牲某些功能,当然,像我这类的,我除了把MSSQL导入后,基本上一年用不到两次,所以,我是会毫不犹豫地删除,嘿.

  一, 将有安全问题的SQL过程删除.比较全面.一切为了安全!

  删除了调用shell,注册表,COM组件的破坏权限

  MS SQL SERVER2000

  使用系统帐户登陆查询分析器

  运行以下脚本

  use master

  exec sp_dropextendedproc 'xp_cmdshell'

  exec sp_dropextendedproc 'xp_enumgroups'

  exec sp_dropextendedproc 'xp_loginconfig'

  exec sp_dropextendedproc 'xp_enumerrorlogs'

  exec sp_dropextendedproc 'xp_getfiledetails'

  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_regremovemultistring'

  exec sp_dropextendedproc 'xp_regwrite'

  drop procedure sp_makewebtask

  go

  删除所有危险的扩展.

  exec sp_dropextendedproc 'xp_cmdshell' [删除此项扩展后,将无法远程连接数据库]

  以下3个存储过程会在SQL SERVER恢复备份时被使用,非必要请勿删除

  #exec sp_dropextendedproc 'xp_dirtree' [删除此项扩展后,将无法新建或附加数据库]

  #exec sp_dropextendedproc 'Xp_regread' [删除此项扩展后, 还原数据库辅助]

  #exec sp_dropextendedproc 'xp_fixeddrives' [删除此项扩展后,将无法还原数据库]

  恢复脚本

  use master

  EXEC sp_addextendedproc xp_cmdshell ,@dllname ='xplog70.dll'

  EXEC sp_addextendedproc xp_enumgroups ,@dllname ='xplog70.dll'

  EXEC sp_addextendedproc xp_loginconfig ,@dllname ='xplog70.dll'

  EXEC sp_addextendedproc xp_enumerrorlogs ,@dllname ='xpstar.dll'

  EXEC sp_addextendedproc xp_getfiledetails ,@dllname ='xpstar.dll'

  EXEC sp_addextendedproc Sp_OACreate ,@dllname ='odsole70.dll'

  EXEC sp_addextendedproc Sp_OADestroy ,@dllname ='odsole70.dll'

  EXEC sp_addextendedproc Sp_OAGetErrorInfo ,@dllname ='odsole70.dll'

  EXEC sp_addextendedproc Sp_OAGetProperty ,@dllname ='odsole70.dll'

  EXEC sp_addextendedproc Sp_OAMethod ,@dllname ='odsole70.dll'

  EXEC sp_addextendedproc Sp_OASetProperty ,@dllname ='odsole70.dll'

  EXEC sp_addextendedproc Sp_OAStop ,@dllname ='odsole70.dll'

  EXEC sp_addextendedproc xp_regaddmultistring ,@dllname ='xpstar.dll'

  EXEC sp_addextendedproc xp_regdeletekey ,@dllname ='xpstar.dll'

  EXEC sp_addextendedproc xp_regdeletevalue ,@dllname ='xpstar.dll'

  EXEC sp_addextendedproc xp_regenumvalues ,@dllname ='xpstar.dll'

  EXEC sp_addextendedproc xp_regremovemultistring ,@dllname ='xpstar.dll'

  EXEC sp_addextendedproc xp_regwrite ,@dllname ='xpstar.dll'

  EXEC sp_addextendedproc xp_dirtree ,@dllname ='xpstar.dll'

  EXEC sp_addextendedproc xp_regread ,@dllname ='xpstar.dll'

  EXEC sp_addextendedproc xp_fixeddrives ,@dllname ='xpstar.dll'

  go

  全部复制到"SQL查询分析器"

  点击菜单上的--"查询"--"执行",就会将有安全问题的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.卸载不安全组件。

  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,和#l@$ak#.lk;0@P,修改成等长度的其它字符就可以了,ServUAdmin.exe也一样处理。

  另外注意设置Serv-U所在的文件夹的权限,不要让IIS匿名用户有读取的权限,否则人家下走你修改过的文件,照样可以分析出你的管理员名和密码。

  利用ASP漏洞攻击的常见方法及防范

  一般情况下,黑客总是瞄准论坛等程序,因为这些程序都有上传功能,他们很容易的就可以上传ASP木马,即使设置了权限,木马也可以控制当前站点的所有文件了。另外,有了木马就然后用木马上传提升工具来获得更高的权限,我们关闭shell组件的目的很大程度上就是为了防止攻击者运行提升工具。

  如果论坛管理员关闭了上传功能,则黑客会想办法获得超管密码,比如,如果你用动网论坛并且数据库忘记了改名,人家就可以直接下载你的数据库了,然后距离找到论坛管理员密码就不远了。

  作为管理员,我们首先要检查我们的ASP程序,做好必要的设置,防止网站被黑客进入。另外就是防止攻击者使用一个被黑的网站来控制整个服务器,因为如果你的服务器上还为朋友开了站点,你可能无法确定你的朋友会把他上传的论坛做好安全设置。这就用到了前面所说的那一大堆东西,做了那些权限设置和防提升之后,黑客就算是进入了一个站点,也无法破坏这个网站以外的东西。

  好了今天的讲座就先到这里,最后送各位站长一句话:最小的权限,最大的安全! 不要嫌麻烦不要疏忽大意,设置的越细心安全指数越高,我们设置密码的时候多设置一位数也许就需要黑客多话N天来破解,都是一样的道理。如果有不明白的或需要我帮助的 请联系我 我将很热心的为大家服务,谢谢大家。

最新评论

相关分类

QQ|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )

GMT+8, 2024-9-30 13:28 , Processed in 0.251683 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

返回顶部