wcf服务器安全设置 wcf服务库
WCF服务编程一书中写到:契约操作不能使用引用对象参数,只允许使用基本类型或者数据契约?
在过程调用中传递了一个无效参数。这可能是由于参数超出范围,或包含无效数据。另外,有可能在不适当的时间对过程进行了调用。要纠正该错误验证传递给过程的参数是有效的。验证在适当的时间调用函数。溢出试图赋给变量的赋值太大,这是因为:赋值,计算或者数据类型转换结果很大以至于不能代表此种类型变量值的范围。属性赋值超出了属性所能接受的最大值。整数类型数字的计算结果大于一个整数。要纠正该错误将值赋给一个较大取值范围的变量类型。确保赋值符合属性范围。内存不足分配与该计算机有效内存一样多的内存。这可能是一个动态分配数组增长得太大,或者是对象实例数目过多。要纠正该错误使用Erase语句来重新分配动态数组的储存空间。使用ReDim语句来重新分配储存空间。关闭任何已经打开、不必需的应用程序,文件或者源文件。下标越界要访问的数组中元素数目比期望的少。例如试图从一个定义为10个元素的数组中访问到11个元素。.要纠正该错误确保你的代码中包含检察元素是否越界的边界。重新定义一个更大的数组大小至需要的维数。该数组为定长的或者临时被锁定试图用ReDim函数来改变一个定长数组的元素数目。动态数组或者Variant变量内的数组可以被暂时的锁定。要纠正该错误如果在过程内部定义数组,用ReDim函数将其从静态变为动态。如果在模块水平上说明数组,不要指定数组中元素的数目。被零除创建一个试图将数字被零除的表达式。被零除得到无穷大(不可用)结果。要纠正该错误检查表达式的输入或大小写错误。类型不匹配试图比较不相容数据类型的值。例如,比较一个字符串和一个数值。要纠正该错误当进行比较时,要确保数据类型相同。用一个的数据类型来计算另一个的值,然后重新比较。字符串空间溢出试图创建字符串对象时系统内存被用尽。这可能是因为动态分配数组越来越大或对象实例的数目过大。要纠正该错误使用Erase语句来重新分配动态数组的储存空间。使用ReDim语句来重新分配储存空间。关闭任何已经打开、不必需的应用程序,文件或者源文件无法执行请求的操作当主机使脚本引擎中断时无法继续执行脚本。主机未指定明确的返回错误代码。要纠正该错误该错误的解决与主机有关。堆栈溢出过程嵌套太深。每次代码从一个过程跳到另一个过程,本地变量的内容被放到堆栈中。堆栈是一个大小随着要求执行的脚本动态增长和缩小的内存工作区域。要纠正该错误检查没有嵌套很深的过程。确保递归(重入)过程没有经常的调用自身。确保递归过程被正常终止。未定义Sub或Function试图调用一个不存在的过程。要纠正该错误检查过程的拼写确保输入正确。加载DLL错误应用程序引用了一个无法找到的DLL,一个DLL可能引用了另一个无法找到的DLL。要纠正该错误确保DLL存在。使用全路径名引用DLL。获得被引用的DLL并使其对其他DLL有效。内部错误发生内部错误。要纠正该错误除非这是由Raise方法产生,请与微软产品服务联系报告出现错误消息的情况。未设置对象变量试图使用无效对象的对象属性。如果遗漏了Set语句,将在对象引用产生错误。要纠正该错误为对象变量指定一个引用。For循环未初始化在脚本中执行跳到ForNext循环中间的结果。由于ForNext循环计数必须被初始化所以产生错误。下面演示了一个ForNext循环的正确结构。Forcounter=startToend[Stepstep][statements][ExitFor][statements]Next要纠正该错误移去跳转至ForNext循环的语句。确保ForNext循环包含了所有必须的部分。非法使用Null试图获得一个为Null的Variant变量的值。你只能获得包含有效值的Variant变量的值。Null是一个Variant一个用来指示一个数据项不包含任何有效数据的子类型。要纠正该错误确保变量包含有效数据。需要对象提供的对象无效(或无法认为是一个对象)。对属性和方法的引用需要一个显式的对象限定符。要纠正该错误提供一个对象限定符。检查对象限定符的拼写。ActiveX部件无法创建对象由于对象类未在系统注册表中注册或者是一个或多个相关的动态链接库无效(DLLs),VB5.5运行时无法初始化对象。另外一种可能情况是,由于未找到或是已经损坏,对象所需的DLL不可用。要纠正该错误确保所有相关的DLLs有效。例如,数据存取对象(DAO)所需的DLLs在不同的平台下是不同的。你可能不得不返回到安装程序查找该对象。InternetExplorer可能试图创建对象,但是在InternetExplorer中没有正确的安全许可。重置InternetExplorer安全设置并重试。类不支持自动化试图操作一个并不支持自动化的对象属性或方法。可以创建并将指针传递给不支持自动化的对象,但是不能获取它的属性和方法。要纠正该错误查创建对象应用程序的文档中关于该类自动化使用的限制。注意对象可能已经通过使用CreateObject被创建,但可能已经通过主机对象模型被引入。在自动化操作中未找到文件名或类名使用GetObject函数,但是将一个不可识别的类或文件名作为参数。GetObject函数要求包含要获取的对象的文件的完整的路径和名称,或者是在系统中注册过的类名称。要纠正该错误检查名称的拼写错误,然后重试。确保class参数的名称与在系统中注册的相匹配。对象不支持该属性或方法对该自动化对象指定了一个并不存在的属性或方法。不是所有的对象都支持所有的属性和方法。要纠正该错误检查属性和方法以确保没有打字错误。参见对象的文档获取的信息。对象不支持此操作试图引用该对象不支持的一个方法或属性。不是所有的对象支持所用的操作。要纠正该错误检查属性和方法以确保没有打字错误。参见对象的文档获取的信息。对象不支持当前的区域设置试图操作一个不支持当前区域设置的对象。区域设置是和给定语言以及国家/地区相对应的一系列信息。本地影响预定义程序项的语言和本地特定设置。以下两种情况时本地信息很重要:codelocale影响语言项例如关键词,并且定义本地特定设置例如小数和列表分割符,日期格式和字符排列顺序。systemlocale影响本地相关的功能执行。例如,当显示数字或者将字符串转换为日期时。使用操作系统提供的控制面板工具来设定系统。要纠正该错误检查对象支持的区域设置。未找到命名参数调用一个过程并指定一个特别的参数,但是过程未被定义为接受以为名称的参数。除非在过程定义中出现,一个命名参数不能在过程调用中使用。要纠正该错误检查参数名称是否正确拼写,然后再试着调用过程。参数不可选调用过程但是参数数量错误。传递给过程的参数的数量必须与过程定义的参数数量相同。要纠正该错误检查函数符号确保提供了所有必须的参数。错误的参数个数或无效的参数属性值调用过程时如果:错误的过程名称,或者,过程中参数数目错误,或者,参数类型错误。传递给过程的参数数目必须与过程定义中的参数数目相符。要纠正该错误检查以确保传递给过程的参数列表与过程定义或声明中的相符。对象不是一个集合试图对一个不是Collection类型的对象进行只对Collection对象有效的操作。有些属性、方法和操作仅可应用于Collection对象。Collection对象是包含一组互相关联的对象的一种对象。一旦集合中发生了改变,一个对象在Collection对象中的位置也会发生改变;因此,Collection对象中的任何一个对象的位置都可能变化。要纠正该错误检查对象或属性名称的拼写。验证对象是一个Collection对象。查看用来向集合中添加该对象的Add方法,确保语法正确且任何标识符的拼写都正确。变量使用了VB不支持的自动化类型试图使用类型库或者对象库中不被支持的数据类型,任何一门编程语言都不能使用类型库或对象库中的所有变量。要纠正该错误只使用VB识别的变量类型。远程服务器不存在或者不能访问用CreateObject函数来建立一个远程机器的对象,但是调用失败,这是因为无法访问远程服务器或者没有包含特定的类。要纠正该错误检验远程服务器的名字是否正确。检验远程服务器的DCOM可用。使用dcomcnfg验证安全权限是否允许建立对象。无效图片试图加载一个无法识别格式的图像。有效格式包括位图(*.bmp),图标(*.ico),以及Windows元文件(*.wmf)。要纠正该错误确保要加载的图像文件的格式是有效的。变量未定义在脚本开始处用OptionExplicit语句,后来又使用一个未被说明的变量名称。当使用OptionExplicit语句时,必须用Dim,Private,Public或者ReDim语句显式地说明所有的变量。要纠正该错误使用OptionExplicit语句时,确保用Dim,Private,Public,OrReDim语句定义了所有的变量。脚本对象不安全试图使用未被标识为脚本安全的对象。对象创建是否安全由主机决定。总的来说,允许不信任脚本进行有害操作(例如操作硬盘)的对象是不安全的。例如,使用作为客户端的MicrosoftInternetExplorer运行FileingObject是不安全的,但是可以在带有WindowsHost的本地机器使用该对象。要纠正该错误确保在使用一个安全的对象。与对象开发者联系看是否为安全版本。阅读对象文档发现该对象是否安全。对象不能安全初始化试图使用未被标识为初始化安全的对象。对象创建是否安全由主机决定。总的来说,允许不信任脚本进行有害操作(例如操作硬盘)的对象是不安全的。例如,使用作为客户端的MicrosoftInternetExplorer运行FileingObject是不安全的,但是可以在带有WindowsHost的本地机器使用该对象。要纠正该错误确保在使用一个安全的对象。与对象开发者联系看是否为安全版本。阅读对象文档发现该对象是否安全。对象不能安全创建试图使用一个未被标识为安全创建的对象。对象创建是否安全由主机决定。总的来说,允许不信任脚本进行有害操作(例如操作硬盘)的对象是不安全的。例如,使用作为客户端的MicrosoftInternetExplorer运行FileingObject是不安全的,但是可以在带有WindowsHost的本地机器使用该对象。要纠正该错误确保在使用一个安全的对象。与对象开发者联系看是否为安全版本。阅读对象文档发现该对象是否安全。无效或不合格的引用试图对不止一个对象使用With语句。With语句只能被非空对象使用。下面演示了一个With块的正确结构。Withobject statementsEndWith要纠正该错误为With语句指定一个对象。类未定义引用未定义(通过New或Set语句)的类。要纠正该错误确保在引用类之前已经定义。发生异常脚本调用COM对象,然后产生异常。要纠正该错误除非该调用由Raise方法产生,请与产生错误的CM对象开发人员联系。请与微软产品服务联系报告出现错误消息的情况。正则表达式中的语法错误搜索字符串的结构违背了VB正则表达式中的一个或多个语法规则。要纠正该错误保证常规的搜索字符串的表达式符合Perlde的表达语法。错误的数量词当构造正则表达式的搜索模式时,没有正确的说明匹配的字符串。要纠正该错误确保搜索模式是正确构造的。在正则表达式中需要']'试图为正则表达式匹配创建一个字符类,但未包含右括号。将单独的字符组合放到方括号里可以将其装配到字符类中。例如,/[abc]/匹配字母“a”,“b”,或“c”中任意一个。要纠正该错误在正则表达式中添加右括号。在正则表达式中需要')'试图创建常规的嵌套表达式,但未包含“)”。在正则表达式中括号有几个目的。首先,它将分离的项组成为单个子表达式,所以项目可以通过*,+,?等等来当作一个单元来处理。要纠正该错误在常规的嵌套表达式中添加右(闭)括号“)”。字符集越界试图使用无效字符创建正则表达式。正则表达式是由字母数字和元字符组成的。要纠正该错误仅仅使用有效正则表达式字符来组成正则表达式。求采纳为满意回答。
创新互联主营齐河网站建设的网络公司,主营网站建设方案,APP应用开发,齐河h5重庆小程序开发搭建,齐河网站营销推广欢迎齐河等地区企业咨询
装一个windows2000服务版做服务器/安全方面需要怎么设置,。还有怎么关一些没用的 端口
原理篇
我们将从入侵者入侵的各个环节来作出对应措施
一步步的加固windows系统.
加固windows系统.一共归于几个方面
1.端口限制
2.设置ACL权限
3.关闭服务或组件
4.包过滤
5.审计
我们现在开始从入侵者的第一步开始.对应的开始加固已有的windows系统.
1.扫描
这是入侵者在刚开始要做的第一步.比如搜索有漏洞的服务.
对应措施:端口限制
以下所有规则.都需要选择镜像,否则会导致无法连接
我们需要作的就是打开服务所需要的端口.而将其他的端口一律屏蔽
2.下载信息
这里主要是通过URL SCAN.来过滤一些非法请求
对应措施:过滤相应包
我们通过安全URL SCAN并且设置urlscan.ini中的DenyExtensions字段
来阻止特定结尾的文件的执行
3.上传文件
入侵者通过这步上传WEBSHELL,提权软件,运行cmd指令等等.
对应措施:取消相应服务和功能,设置ACL权限
如果有条件可以不使用FSO的.
通过 regsvr32 /u c:\windows\system32\scrrun.dll来注销掉相关的DLL.
如果需要使用.
那就为每个站点建立一个user用户
对每个站点相应的目录.只给这个用户读,写,执行权限,给administrators全部权限
安装杀毒软件.实时杀除上传上来的恶意代码.
个人推荐MCAFEE或者卡巴斯基
如果使用MCAFEE.对WINDOWS目录所有添加与修改文件的行为进行阻止.
4.WebShell
入侵者上传文件后.需要利用WebShell来执行可执行程序.或者利用WebShell进行更加方便的文件操作.
对应措施:取消相应服务和功能
一般WebShell用到以下组件
WScript.Network
WScript.Network.1
WScript.Shell
WScript.Shell.1
Shell.Application
Shell.Application.1
我们在注册表中将以上键值改名或删除
同时需要注意按照这些键值下的CLSID键的内容
从/HKEY_CLASSES_ROOT/CLSID下面对应的键值删除
5.执行SHELL
入侵者获得shell来执行更多指令
对应措施:设置ACL权限
windows的命令行控制台位于\WINDOWS\SYSTEM32\CMD.EXE
我们将此文件的ACL修改为
某个特定管理员帐户(比如administrator)拥有全部权限.
其他用户.包括system用户,administrators组等等.一律无权限访问此文件.
6.利用已有用户或添加用户
入侵者通过利用修改已有用户或者添加windows正式用户.向获取管理员权限迈进
对应措施:设置ACL权限.修改用户
将除管理员外所有用户的终端访问权限去掉.
限制CMD.EXE的访问权限.
限制SQL SERVER内的XP_CMDSHELL
7.登陆图形终端
入侵者登陆TERMINAL SERVER或者RADMIN等等图形终端,
获取许多图形程序的运行权限.由于WINDOWS系统下绝大部分应用程序都是GUI的.
所以这步是每个入侵WINDOWS的入侵者都希望获得的
对应措施:端口限制
入侵者可能利用3389或者其他的木马之类的获取对于图形界面的访问.
我们在第一步的端口限制中.对所有从内到外的访问一律屏蔽也就是为了防止反弹木马.
所以在端口限制中.由本地访问外部网络的端口越少越好.
如果不是作为MAIL SERVER.可以不用加任何由内向外的端口.
阻断所有的反弹木马.
8.擦除脚印
入侵者在获得了一台机器的完全管理员权限后
就是擦除脚印来隐藏自身.
对应措施:审计
首先我们要确定在windows日志中打开足够的审计项目.
如果审计项目不足.入侵者甚至都无需去删除windows事件.
其次我们可以用自己的cmd.exe以及net.exe来替换系统自带的.
将运行的指令保存下来.了解入侵者的行动.
对于windows日志
我们可以通过将日志发送到远程日志服务器的方式来保证记录的完整性.
evtsys工具()
提供将windows日志转换成syslog格式并且发送到远程服务器上的功能.
使用此用具.并且在远程服务器上开放syslogd,如果远程服务器是windows系统.
推荐使用kiwi syslog deamon.
我们要达到的目的就是
不让入侵者扫描到主机弱点
即使扫描到了也不能上传文件
即使上传文件了不能操作其他目录的文件
即使操作了其他目录的文件也不能执行shell
即使执行了shell也不能添加用户
即使添加用户了也不能登陆图形终端
即使登陆了图形终端.拥有系统控制权.他的所作所为还是会被记录下来.
额外措施:
我们可以通过增加一些设备和措施来进一步加强系统安全性.
1.代理型防火墙.如ISA2004
代理型防火墙可以对进出的包进行内容过滤.
设置对HTTP REQUEST内的request string或者form内容进行过滤
将SELECT.DROP.DELETE.INSERT等都过滤掉.
因为这些关键词在客户提交的表单或者内容中是不可能出现的.
过滤了以后可以说从根本杜绝了SQL 注入
2.用SNORT建立IDS
用另一台服务器建立个SNORT.
对于所有进出服务器的包都进行分析和记录
特别是FTP上传的指令以及HTTP对ASP文件的请求
可以特别关注一下.
本文提到的部分软件在提供下载的RAR中包含
包括COM命令行执行记录
URLSCAN 2.5以及配置好的配置文件
IPSEC导出的端口规则
evtsys
一些注册表加固的注册表项.
实践篇
下面我用的例子.将是一台标准的虚拟主机.
系统:windows2003
服务:[IIS] [SERV-U] [IMAIL] [SQL SERVER 2000] [PHP] [MYSQL]
描述:为了演示,绑定了最多的服务.大家可以根据实际情况做筛减
1.WINDOWS本地安全策略 端口限制
A.对于我们的例子来说.需要开通以下端口
外-本地 80
外-本地 20
外-本地 21
外-本地 PASV所用到的一些端口
外-本地 25
外-本地 110
外-本地 3389
然后按照具体情况.打开SQL SERVER和MYSQL的端口
外-本地 1433
外-本地 3306
B.接着是开放从内部往外需要开放的端口
按照实际情况,如果无需邮件服务,则不要打开以下两条规则
本地-外 53 TCP,UDP
本地-外 25
按照具体情况.如果无需在服务器上访问网页.尽量不要开以下端口
本地-外 80
C.除了明确允许的一律阻止.这个是安全规则的关键.
外-本地 所有协议 阻止
2.用户帐号
a.将administrator改名,例子中改为root
b.取消所有除管理员root外所有用户属性中的
远程控制-启用远程控制 以及
终端服务配置文件-允许登陆到终端服务器
c.将guest改名为administrator并且修改密码
d.除了管理员root,IUSER以及IWAM以及ASPNET用户外.禁用其他一切用户.包括SQL DEBUG以及TERMINAL USER等等
3.目录权限
将所有盘符的权限,全部改为只有
administrators组 全部权限
system 全部权限
将C盘的所有子目录和子文件继承C盘的administrator(组或用户)和SYSTEM所有权限的两个权限
然后做如下修改
C:\Program Files\Common Files 开放Everyone 默认的读取及运行 列出文件目录 读取三个权限
C:\WINDOWS\ 开放Everyone 默认的读取及运行 列出文件目录 读取三个权限
C:\WINDOWS\Temp 开放Everyone 修改,读取及运行,列出文件目录,读取,写入权限
现在WebShell就无法在系统目录内写入文件了.
当然也可以使用更严格的权限.
在WINDOWS下分别目录设置权限.
可是比较复杂.效果也并不明显.
4.IIS
在IIS 6下.应用程序扩展内的文件类型对应ISAPI的类型已经去掉了IDQ,PRINT等等危险的脚本类型,
在IIS 5下我们需要把除了ASP以及ASA以外所有类型删除.
安装URLSCAN
在[DenyExtensions]中
一般加入以下内容
.cer
.cdx
.mdb
.bat
.cmd
.com
.htw
.ida
.idq
.htr
.idc
.shtm
.shtml
.stm
.printer
这样入侵者就无法下载.mdb数据库.这种方法比外面一些在文件头加入特殊字符的方法更加彻底.
因为即便文件头加入特殊字符.还是可以通过编码构造出来的
5.WEB目录权限
作为虚拟主机.会有许多独立客户
比较保险的做法就是为每个客户,建立一个windows用户
然后在IIS的响应的站点项内
把IIS执行的匿名用户.绑定成这个用户
并且把他指向的目录
权限变更为
administrators 全部权限
system 全部权限
单独建立的用户(或者IUSER) 选择高级-打开除 完全控制,遍历文件夹/运行程序,取得所有权 3个外的其他权限.
如果服务器上站点不多.并且有论坛
我们可以把每个论坛的上传目录
去掉此用户的执行权限.
只有读写权限
这样入侵者即便绕过论坛文件类型检测上传了webshell
也是无法运行的.
6.MS SQL SERVER2000
使用系统帐户登陆查询分析器
运行以下脚本
use master
exec sp_dropextendedproc 'xp_cmdshell'
exec sp_dropextendedproc 'xp_dirtree'
exec sp_dropextendedproc 'xp_enumgroups'
exec sp_dropextendedproc 'xp_fixeddrives'
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_regread'
exec sp_dropextendedproc 'Xp_regremovemultistring'
exec sp_dropextendedproc 'Xp_regwrite'
drop procedure sp_makewebtask
go
删除所有危险的扩展.
7.修改CMD.EXE以及NET.EXE权限
将两个文件的权限.修改到特定管理员才能访问,比如本例中.我们如下修改
cmd.exe root用户 所有权限
net.exe root用户 所有权现
这样就能防止非法访问.
还可以使用例子中提供的comlog程序
将com.exe改名_com.exe,然后替换com文件.这样可以记录所有执行的命令行指令
8.备份
使用ntbackup软件.备份系统状态.
使用reg.exe 备份系统关键数据
如reg export HKLM\SOFTWARE\ODBC e:\backup\system\odbc.reg /y
来备份系统的ODBC
9.杀毒
这里介绍MCAFEE 8i 中文企业版
因为这个版本对于国内的许多恶意代码和木马都能够及时的更新.
比如已经能够检测到海阳顶端2006
而且能够杀除IMAIL等SMTP软件使用的队列中MIME编码的病毒文件
而很多人喜欢安装诺顿企业版.而诺顿企业版,对于WEBSHELL.基本都是没有反应的.
而且无法对于MIME编码的文件进行杀毒.
在MCAFEE中.
我们还能够加入规则.阻止在windows目录建立和修改EXE.DLL文件等
我们在软件中加入对WEB目录的杀毒计划.
每天执行一次
并且打开实时监控.
10.关闭无用的服务
我们一般关闭如下服务
Computer Browser
Help and Support
Messenger
Print Spooler
Remote Registry
TCP/IP NetBIOS Helper
如果服务器不用作域控,我们也可以禁用
Workstation
11.取消危险组件
如果服务器不需要FSO
regsvr32 /u c:\windows\system32\scrrun.dll
注销组件
使用regedit
将/HKEY_CLASSES_ROOT下的
WScript.Network
WScript.Network.1
WScript.Shell
WScript.Shell.1
Shell.Application
Shell.Application.1
键值改名或删除
将这些键值下CLSID中包含的字串
如{72C24DD5-D70A-438B-8A42-98424B88AFB8}
到/HKEY_CLASSES_ROOT/CLSID下找到以这些字串命名的键值
全部删除
12.审计
本地安全策略-本地策略-审核策略
打开以下内容
审核策略更改 成功,失败
审核系统事件 成功,失败
审核帐户登陆事件 成功,失败
审核帐户管理 成功,失败
其实,在服务器的安全设置方面,我虽然有一些经验,但是还谈不上有研究,所以我写这篇文章的时候心里很不踏实,总害怕说错了会误了别人的事。
本文更侧重于防止ASP漏洞攻击,所以服务器防黑等方面的讲解可能略嫌少了点。
基本的服务器安全设置
安装补丁
安装好操作系统之后,最好能在托管之前就完成补丁的安装,配置好网络后,如果是2000则确定安装上了SP4,如果是2003,则最好安装上SP1,然后点击开始→Windows update,安装所有的关键更新。
安装杀毒软件
虽然杀毒软件有时候不能解决问题,但是杀毒软件避免了很多问题。
不要指望杀毒软件杀掉所有的木马,因为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来运行更高权限的系统程序。
卸载最不安全的组件
最简单的办法是直接卸载后删除相应的程序文件。将下面的代码保存为一个.BAT文件,( 以下均以 WIN2000 为例,如果使用2003,则系统文件夹应该是 C:\WINDOWS\ )
Quoted from Unkown:
regsvr32/u C:\WINNT\System32\wshom.ocx
del C:\WINNT\System32\wshom.ocx
regsvr32/u C:\WINNT\system32\shell32.dll
del C:\WINNT\system32\shell32.dll
然后运行一下,WScript.Shell, Shell.application, WScript.Network就会被卸载了。可能会提示无法删除文件,不用管它,重启一下服务器,你会发现这三个都提示"×安全"了。
改名不安全组件
需要注意的是组件的名称和Clsid都要改,并且要改彻底了。下面以Shell.application为例来介绍方法。
打开注册表编辑器【开始→运行→regedit回车】,然后【编辑→查找→填写Shell.application→查找下一个】,用这个方法能找到两个注册表项:"{13709620-C279-11CE-A49E-444553540000}"和"Shell.application"。为了确保万无一失,把这两个注册表项导出来,保存为 .reg 文件。
比如我们想做这样的更改
13709620-C279-11CE-A49E-444553540000 改名为 13709620-C279-11CE-A49E-444553540001
Shell.application 改名为 Shell.application_ajiang
那么,就把刚才导出的.reg文件里的内容按上面的对应关系替换掉,然后把修改好的.reg文件导入到注册表中(双击即可),导入了改名后的注册表项之后,别忘记了删除原有的那两个项目。这里需要注意一点,Clsid中只能是十个数字和ABCDEF六个字母。
下面是我修改后的代码(两个文件我合到一起了):
Quoted from Unkown:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\CLSID\{13709620-C279-11CE-A49E-444553540001}]
@="Shell Automation Service"
[HKEY_CLASSES_ROOT\CLSID\{13709620-C279-11CE-A49E-444553540001}\InProcServer32]
@="C:\\WINNT\\system32\\shell32.dll"
"ThreadingModel"="Apartment"
[HKEY_CLASSES_ROOT\CLSID\{13709620-C279-11CE-A49E-444553540001}\ProgID]
@="Shell.Application_ajiang.1"
[HKEY_CLASSES_ROOT\CLSID\{13709620-C279-11CE-A49E-444553540001}\TypeLib]
@="{50a7e9b0-70ef-11d1-b75a-00a0c90564fe}"
[HKEY_CLASSES_ROOT\CLSID\{13709620-C279-11CE-A49E-444553540001}\Version]
@="1.1"
[HKEY_CLASSES_ROOT\CLSID\{13709620-C279-11CE-A49E-444553540001}\VersionIndependentProgID]
@="Shell.Application_ajiang"
[HKEY_CLASSES_ROOT\Shell.Application_ajiang]
@="Shell Automation Service"
[HKEY_CLASSES_ROOT\Shell.Application_ajiang\CLSID]
@="{13709620-C279-11CE-A49E-444553540001}"
[HKEY_CLASSES_ROOT\Shell.Application_ajiang\CurVer]
@="Shell.Application_ajiang.1"
你可以把这个保存为一个.reg文件运行试一下,但是可别就此了事,因为万一黑客也看了我的这篇文章,他会试验我改出来的这个名字的。
防止列出用户组和系统进程
我在阿江ASP探针1.9中结合7i24的方法利用getobject("WINNT")获得了系统用户和系统进程的列表,这个列表可能会被黑客利用,我们应当隐藏起来,方法是:
【开始→程序→管理工具→服务】,找到Workstation,停止它,禁用它。
防止Serv-U权限提升
其实,注销了Shell组件之后,侵入者运行提升工具的可能性就很小了,但是prel等别的脚本语言也有shell能力,为防万一,还是设置一下为好。
用Ultraedit打开ServUDaemon.exe查找Ascii:LocalAdministrator,和#l@$ak#.lk;0@P,修改成等长度的其它字符就可以了,ServUAdmin.exe也一样处理。
另外注意设置Serv-U所在的文件夹的权限,不要让IIS匿名用户有读取的权限,否则人家下走你修改过的文件,照样可以分析出你的管理员名和密码。
利用ASP漏洞攻击的常见方法及防范
一般情况下,黑客总是瞄准论坛等程序,因为这些程序都有上传功能,他们很容易的就可以上传ASP木马,即使设置了权限,木马也可以控制当前站点的所有文件了。另外,有了木马就然后用木马上传提升工具来获得更高的权限,我们关闭shell组件的目的很大程度上就是为了防止攻击者运行提升工具。
如果论坛管理员关闭了上传功能,则黑客会想办法获得超管密码,比如,如果你用动网论坛并且数据库忘记了改名,人家就可以直接下载你的数据库了,然后距离找到论坛管理员密码就不远了。
作为管理员,我们首先要检查我们的ASP程序,做好必要的设置,防止网站被黑客进入。另外就是防止攻击者使用一个被黑的网站来控制整个服务器,因为如果你的服务器上还为朋友开了站点,你可能无法确定你的朋友会把他上传的论坛做好安全设置。这就用到了前面所说的那一大堆东西,做了那些权限设置和防提升之后,黑客就算是进入了一个站点,也无法破坏这个网站以外的东西。
后记
也许有安全高手或者破坏高手看了我的文章会嘲笑或者窃喜,但我想我的经验里毕竟还是存在很多正确的地方,有千千万万的比我知道的更少的人像我刚开始完全不懂的时候那样在渴求着这样一篇文章,所以我必须写,我不管别人怎么说我,我也不怕后世会有千千万万的人对我唾骂,我一个人承担下来,我也没有娘子需要交代的……
因为这其实只是抛砖引玉的做法,从别人的笑声中,我和我的读者们都可以学到更多有用的东西。
如何保证wcf rest 服务的调用安全性
[DataContract(Namespace=".artech.com/")]
2: public class Employee
3: {
4: [DataMember]
5: public string Id { get; set; }
6:
7: [DataMember]
8: public string Name { get; set; }
9:
10: [DataMember]
11: public string Department { get; set; }
12:
13: [DataMember]
14: public string Grade { get; set; }
15:
16: public override string ToString()
17: {
18: return string.Format("ID: {0,-5}姓名: {1, -5}级别: {2, -4} 部门: {3}",Id, Name, Grade, Department);
19: }
20: }
centos7 服务器基本的安全设置步骤
关闭ping扫描,虽然没什么卵用
先切换到root
echo 1 /proc/sys/net/ipv4/icmp_echo_ignore_all
1代表关闭
0代表开启
用iptables
iptables -I INPUT -p icmp -j DROP
简单介绍下基本的 dedecms _aq/' target='_blank'安全设置
一、创建普通用户,禁止root登录,只允许普通用户使用su命令切换到root
这样做的好处是双重密码保护,黑客就算知道了普通用户的密码,如果没有root密码,对服务器上攻击也比较有限
以下是具体做法(需要在root下)
添加普通用户
useradd xxx
设置密码
passwd xxx
这样就创建好了一个普通用户
禁止root登录
vi /etc/ssh/sshd_config
PermitRootLogin no
Systemctl restart sshd
这样就完成了第一步,之后root就无法登录服务器只能通过普通用户su切换
二、修改ssh的默认端口22,因为ssh的端口是22,我们如果修改了该端口,他们就需要花费一点时间来扫描,稍微增加了点难度
以下将端口改为51866可以根据需要自己更改,最好选择10000-65535内的端口
step1 修改/etc/ssh/sshd_config
vi /etc/ssh/sshd_config
#Port 22 //这行去掉#号
Port 51866 //下面添加这一行
为什么不先删除22,以防其他端口没配置成功,而又把22的删除了,无法再次进入服务器
step2 修改SELinux
安装semanage
$ yum provides semanage
$ yum -y install policycoreutils-python
使用以下命令查看当前SElinux 允许的ssh端口:
semanage port -l | grep ssh
添加51866端口到 SELinux
semanage port -a -t ssh_port_t -p tcp 51866
注:操作不成功,可以参考:
失败了话应该是selinux没有打开
然后确认一下是否添加进去
semanage port -l | grep ssh
如果成功会输出
ssh_port_t tcp 51866, 22
step3 重启ssh
systemctl restart sshd.service
查看下ssh是否监听51866端口
netstat -tuln
Step4 防火墙开放51866端口
firewall-cmd --permanent --zone=public --add-port=51866/tcp
firewall-cmd --reload
然后测试试试,能不能通过51866登录,若能登录进来,说明成功,接着删除22端口
vi /etc/ssh/sshd_config
删除22端口 wq
systemctl restart sshd.service
同时防火墙也关闭22端口
firewall-cmd --permanent --zone=public --remove-port=22/tcp
注意如果是使用阿里的服务器需要到阿里里面的安全组添加新的入站规则(应该是因为阿里的服务器是用的内网,需要做端口映射)
三、使用一些类似DenyHosts预防SSH暴力破解的软件(不详细介绍)
其实就是一个python脚本,查看非法的登录,次数超过设置的次数自动将ip加入黑名单。
四、使用云锁(不详细介绍)
参考自
总的来说做好了前两步能够减少至少百分之五十的入侵,在做好第三步之后,基本可以杜绝百分之八十以上的入侵。当然最重要的还是自己要有安全意识,要多学习一些安全知识和linux的知识。
第三第四其中都有稍微提到一点,感兴趣可以看看
文章题目:wcf服务器安全设置 wcf服务库
分享链接:http://ybzwz.com/article/dohehhi.html