如何避免服务器被攻击_服务器防止上传攻击

hacker|
224

如何防范服务器被攻击

不管哪种DDoS攻击,,当前的技术都不足以很好的抵御。现在流行的DDoS防御手段——例如黑洞技术和路由器过滤,限速等手段,不仅慢,消耗大,而且同时也阻断有效业务。如IDS入侵监测可以提供一些检测性能但不能缓解DDoS攻击,防火墙提供的保护也受到其技术弱点的限制。其它策略,例如大量部署服务器,冗余设备,保证足够的响应能力来提供攻击防护,代价过于高昂。

黑洞技术

黑洞技术描述了一个服务提供商将指向某一目标企业的包尽量阻截在上游的过程,将改向的包引进“黑洞”并丢弃,以保全运营商的基础网络和其它的客户业务。但是合法数据包和恶意攻击业务一起被丢弃,所以黑洞技术不能算是一种好的解决方案。被攻击者失去了所有的业务服务,攻击者因而获得胜利。

路由器

许多人运用路由器的过滤功能提供对DDoS攻击的防御,但对于现在复杂的DDoS攻击不能提供完善的防御。

路由器只能通过过滤非基本的不需要的协议来停止一些简单的DDoS攻击,例如ping攻击。这需要一个手动的反应措施,并且往往是在攻击致使服务失败之后。另外,现在的DDoS攻击使用互联网必要的有效协议,很难有效的滤除。路由器也能防止无效的或私有的IP地址空间,但DDoS攻击可以很容易的伪造成有效IP地址。

基于路由器的DDoS预防策略——在出口侧使用uRPF来停止IP地址欺骗攻击——这同样不能有效防御现在的DDoS攻击,因为uRPF的基本原理是如果IP地址不属于应该来自的子网网络阻断出口业务。然而,DDoS攻击能很容易伪造来自同一子网的IP地址,致使这种解决法案无效。

防火墙

首先防火墙的位置处于数据路径下游远端,不能为从提供商到企业边缘路由器的访问链路提供足够的保护,从而将那些易受攻击的组件留给了DDoS攻击。此外,因为防火墙总是串联的而成为潜在性能瓶颈,因为可以通过消耗它们的会话处理能力来对它们自身进行DDoS攻击。

其次是反常事件检测缺乏的限制,防火墙首要任务是要控制私有网络的访问。一种实现的方法是通过追踪从内侧向外侧服务发起的会话,然后只接收“不干净”一侧期望源头发来的特定响应。然而,这对于一些开放给公众来接收请求的服务是不起作用的,比如Web、DNS和其它服务,因为黑客可以使用“被认可的”协议(如HTTP)。

第三种限制,虽然防火墙能检测反常行为,但几乎没有反欺骗能力——其结构仍然是攻击者达到其目的。当一个DDoS攻击被检测到,防火墙能停止与攻击相联系的某一特定数据流,但它们无法逐个包检测,将好的或合法业务从恶意业务中分出,使得它们在事实上对IP地址欺骗攻击无效。

IDS入侵监测

IDS解决方案将不得不提供领先的行为或基于反常事务的算法来检测现在的DDoS攻击。但是一些基于反常事务的性能要求有专家进行手动的调整,而且经常误报,并且不能识别特定的攻击流。同时IDS本身也很容易成为DDoS攻击的牺牲者。

作为DDoS防御平台的IDS最大的缺点是它只能检测到攻击,但对于缓和攻击的影响却毫无作为。IDS解决方案也许能托付给路由器和防火墙的过滤器,但正如前面叙述的,这对于缓解DDoS攻击效率很低,即便是用类似于静态过滤串联部署的IDS也做不到。

DDoS攻击的手动响应

作为DDoS防御一部份的手动处理太微小并且太缓慢。受害者对DDoS攻击的典型第一反应是询问最近的上游连接提供者——ISP、宿主提供商或骨干网承载商——尝试识别该消息来源。对于地址欺骗的情况,尝试识别消息来源是一个长期和冗长的过程,需要许多提供商合作和追踪的过程。即使来源可被识别,但阻断它也意味同时阻断所有业务——好的和坏的。

文件上传漏洞攻击方法有什么?

文件上传漏洞是什么?怎样防御文件上传漏洞攻击?文件上传漏洞是web安全中经常利用到的一种漏洞形式。这种类型的攻击从大的类型上来说,是攻击 数据与代码分离原则 的一种攻击。

一些web应用程序中允许上传图片,文本或者其他资源到指定的位置,文件上传漏洞就是利用这些可以上传的地方将恶意代码植入到服务器中,再通过url去访问以执行代码

造成文件上传漏洞的原因是

对于上传文件的后缀名(扩展名)没有做较为严格的限制

对于上传文件的MIMETYPE 没有做检查

权限上没有对于上传的文件的文件权限,(尤其是对于shebang类型的文件)

对于web server对于上传文件或者指定目录的行为没有做限制

下面就闲话一些文件上传漏洞的防御方式和攻击者的绕过方式

1.前端限制

function check(){

var filename=document.getElementById("file");

var str=filename.value.split(".");

var ext=str[str.length-1];

if(ext=='jpg'||ext=='png'||ext=='jpeg'||ext=='gif'){

return true;

}else{

alert("这不是图片!")

return false;

}

return false;

}

在表单中使用onsumbit=check()调用js函数来检查上传文件的扩展名。这种限制实际上没有任何用处,任何攻击者都可以轻而易举的破解。只能用于对于用户完全信任的情况下,很难称之为一种安全措施只能称之是一种防止用户误操作上传的措施,

反制:

随便的编辑一下页面/用burpsuite/写个小脚本就可以突破之,无须多言

2.检查扩展名

顾名思义,就是在文件被上传到服务端的时候,对于文件名的扩展名进行检查,如果不合法,则拒绝这次上传

在这里,还有一点是值得一提的,在检查扩展名是否合法的时候,有两种策略

黑名单策略,文件扩展名在黑名单中的为不合法,示例代码

$postfix = end(explode('.','$_POST['filename']);

if($postfix=='php'||$postfix=='asp'||$postfix=='sh'){

echo "invalid file type";

return;

}

白名单策略,文件扩展名不在白名单中的均为不合法

$postfix = end(explode('.','$_POST['filename']);

if($postfix=='jpg'||$postfix=='png'||$postfix=='gif'){

//save the file and do something next

} else {

echo "invalid file type";

return;

}

白名单策略是更加安全的,通过限制上传类型为只有我们接受的类型,可以较好的保证安全,因为黑名单我们可以使用各种方法来进行注入和突破

反制

在一些 webserver 中,存在解析漏洞

1.老版本的IIS中的目录解析漏洞,如果网站目录中有一个 /.asp/目录,那么此目录下面的一切内容都会被当作asp脚本来解析

2.老板本的IIS中的分号漏洞:IIS在解析文件名的时候可能将分号后面的内容丢弃,那么我们可以在上传的时候给后面加入分号内容来避免黑名单过滤,如 a.asp;jpg

3.旧版Windows Server中存在空格和dot漏洞类似于 a.php. 和 a.php[空格] 这样的文件名存储后会被windows去掉点和空格,从而使得加上这两个东西可以突破过滤,成功上传,并且被当作php代码来执行

4.nginx空字节漏洞 xxx.jpg%00.php 这样的文件名会被解析为php代码运行

5.apache的解析漏洞,上传如a.php.rar a.php.gif 类型的文件名,可以避免对于php文件的过滤机制,但是由于apache在解析文件名的时候是从右向左读,如果遇到不能识别的扩展名则跳过,rar等扩展名是apache不能识别的,因此就会直接将类型识别为php,从而达到了注入php代码的目的

3.检查HTTP Header中的Content-Type

HTTP协议规定了上传资源的时候在Header中加上一项文件的MIMETYPE,来识别文件类型,这个动作是由浏览器完成的,服务端可以检查此类型不过这仍然是不安全的,因为HTTP header可以被发出者或者中间人任意的修改,不过加上一层防护也是可以有一定效果的

反制

使用各种各样的工具(如burpsuite)强行篡改Header就可以,太容易将header中的

Content-Type: application/php

或者其他类型

改为

Content-Type: image/jpg

Content-Type: image/png

Content-Type: text/plain

等这些web程序允许的泪洗改附上常用的MIMETYPE表

text/plain(纯文本)

text/html(HTML文档)

text/javascript(js代码)

application/xhtml+xml(XHTML文档)

image/gif(GIF图像)

image/jpeg(JPEG图像)

image/png(PNG图像)

video/mpeg(MPEG动画)

application/octet-stream(二进制数据)

application/pdf(PDF文档)

application/(编程语言) 该种语言的代码

application/msword(Microsoft Word文件)

message/rfc822(RFC 822形式)

multipart/alternative(HTML邮件的HTML形式和纯文本形式,相同内容使用不同形式表示)

application/x-www-form-urlencoded(POST方法提交的表单)

multipart/form-data(POST提交时伴随文件上传的表单)

4.分析文件头内容来检查文件类型

与方法2不同,还有一种检查类型的方式是使用对于文件内容的验证机制,这种方法利用的是每一个特定类型的文件都会有不太一样的开头或者标志位。可以通过比如php的exif_imagetype()函数,一个通过这种方法来过滤的示例代码如下:

if (! exif_imagetype($_FILES['uploadedfile']['tmp_name'])) {

echo "File is not an image";

return;

}

也可以自己编写函数来进行识别,图片文件通常有称作幻数的头字节,我们来看一下几种图片文件的幻数:

(注意!下面是二进制而不是文本格式的数据)

JPG

FF D8 FF E0 00 10 4A 46 49 46

GIF

47 49 46 38 39 61

(相当于文本的GIF89a)

PNG

89 50 4E 47

通过检查头几位字节,可以分辨是否是图片文件

如果是其他类型的二进制文件,也有响应的头字节,如下表

反制

给上传脚本加上相应的幻数头字节就可以,php引擎会将

(一般不限制图片文件格式的时候使用GIF的头比较方便,因为全都是文本可打印字符。)

GIF89a

do_something();

?

如果是其他类型的二进制文件,也有响应的头字节,如下表

格式

文件头

TIFF (tif)

49492A00

Windows Bitmap (bmp)

424D

CAD (dwg)

41433130

Adobe Photoshop (psd)

38425053

Rich Text Format (rtf)

7B5C727466

MS Word/Excel (xls.or.doc)

D0CF11E0

MS Access (mdb)

5374616E64617264204A

ZIP Archive (zip),

504B0304

RAR Archive (rar),

52617221

Wave (wav),

57415645

AVI (avi),

41564920

Real Media (rm),

2E524D46

MPEG (mpg),

000001BA

MPEG (mpg),

000001B3

Quicktime (mov),

6D6F6F76

Adobe Acrobat (pdf),

255044462D312E

Windows Media (asf),

3026B2758E66CF11

MIDI (mid),

4D546864

5.限制Web Server对于特定类型文件的行为

导致文件上传漏洞的根本原因在于服务把用户上传的本应是数据的内容当作了代码,一般来说,用户上传的内容都会被存储到特定的一个文件夹下,比如我们很多人习惯于放在 ./upload/ 下面要防止数据被当作代码执行,我们可以限制web server对于特定文件夹的行为。

大多数服务端软件都可以支持用户对于特定类型文件的行为的自定义,以Apache为例:

在默认情况下,对与 .php文件Apache会当作代码来执行,对于 html,css,js文件,则会直接由HTTP Response交给客户端程序对于一些资源文件,比如txt,doc,rar等等,则也会以文件下载的方式传送的客户端。我们希望用户上传的东西仅仅当作资源和数据而不能当作代码

因此可以使用服务器程序的接口来进行限制

以Apache为例,我们可以利用 .htaccess 文件机制来对web server行为进行限制

在这里插一句,如果不是专门的文件下载目录,请务必关掉文件夹浏览的权限,以防止嗅探和可能的越权,也是使用.htaccess文件,在其中加上一句

Options All -Indexes

即可。

禁止脚本执行有多种方式可以实现,而且分别有不同的效果,我们分别来看一下

1.指定特定扩展名的文件的处理方式,原理是指定Response的Content-Type可以加上如下几行

AddType text/plain .pl .py .php

这种情况下,以上几种脚本文件会被当作纯文本来显示出来,你也可以换成其他的Content-Type

2.如果要完全禁止特定扩展名的文件被访问,用下面的几行

Options -ExecCGI

AddHandler cgi-script .php .pl .py .jsp .asp .htm .shtml .sh .cgi识别

在这种情况下,以上几种类型的文件被访问的时候,会返回403 Forbidden的错误

3.也可以强制web服务器对于特定文件类型的处理,与第一条不同的是, 下面的方法直接强行让apache将文件识别为你指定的类型,而第一种是让浏览器

ForceType text/plain

看代码就可以很明白的知道,符合上面正则的全部被认为是纯文本,也可以继续往里面加入其他类型。

4.只允许访问特定类型的文件

order deny,allow

deny from all

在一个上传图片的文件夹下面,就可以加上这段代码,使得该文件夹里面只有图片扩展名的文件才可以被访问,其他类型都是拒绝访问。

这又是一个白名单的处理方案

永远记得,白名单是最有保障的安全措施

可以通过 move_uploaded_file 函数把自己写的.htaccess 文件上传,覆盖掉服务器上的文件,来定义文件类型和执行权限如果做到了这一点,将获得相当大的权限。

如何防范服务器被攻击?

1.黑客也有可能通过暴力破解的方法来破解超级管理员密码,从而对服务器实行攻击。要预防超级管理员密码被暴力破解,购买到服务器后站长一定要修改超级管理员的默认密码,把密码修改成为一个复杂的英文加数字的组合密码,这样可以加大黑客破解密码的难度。再复杂的密码也有被破解的风险,所以建议超级管理员的密码定期修改一次。 

2.端口是病毒、木马入侵的最主要途径,所有端口都有可能是黑客的利用对象,通过端口对服务器实行攻击。具体怎么攻击这里就不细说了,壹基比小喻这里主要讲一下怎么预防,想要预防黑客通过端口攻击服务器,最有效的方法是关闭不必要端口,修改重要端口。对外少开放一个端口,黑客就少一个入侵途径,每开放一个服务就意味着对外多开放一个端口,在关闭端口的同时也要关闭一些不必要的服务。此外,修改一些重要端口可以加大黑客的扫描难度,这样也能有效地保护我们的服务器。 

3.DDOS攻击是服务器常见的一种攻击,它的攻击方式有很多,最常见的是通过服务请求来占用服务资源,从而导致用户无法得到服务响应。预防DDOS攻击的最有效的方法是选择设有机房硬防的机房,硬件防火墙能够有效预防DDOS攻击和黑客攻击。硬防虽然能够有效预防DDOS攻击,但对CC攻击的基本无效,CC攻击需要通过软件防火墙来防御。 

4.漏洞也是黑客最主要的入侵途径,黑客可以通过系统漏洞、程序漏洞等对服务器实行攻击。每个系统、程序或多或少会存在有一些漏洞,或系统本身就存在的漏洞,或系统管理员配置错误导致的漏洞,站长朋友应该及时给服务器系统打新补丁,及时升级程序新版本。 

以上是关于怎么预防服务器被攻击的分享,虽然服务器容易遭受攻击,但如果做好预防措施,能够最大限度的避免被攻击成本,而且学习了服务器被攻击恢复方法能够最快的解决问题,降低损失是放在首位的。现在网络发展快,另外除了上述的问题与方法,也还需要多留意新的事物,通过不断的更新补丁也能起到很好的预防。希望壹基比小喻的这些可以帮到你们。

如何防止服务器被入侵

一、配置加固

1)限制连续密码错误的登录次数,是对抗密码暴力破解的重要手段;

2)拆分系统管理员的权限,取消超级管理员,从而限制入侵者获取管理员账户时的权限;

3)删除不需要的各种账户,避免被攻击者利用;

4)关闭不需要的服务端口,一是减少攻击者的入侵点,二是避免被入侵者当作后门利用;

5)限制远程登录者的权限,尤其是系统管理权限;

二、合规性加固

比如权限划分

三、反控制加固

比如:掌握控制权、发现隐藏者、监控操作者

景安网络专业的数据中心服务商,值得你托管租用服务器!

服务器经常被攻击,如何防范

具体总结了几个我常用的防范办法:

1、更改远程桌面端口;

2、开启防火墙,限制远程的IP;

3、上个防火墙流量过滤编;

4、写规则禁止IP或只允许自己的服务连接;

不过到了年中了,很多大佬出手打服务器,云服务器都会推DDoS高防,就是贵了一点。如果业务和数据珍贵,可以考虑尝试使用,毕竟当同行被打得头破血流时,我们坐在山顶上谈笑风生把酒言欢的感觉岂不美哉?

有效防止服务器攻击的操作有哪些

一般情况下,要选择高防御的服务器,这样可以有效避免攻击的发生。一般的攻击有ddos流量攻击 cc攻击,syn等,这些高防机房都是可以防御的。另外就是平时做好服务器的维护,比如修改远程端口,一些不常用的端口封掉。域名可以做下cdn防御 等都是不错的。海腾数据黄强为您解答,望采纳服务器防御

0条大神的评论

发表评论