本文目录一览:
如何设置服务器安全性来阻止webshell
Windows 2003 服务器安全设置
一、先关闭不需要的端口
我比较小心,先关了端口。只开了3389、21、80、1433,有些人一直说什么默认的3389不安全,对此我不否认,但是利用的途径也只能一个一个的穷举爆破,你把帐号改了密码设置为十五六位,我估计他要破上好几年,哈哈!办法:本地连接--属性--Internet协议(TCP/IP)--高级--选项--TCP/IP筛选--属性--把勾打上,然后添加你需要的端口即可。PS一句:设置完端口需要重新启动!
当然大家也可以更改远程连接端口方法:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE \ SYSTEM\ Current ControlSet \ Control \ Terminal Server\WinStations\RDP-Tcp]
"PortNumber"=dword:00002683
保存为.REG文件双击即可!更改为9859,当然大家也可以换别的端口,直接打开以上注册表的地址,把值改为十进制的输入你想要的端口即可!重启生效
还有一点,在2003系统里,用TCP/IP筛选里的端口过滤功能,使用FTP服务器的时候,只开放21端口,在进行FTP传输的时候,FTP 特有的Port模式和Passive模式,在进行数据传输的时候,需要动态的打开高端口,所以在使用TCP/IP过滤的情况下,经常会出现连接上后无法列出目录和数据传输的问题。所以在2003系统上增加的Windows连接防火墙能很好的解决这个问题,不推荐使用网卡的TCP/IP过滤功能。
二.关闭不需要的服务打开相应的审核策略
我关闭了以下的服务
Computer Browser 维护网络上计算机的最新列表以及提供这个列表
Task scheduler 允许程序在指定时间运行
Messenger 传输客户端和服务器之间的 NET SEND 和 警报器服务消息
Distributed File System: 局域网管理共享文件,不需要禁用
Distributed linktracking client:用于局域网更新连接信息,不需要禁用
Error reporting service:禁止发送错误报告
Microsoft Serch:提供快速的单词搜索,不需要可禁用
NTLMSecuritysupportprovide:telnet服务和Microsoft Serch用的,不需要禁用
PrintSpooler:如果没有打印机可禁用
Remote Registry:禁止远程修改注册表
Remote Desktop Help Session Manager:禁止远程协助
Workstation关闭的话远程NET命令列不出用户组
把不必要的服务都禁止掉,尽管这些不一定能被攻击者利用得上,但是按照安全规则和标准上来说,多余的东西就没必要开启,减少一份隐患。
在"网络连接"里,把不需要的协议和服务都删掉,这里只安装了基本的Internet协议(TCP/IP),由于要控制带宽流量服务,额外安装了Qos数据包计划程序。在高级tcp/ip设置里--"NetBIOS"设置"禁用tcp/IP上的NetBIOS(S)"。在高级选项里,使用"Internet连接防火墙",这是windows 2003 自带的防火墙,在2000系统里没有的功能,虽然没什么功能,但可以屏蔽端口,这样已经基本达到了一个IPSec的功能。
在运行中输入gpedit.msc回车,打开组策略编辑器,选择计算机配置-Windows设置-安全设置-审核策略在创建审核项目时需要注意的是如果审核的项目太多,生成的事件也就越多,那么要想发现严重的事件也越难当然如果审核的太少也会影响你发现严重的事件,你需要根据情况在这二者之间做出选择。
推荐的要审核的项目是:
登录事件
账户登录事件
系统事件
策略更改
对象访问
目录服务访问
特权使用
三、关闭默认共享的空连接
地球人都知道,我就不多说了!
四、磁盘权限设置
C盘只给administrators和system权限,其他的权限不给,其他的盘也可以这样设置,这里给的system权限也不一定需要给,只是由于某些第三方应用程序是以服务形式启动的,需要加上这个用户,否则造成启动不了。
Windows目录要加上给users的默认权限,否则ASP和ASPX等应用程序就无法运行。以前有朋友单独设置Instsrv和temp等目录权限,其实没有这个必要的。
另外在c:/Documents and Settings/这里相当重要,后面的目录里的权限根本不会继承从前的设置,如果仅仅只是设置了C盘给administrators权限,而在All Users/Application Data目录下会出现everyone用户有完全控制权限,这样入侵这可以跳转到这个目录,写入脚本或只文件,再结合其他漏洞来提升权限;譬如利用serv-u的本地溢出提升权限,或系统遗漏有补丁,数据库的弱点,甚至社会工程学等等N多方法,从前不是有牛人发飑说:"只要给我一个webshell,我就能拿到system",这也的确是有可能的。在用做web/ftp服务器的系统里,建议是将这些目录都设置的锁死。其他每个盘的目录都按照这样设置,每个盘都只给adinistrators权限。
另外,还将:
net.exe NET命令
cmd.exe CMD 懂电脑的都知道咯~
t
netstat.exe
regedit.exe 注册表啦大家都知道
at.exe
attrib.exe
cacls.exe ACL用户组权限设置,此命令可以在NTFS下设置任何文件夹的任何权限!偶入侵的时候没少用这个....(:
format.exe 不说了,大家都知道是做嘛的
大家都知道ASP木马吧,有个CMD运行这个的,这些如果都可以在CMD下运行..55,,估计别的没啥,format下估计就哭料~~~(:这些文件都设置只允许administrator访问。
五、防火墙、杀毒软件的安装
关于这个东西的安装其实我也说不来,反正安装什么的都有,建议使用卡巴,卖咖啡。用系统自带的防火墙,这个我不专业,不说了!大家凑合!
六、SQL2000 SERV-U FTP安全设置
SQL安全方面
1、System Administrators 角色最好不要超过两个
2、如果是在本机最好将身份验证配置为Win登陆
3、不要使用Sa账户,为其配置一个超级复杂的密码
或修改sa用户名:
update sysxlogins set name='xxxx' where sid=0x01
update sysxlogins set sid=0xE765555BD44F054F89CD0076A06EA823 where name='xxxx'
4、删除以下的扩展存储过程格式为:
use master
sp_dropextendedproc '扩展存储过程名'
xp_cmdshell:是进入操作系统的最佳捷径,删除
访问注册表的存储过程,删除
Xp_regaddmultistringXp_regdeletekeyXp_regdeletevalueXp_regenumvalues
Xp_regread Xp_regwrite Xp_regremovemultistring
OLE自动存储过程,不需要,删除
Sp_OACreate Sp_OADestroySp_OAGetErrorInfoSp_OAGetProperty
Sp_OAMethodSp_OASetPropertySp_OAStop
5、隐藏 SQL Server、更改默认的1433端口。
右击实例选属性-常规-网络配置中选择TCP/IP协议的属性,选择隐藏 SQL Server 实例,并改原默认的1433端口。
6.为数据库建立一个新的角色,禁止改角色对系统表的的select等权限,防止sql注入时利用系统表。
serv-u的几点常规安全需要设置下:
选中"Block "FTP_bounce"attack and FXP"。什么是FXP呢?通常,当使用FTP协议进行文件传输时,客户端首先向FTP服务器发出一个"PORT"命令,该命令中包含此用户的IP地址和将被用来进行数据传输的端口号,服务器收到后,利用命令所提供的用户地址信息建立与用户的连接。大多数情况下,上述过程不会出现任何问题,但当客户端是一名恶意用户时,可能会通过在PORT命令中加入特定的地址信息,使FTP服务器与其它非客户端的机器建立连接。虽然这名恶意用户可能本身无权直接访问某一特定机器,但是如果FTP服务器有权访问该机器的话,那么恶意用户就可以通过FTP服务器作为中介,仍然能够最终实现与目标服务器的连接。这就是FXP,也称跨服务器攻击。选中后就可以防止发生此种情况。
七、IIS安全设置
IIS的安全:
1、不使用默认的Web站点,如果使用也要将IIS目录与系统磁盘分开。
2、删除IIS默认创建的Inetpub目录(在安装系统的盘上)。
3、删除系统盘下的虚拟目录,如:_vti_bin、IISSamples、Scripts、IIShelp、IISAdmin、IIShelp、MSADC。
4、删除不必要的IIS扩展名映射。
右键单击“默认Web站点→属性→主目录→配置”,打开应用程序窗口,去掉不必要的应用程序映射。主要为.shtml、.shtm、 .stm。
5、更改IIS日志的路径
右键单击“默认Web站点→属性-网站-在启用日志记录下点击属性
6、如果使用的是2000可以使用iislockdown来保护IIS,在2003运行的IE6.0的版本不需要。
八、其它
1、系统升级、打操作系统补丁,尤其是IIS 6.0补丁、SQL SP3a补丁,甚至IE 6.0补丁也要打。同时及时跟踪最新漏洞补丁;
2、停掉Guest 帐号、并给guest 加一个异常复杂的密码,把Administrator改名或伪装!
3、隐藏重要文件/目录
可以修改注册表实现完全隐藏:“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\ Current-Version\Explorer\Advanced\Folder\Hi-dden\SHOWALL”,鼠标右击 “CheckedValue”,选择修改,把数值由1改为0。
4、启动系统自带的Internet连接防火墙,在设置服务选项中勾选Web服务器。
5、防止SYN洪水攻击。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
新建DWORD值,名为SynAttackProtect,值为2
6. 禁止响应ICMP路由通告报文
HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet\ Services\Tcpip\Parameters\Interfaces\interface
新建DWORD值,名为PerformRouterDiscovery 值为0。
7. 防止ICMP重定向报文的攻击
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
将EnableICMPRedirects 值设为0
8. 不支持IGMP协议
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
新建DWORD值,名为IGMPLevel 值为0。
9、禁用DCOM:
运行中输入Dcomcnfg.exe。回车,单击“控制台根节点”下的“组件服务”。打开“计算机”子文件夹。
有条件的话建议找专业做安全的公司来做!
IIS被挂马了,如何解决?
能否说明一下,你是否进行了IIS的站点用户分离设置
就是说,你是不是所有的站点都使用的IIS的默认用户,这样的话全部被挂马是很容易。
至于清除这种木马
网上搜索ClearTrojan小软件可以批量去掉那些iframe或者script挂入的木马
ASP.NET_2.0XXX是.NET2.0,不是木马。
一般情况这种挂马的webshell权限还不至于直接破坏你服务器
但如果你服务器Server-u是用系统帐号运行,或者你有网站连接SQL Server数据库用到SA用户,就非常危险了。
另外SQL server一定要打SP4,且SA不能空密码
Server-u也要设置密码,并将启动服务的帐号改为guest组用户,以防提权操作。改了以后要给server-u的用户操作server-u配置文件和网站目录的修改权限。
程序方面,要做好防注入措施
就是程序过滤提交的参数和数据,防止构造SQL
杜绝 "select * from xx where id = " Request(id)类似语句
注意上传文件,和备份数据功能所导致的上传漏洞。
对不起,没看清题目,你说的页面上没有代码
那是因为,恶意攻击者将病毒代码,放到你数据库里了
这种情况,自行编写一个WEB程序,替换掉数据库里面的恶意代码就可以了
IIS6中内置有SSI但没有XSSI,怎么办?
你在安装IIS组件时,要完全安装才行,你现在重新装一下IIS嘛,如果还是没有XSSI,就只能到网上去下一个组件来用了.网上搜一下,应该有的!
sql注入、xss攻击?
随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多。但是由于这个行业的入门门槛不高,程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQL Injection,即SQL注入。 SQL注入是从正常的WWW端口访问,而且表面看起来跟一般的Web页面访问没什么区别,所以目前市面的防火墙都不会对SQL注入发出警报,如果管理员没查看IIS日志的习惯,可能被入侵很长时间都不会发觉。 但是,SQL注入的手法相当灵活,在注入的时候会碰到很多意外的情况。能不能根据具体情况进行分析,构造巧妙的SQL语句,从而成功获取想要的数据,是高手与“菜鸟”的根本区别。 根据国情,国内的网站用ASP+Access或SQLServer的占70%以上,PHP+MySQ占L20%,其他的不足10%。在本文,我们从分入门、进阶至高级讲解一下ASP注入的方法及技巧,PHP注入的文章由NB联盟的另一位朋友zwell撰写,希望对安全工作者和程序员都有用处。了解ASP注入的朋友也请不要跳过入门篇,因为部分人对注入的基本判断方法还存在误区。大家准备好了吗?Let's Go... 入门篇 如果你以前没试过SQL注入的话,那么第一步先把IE菜单=工具=Internet选项=高级=显示友好 HTTP 错误信息前面的勾去掉。否则,不论服务器返回什么错误,IE都只显示为HTTP 500服务器错误,不能获得更多的提示信息。 第一节、SQL注入原理 以下我们从一个网站 开始(注:本文发表前已征得该站站长同意,大部分都是真实数据)。 在网站首页上,有名为“IE不能打开新窗口的多种解决方法”的链接,地址为: ,我们在这个地址后面加上单引号’,服务器会返回下面的错误提示: Microsoft JET Database Engine 错误 '80040e14' 字符串的语法错误 在查询表达式 'ID=49'' 中。 /showdetail.asp,行8 从这个错误提示我们能看出下面几点: 1.网站使用的是Access数据库,通过JET引擎连接数据库,而不是通过ODBC。 2.程序没有判断客户端提交的数据是否符合程序要求。 3.该SQL语句所查询的表中有一名为ID的字段。 从上面的例子我们可以知道,SQL注入的原理,就是从客户端提交特殊的代码,从而收集程序及服务器的信息,从而获取你想到得到的资料。 第二节、判断能否进行SQL注入 看完第一节,有一些人会觉得:我也是经常这样测试能否注入的,这不是很简单吗? 其实,这并不是最好的方法,为什么呢? 首先,不一定每台服务器的IIS都返回具体错误提示给客户端,如果程序中加了cint(参数)之类语句的话,SQL注入是不会成功的,但服务器同样会报错,具体提示信息为处理 URL 时服务器上出错。请和系统管理员联络。 其次,部分对SQL注入有一点了解的程序员,认为只要把单引号过滤掉就安全了,这种情况不为少数,如果你用单引号测试,是测不到注入点的 那么,什么样的测试方法才是比较准确呢?答案如下: ① ② and 1=1 ③ and 1=2 这就是经典的1=1、1=2测试法了,怎么判断呢?看看上面三个网址返回的结果就知道了: 可以注入的表现: ① 正常显示(这是必然的,不然就是程序有错误了) ② 正常显示,内容基本与①相同 ③ 提示BOF或EOF(程序没做任何判断时)、或提示找不到记录(判断了rs.eof时)、或显示内容为空(程序加了on error resume next) 不可以注入就比较容易判断了,①同样正常显示,②和③一般都会有程序定义的错误提示,或提示类型转换时出错。 当然,这只是传入参数是数字型的时候用的判断方法,实际应用的时候会有字符型和搜索型参数,我将在中级篇的“SQL注入一般步骤”再做分析。 第三节、判断数据库类型及注入方法 不同的数据库的函数、注入方法都是有差异的,所以在注入之前,我们还要判断一下数据库的类型。一般ASP最常搭配的数据库是Access和SQLServer,网上超过99%的网站都是其中之一。 怎么让程序告诉你它使用的什么数据库呢?来看看: SQLServer有一些系统变量,如果服务器IIS提示没关闭,并且SQLServer返回错误提示的话,那可以直接从出错信息获取,方法如下: and user0 这句语句很简单,但却包含了SQLServer特有注入方法的精髓,我自己也是在一次无意的测试中发现这种效率极高的猜解方法。让我看来看看它的含义:首先,前面的语句是正常的,重点在and user0,我们知道,user是SQLServer的一个内置变量,它的值是当前连接的用户名,类型为nvarchar。拿一个nvarchar的值跟int的数0比较,系统会先试图将nvarchar的值转成int型,当然,转的过程中肯定会出错,SQLServer的出错提示是:将nvarchar值 ”abc” 转换数据类型为 int 的列时发生语法错误,呵呵,abc正是变量user的值,这样,不废吹灰之力就拿到了数据库的用户名。在以后的篇幅里,大家会看到很多用这种方法的语句。 顺便说几句,众所周知,SQLServer的用户sa是个等同Adminstrators权限的角色,拿到了sa权限,几乎肯定可以拿到主机的Administrator了。上面的方法可以很方便的测试出是否是用sa登录,要注意的是:如果是sa登录,提示是将”dbo”转换成int的列发生错误,而不是”sa”。 如果服务器IIS不允许返回错误提示,那怎么判断数据库类型呢?我们可以从Access和SQLServer和区别入手,Access和SQLServer都有自己的系统表,比如存放数据库中所有对象的表,Access是在系统表[msysobjects]中,但在Web环境下读该表会提示“没有权限”,SQLServer是在表[sysobjects]中,在Web环境下可正常读取。 在确认可以注入的情况下,使用下面的语句: and (select count(*) from sysobjects)0 and (select count(*) from msysobjects)0 如果数据库是SQLServer,那么第一个网址的页面与原页面 是大致相同的;而第二个网址,由于找不到表msysobjects,会提示出错,就算程序有容错处理,页面也与原页面完全不同。 如果数据库用的是Access,那么情况就有所不同,第一个网址的页面与原页面完全不同;第二个网址,则视乎数据库设置是否允许读该系统表,一般来说是不允许的,所以与原网址也是完全不同。大多数情况下,用第一个网址就可以得知系统所用的数据库类型,第二个网址只作为开启IIS错误提示时的验证
IIS 如何防止代码注入?
如果你的服务器是虚空间,要治本只能找虚空间的管理员。如果是自己管理的服务器,可以参照下面的办法—— (以下说的是Windows服务器的):
1、赶紧改系统管理员administrator的密码,另建一个管理员账号。密码都尽量设得复杂一点。
2、删除除了上述两个管理员账号及Web服务器用的IUSR_?和IWAM_?外的其它账号
3、服务器上安装杀毒软件,升级到最新版本,全面杀毒杀马。注意停止服务器上所有无关的服务和驱动。其中有一些没有公司签名的,可能就是病毒的。关于怎么彻底清理病毒和木马,这里就不详细说明了。
4、用Windows Update补齐所有系统补丁。
5、如果是XP或2003系统,启用自带的防火墙,将除了80端口和你远程登陆端口外的所有端口,禁止ICMP访问。
6、如果你的网站有动态网页,数据库用的是MS SQL, 需要特别注意防止SQL Injection,要点如下(更详细的请自行查数据):
a 将MS SQL Server的xp_cmdshell扩展存储删掉
b 减小你动态网页中连接数据库的那个账号在数据库系统中的访问权限
c 仔细检查你的每个动态网页,确保每个输入(包括URL中的参数)都进行了检查,过滤掉了「’-;」等非法字符
如果是access数据库,要防止access库文件被人下载更换再传上来。
7、修改你数据库中各主要账号的密码。比如sa 动态网页的连接账号等
8、注意IIS的安全配置
a 删掉IIS安装时那个缺省网站,删掉pinters等虚拟目录
b 停止IIS带你ftp和smtp
c 配置较详细的日志记录
d 禁用脚本调试和向客户端发送详细调试信息
9、注意你用于文件上传的ftp服务器的安全(查看你所用ftp服务器的有关安全资料)
10、随时注意检查系统的登录信息(事件查看器)和IIS日志
详情做法可参考
如果多少收到这样的情况,建议服务端启用windows防火墙除外,还安装好一个ARP防火墙比较好,这是因为机房中也是一个大的局域网,小一点来看,机柜之间也是局域网,以被勉同机柜的主机,影响到你自已。