web服务器安全知识 如何打造apache web服务器安全?
HTTP拒绝服务攻击
攻击者通过某些手段使服务器拒绝对http应答,这使Apache对系统资源(cup时间与内存)需求巨增,最终造成系统变慢甚至完全瘫痪,Apache服务器最大的缺点是,它的普遍性使它成为众矢之的,Apache服务器无时无刻不受到DoS攻击威胁,主要有下边几种
1.数据包洪水攻击
一种中断服务器或本地网络的方法是数据包洪水攻击,它通常使用internet控制报文协议(ICMP,属于网络层协议)包或是udp包,在最简单的形式下,这些攻击都是使服务器或网络负载过重,这意味这攻击者的网络速度必须比目标主机网络速度要快,使用udp包的优势是不会有任何包返回到黑客的计算机(udp效率要比tcp高17倍),而使用ICMP包的优势是攻击者能让攻击更加富与变化,发送有缺陷的包会搞乱并锁住受害者的网络,目前流行的趋势是攻击者欺骗服务器,让其相信正在受来自自身的洪水攻击.
2.磁盘攻击
这是一种很不道德的攻击,它不仅影响计算机的通信,还破坏其硬件,伪造的用户请求利用写命令攻击目标计算机硬盘,让其超过极限,并强制关闭,结局很悲惨.
3.路由不可达
通常DoS攻击,集中在路由器上,攻击者首先获得控制权并操纵目标机器,当攻击者能更改路由表条目时候,会导致整个网络无法通信,这种攻击很阴险,隐蔽,因为网络管理员需要排除的网络不通原因很多,其中一些原因需要详细分辨.
4.分布式拒绝服务攻击
这也是最具有威胁的DDoS攻击,名称很容易理解,简单说就是群欧,很多客户机同时单条服务器,你会发现你将伤痕累累,Apache服务器特别容易受到攻击,无论是DDos还是隐藏来源的攻击,因为Apache无处不在,特别是为Apache特意打造的病毒(特选SSL蠕虫),潜伏在许多主机上,攻击者通过病毒可以操纵大量被感染的机器,对特定目标发动一次浩大的DDoS攻击,通过将蠕虫散播到大量主机,大规模的点对点攻击得以进行,除非你不提供服务,要不然几乎无法阻止这样的攻击,这种攻击通常会定位到大型的网站上.
5.缓冲区溢出
这种攻击很普遍,攻击者利用CGI程序编写一些缺陷程序偏离正常的流程,程序使用静态的内存分配,攻击者就可以发送一个超长的请求使缓冲区溢出,比如,一些perl编写的处理用户请求的网关脚本,一但缓冲区溢出,攻击者就可以执行恶意指令.
6.非法获取root权限
如果Apache以root权限运行,系统上一些程序的逻辑缺陷或缓冲区溢出漏洞,会让攻击者很容易在本地系统获取linux服务器上的管理者权限,在一些远程情况下,攻击者会利用一些以root身份执行的有缺陷的系统守护进程来取得root权限,或利用有缺陷的服务进程漏洞来取得普通用户权限,以远程登陆,进而控制整个系统.
这边这些都是服务将会遇到的攻击手段,下边来说,如何打造安全的Apache服务器,如果你能遵守下边这些建议,那么你将得到一台相对安全的apache服务器.
一:勤打补丁
你必须要相信这个是最有用的手段,缓冲区溢出等漏洞都必须使用这种手段来防御,勤快点相信对你没有坏处,在http:www.apache.org上最新的changelog中都写有:bug fix,security bug fix的字样,做为负责任的管理员要经常关注相关漏洞,及时升级系统添加补丁.使用最新安全版本对加强apache至关重要.
二:隐藏和伪装Apache的版本
打乱攻击者的步骤,给攻击者带来麻烦,相信是管理员愿意看到的.软件的漏洞信息和版本是相关的,在攻击者收集你服务软件信息时候给与迷惑是个不错的选择,何况版本号,对攻击者来说相当与GPS定位一样重要,默认情况,系统会把apache版本模块都显示出来(http返回头),如果列举目录的话,会显示域名信息(文件列表正文),去除Apache版本号的方法是修改配置文件,找到关键字,修改为下边:
ServerSignature off
ServerTokens prod通过分析web服务器类型,大致可以推测操作系统类型,win使用iis,linux普遍apache,默认的Apache配置里没有任何信息保护机制,并且允许目录浏览,通过目录浏览,通常可以得到类似"apache/1.37 Server at apache.linuxforum.net Port 80"或"apache/2.0.49(unix)PHP/4.3.8"的信息,通过修改配置文件中的ServerTokens参数,可以将Apache的相关信息隐藏起来,如果不行的话,可能是提示信息被编译在程序里了,要隐藏需要修改apache的源代码,然后重新编译程序,以替换内容:
编辑ap_release.h文件,修改
"#define AP_SERVER_BASEPRODUCT""Apache"""
为
"#define AP_SERVER_BASEPRODUCT""Microsoft-IIS/5.0""
编辑os/unix/os.h文件,修改
"#define PLATFORM""Unix"""
为
"#define PLATFORM"'Win32"
修改完成后,重新编译,安装apache,在修改配置文件为上边做过的,再次启动apache后,用工具扫描,发现提示信息中已经显示为windows操作系统了顺便说下,现在这个论坛,就有点不太讲究,这是论坛错误的返回信息,看了有点汗地感觉,Apache/2.2.8(Ubuntu)DAV/2 SVN/1.4.6 mod_ssl/2.2.8 OpenSSL/0.9.8g Server at forum.ubuntu.org.cn Port 80这个等于告诉恶意用户很多有用信息,虽然说不算开了门,但等于被告诉了门在那里,还是相当危险的.
三:建立安全的目录结构apache服务器包括四个目录结构
ServerRoot #保存配置文件,二进制文件与其他服务器配置文件
DocumentRoot #保存web站点内容,包括HTML文件和图片等
ScripAlias #保存CGI脚本
Customlog #保存日志
Errorlog #保存错误日志
建议的目录结构为,以上四种目录相互独立并且不存在父子逻辑关系
注:
ServerRoot目录只能为root用户访问
DocumentRoot目录应该能够被管理web站点内容的用户访问和使用apache服务器的apache用户与组访问
ScripAlias目录应该只能被CGI开发人员和apache用户访问
Customlog和Errorlog只能被root访问
下边是一个安全目录结构的事例:
+-------/etc/
+----/http (ServerRoot)
+----/logs (Customlog和Errorlog)
+-------var/www
+---/cgi-bin(ScripAlias)
+---/html(DocumentRoot)
这样的目录结构是比较安全的,因为目录之间独立,某个目录权限错误不会影响到其他目录
四:为apache使用专门的用户与组
按照最小特权的原则,需要给apache分配一个合适的权限,让其能够完成web服务.
注:最小特权原则是系统安全中最基本的原则之一,限制使用者对系统及数据进行存取所需要的最小权限,保证用户可以完成任务,同时也确保被窃取或异常操作所造成的损失.
必须保证apache使用一个专门的用户与组,不要使用系统预定的帐户,比如nobody用户与nogroup组,因为只有root用户可以运行apache,DocumentRoot应该能够被管理web站点内容的用户访问和使用apache服务器的apache用户与组访问,例如,希望"test"用户在web站点发布内容,并且可以以httpd身份运行apache服务器,可以这样设定:
groupadd webteam
usermod -G webteam test
chown -R httpd.webteam /www/html
chmod -R 2570 /www/htdocs
只有root能访问日志,推荐这样的权限
chown -R root.root /etc/logs
chown -R 700 /etc/logs五:web目录的访问策略
对于可以访问的web目录,要使用相对保守的途径进行访问,不要让用户查看任何目录索引列表
禁止使用目录索引:
apache在接到用户对一个目录的访问时,会查找DirectoryIndex指令指定的目录索引文件,默认为index.html,如果该文件不存在,那么apache会创建动态列表为用户显示该目录的内容,这样就会暴露web站点结构,因此需要修改配置文件禁止显示动态目录索引,修改httpd.conf
Options -Indexes FollowSymLinks
Options指令通知apache禁止使用目录索引,FollowSymLinks表示不允许使用符号连接.
禁止默认访问:
要的安全策略必须要禁止默认访问的存在,只对指定的目录开放权限,如果允许访问/var/www/html目录,使用如下设定
Order deny,allow
Allow from all
禁止用户重载:
为了禁止用户对目录配置文件(htaccess)进行重载(修改),可以这样设定
AllowOverride None六:apache服务器访问控制
apache的access.conf文件负责设置文件的访问权限,可以实现互联网域名和ip地址的访问控制,如允许192.168.1.1到192.168.1.254的主机访问,可以这样设定
order deny,allow
deny from all
allow from pair 192.168.1.0/255.255.255.0七:apache服务器的密码保护
.htaccess文件是apache上的一个设置文件,它是一个文本文件,.htaccess文件提供了针对目录改变配置的方法既通过在一个特定的文档目录中放置一个包含一个或多个指令的文件(.htaccess文件),以作用于此目录和子目录.
.htaccess的功能包括设置网页密码,设置发生错误时出现的文件,改变首业的文件名(如,index.html),禁止读取文件名,重新导向文件,加上MIME类别,禁止目录下的文件等.
注:.htaccess是一个完整的文件名,不是***.htaccess或其他格式,在/abc目录下放置一个.htaccess文件,那么/abc与它的子目录都会被这个文件影响,但/index.html不会被影响.
.htaccess的建立和使用比较复杂点,如果感兴趣的朋友可以回帖发问,这里就不具体写出来了,这种保护要比某些程序实现的保护安全,那种方法可以通过被猜测方法获取密码,用.htaccess很难被破解,但文本方式的验证会比较慢,对少量用户没影响,但对大量用户就必须使用带数据模块的验证了,这需要编译源代码时候开启模块,默认是不开启的.
八:让apache运行在"监牢"中
"监牢"的意思是指通过chroot机制来更改某个软件运行时所能看到的根目录,简单说,就是被限制在指定目录中,保证软件只能对该目录与子目录文件有所动作,从而保证整个服务器的安全,即使被破坏或侵入,损伤也不大.
以前,unix/linux上的daemon都是以root权限启动的,当时,这是一件理所当然的事情,像apache这样的服务器软件,需要绑定到80端口上来监听请求,而root是唯一有这种权限的用户,随着攻击手段和强度的增加,这样会使服务器受到相当大的威胁,一但被利用缓冲区溢出漏洞,就可以控制整个系统.现在的服务器设计通常以root启动,然后进程放弃root权限,改为某个低级的帐号运行.这种方式显然会降低对系统的危害,但攻击者还是会寻找漏洞提升权限,即使无法获得root权限,也可以删除文件,涂改主页等.
为了进一步提高系统安全性,linux内核引入chroot机制,chroot是内核中的一个系统调用,软件可以通过调用函数库的chroot函数,来更改某个进程所能见到的跟目录,比如,apache软件安装在/usr/local/httpd目录,以root启动apache,这个root权限的父进程会派生数个以nobody权限运行的子进程,父进程监听80端口,然后交给某个子进程处理,这时候子进程所处的目录续承父进程,即/usr/local/httpd目录,但是一但目录权限设定错误,被攻击的apache子进程可以访问/usr/local,/usr,/tmp甚至整个文件系统,因为apache进程所处的跟目录仍然是整个文件系统的跟目录,如果可以用chroot将apache限制在/usr/local/httpd/下,那么apache所存取的文件都被限制在/usr/local/httpd下,创建chroot监牢的作用就是将进程权限限制在文件目录树下,保证安全.
如果自己手动apache的监牢,将是很烦琐和复杂的工作,需要牵扯到库文件,这里可以使用jail包来简化监牢的实现jail的官方网站为:有兴趣可以逛逛这里也不写出具体的创建过程稍微麻烦.
九:apache服务器防范Dos
apache服务经常会碰到Dos攻击,防范的主要手段是通过软件,apahce Dos Evasive Maneuvers Module来实现的,它是一款mod_access的代替软件,可以对抗DoS攻击,该软件可以快速拒绝来自相同地址对同一URL的重复请求,通过查询内部一张各子进程的哈希表来实现,可以到网址:http://online/.securityfocus.com/tools/上下载软件
十:减少CGI和SSI风险
CGI脚本的漏洞已经成为WEB服务器的首要安全隐患,通常是程序编写CGI脚本产生了许多漏洞,控制CGI的漏洞除了在编写时候注意对输入数据的合法检查,对系统调用的谨慎使用等因素外,首先使用CGI程序所有者的ID来运行这些程序,即使被漏洞危害也仅限于该ID能访问的文件,不会对整个系统带来致命的危害,因此需要谨慎使用CGI程序.
1.3版的apache集成了suEXEC程序,可以为apache提供CGI程序的控制支持,可以把suEXEC看做一个包装器,在Apache接到CGI程序的调用请求后,把这个请求交给suEXEC来负责完成具体调用,并从suEXEC返回结果,suEXEC可以解决一些安全问题,但会影响速度,如果是对安全性要求很高时候,建议使用suEXEC,此外还有一个软件CGIWrap,它的安全性要高与suEXEC.
减少SSI脚本风险,如果用exec等SSI命令运行外部程序,也会存在类似CGI脚本风险,除了内部调试程序时,应使用:
option命令禁止其使用:
Option IncludesNOEXEC十一:使用ssl加固Apache
使用具有SSL功能的服务器,可以提高网站敏感页的安全性能,SSL工作与TCP/IP协议和HTTP协议之间,SSL可以加密互联网上传递的数据流,提供身份验证,在线购物而不必担心别人窃取信用卡信息,在基于电子商务和基于web邮件的地方非常重要.SSL的应用相对还是比较麻烦的,有需要的话,可以发贴或查看资料.
黑客基地的渗透方法(冰兰黑客基地实例)
注:本人已经提交到C R S T ,适合新人学习 首先是有个朋友对我说有个冰兰黑客基地,转载别人的文章还不著名作者,之后还蒙骗别人说他们能入侵国外站点 所以就想检测一下 首先看了以下他的站点,主站和论坛 分
详情2018-01-04 17:49:34责编:llp 来源:驱动管家数字签名有哪些过程?数字签名的原理是什么?
数字签名和加密的基本原理及其区别?1 数字签名主要经过以下几个过程:信息发送者使用一单向散列函数(HASH函数)对信息生成信息摘要;信息发送者使用自己的私钥签名信息摘要;信息发送者把信息本身和已签名的信
详情2018-01-20 13:30:15责编:llp 来源:驱动管家怎么入侵445 139端口?怎么保护自己的电脑关闭445 139端口?
SMB(Server Message Block),Windows协议族,用于文件和打印共享服务。在Win9X NT中SMB基于NBT实现,NBT(NetBIOS over TCP IP)使用137, 138 (UDP) and 139 (TCP)来实现基于TCP IP的NETBIOS网际互联;而
详情2018-01-19 18:57:35责编:llp 来源:驱动管家进程是什么?linux 查看进程怎么发现木马?
对于进程这个概念,许多电脑用户都没有给予太多关注。在很多人印象里,只知道结束进程可以杀死程序,至于哪些进程对应哪些程序,究竟什么样的进程该杀,什么样的进程不能杀这些问题很少考虑。这里通过几个实例为
详情2018-01-17 15:24:29责编:llp 来源:驱动管家手把手教你捕获数据包 捕获数据包的方法
前 言经常看到论坛有人问起关于数据包的截获、分析等问题,幸好本人也对此略有所知,也写过很多的sniffer,所以就想写一系列的文章来详细深入的探讨关于数据包的知识。我希望通过这一系列的文章,能使得关于数据
详情2018-01-21 14:33:20责编:llp 来源:驱动管家rar密码破解工具:rar password recovery如何破解rar文件密码?
RAR是一款常见的压缩格式,主要运用于文件的存储与传递。互联网上提供下载的资源中,RAR格式占很大比重。出于安全的需求以及隐私的保护,有相当一部分的RAR文件被加上了密码,解不开密码的RAR文件如同垃圾文件一
详情2018-01-15 12:34:15责编:llp 来源:驱动管家科迅会员上传webshell漏洞?文件webshell漏洞怎么修复?
会员上传文件漏洞,可以上传任意后缀user swfupload asp文件漏洞复制代码代码如下:If UpFileObj Form( "NoReName ")= "1 " Then & 39;不更名Dim PhysicalPath,FsoObj:Set FsoObj = KS InitialObject(KS Settin
详情2018-01-11 14:54:27责编:llp 来源:驱动管家什么是unicode?字节和字符的区别是什么?
介绍Unicode之前,首先要讲解一些基础知识。虽然跟Unicode没有直接的关系,但想弄明白Unicode,没这些还真不行。字节和字符的区别咦,字节和字符能有什么区别啊?不都是一样的吗?完全正确,但只是在古老的DOS时
详情2018-01-20 12:09:39责编:llp 来源:驱动管家android平台的漏洞 什么是sql注入漏洞?
0x0前言14年11月笔者在百度xteam博客中看到其公开了此前报告给Google的CVE-2014-8507漏洞细节——系统代码在处理经由短信承载的WAP推送内容时产生的经典SQL注入漏洞,影响Android 5 0以下的系统。于是对这个漏洞
详情2018-01-06 15:28:03责编:llp 来源:驱动管家dns欺骗是什么?dns欺骗有什么条件和限制?
定义: DNS欺骗就是攻击者冒充域名服务器的一种欺骗行为。原理:如果可以冒充域名服务器,然后把查询的IP地址设为攻击者的IP地址,这样的话,用户上网就只能看到攻击者的主页,而不是用户想要取得的网站的主页了,这就是DNS欺骗的基本原理。DNS欺骗其实并不是真的“
详情2018-01-02 16:11:39责编:llp 来源:驱动管家
- libpng处理畸形格式的png图片存在漏洞
- ae素材素材导入失败是什么原因?ae素材导入失败怎么解决?
- 默认打印机为什么无法设置?无法保存打印机设置怎么解决?
- 联想v310笔记本相比其他笔记本有什么出色的地方
- wifi信号增强器怎么用?wifi信号增强器的作用是什么
- zip文件怎么打开?四步直接解决zip文件打不开的问题
- 制作cue文件其实很简单!按照这个步骤操作就可以了
- 荣耀8如何进行bootloader解锁?荣耀8解锁要准备哪些工作?
- iphone6多少钱?iphone6的黄牛价最低1万!
- 光纤路由器设置怎么操作?光纤路由器设置方法是什么?
- 电脑屏幕分辨率为什么不能调整?电脑屏幕分辨率调不了怎么办?
- 密码丢失怎么办?这里有一些密码破解方法
- 网络黑客分析 网络黑客有哪些类型?
- u盘加密软件有哪些?推荐好用的U盘加密软件
- 怎样利用爱剪辑在视频里剪辑图片?爱剪辑使用教程
- 不知道路由器怎么恢复出厂设置?这些方法你试过了吗
- 市面上哪些手机可以支持无线充电功能
- 小米手机想要重置怎么恢复出厂设置
- 压缩文件格式可以转换吗?转换压缩文件格式的方法
- 手机解锁图案忘了怎么办?除了恢复出厂设置还有两种方法