HTTP拒绝服务攻击攻击者通过某些手段使服务器拒绝对http应答,这使Apache对系统资源(cup时间与内存)需求巨增,最终造成系统变慢甚至完全瘫痪,Apache服务器最大的缺点是,它的普遍性使它成为众矢之的,Apache服务器无时无刻不受到DoS攻击威胁,主要有下边几种
1.数据包洪水攻击
2.磁盘攻击
3.路由不可达
4.分布式拒绝服务攻击
5.缓冲区溢出
6.非法获取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""
"#define PLATFORM""Unix"""
"#define PLATFORM"'Win32"
三:建立安全的目录结构apache服务器包括四个目录结构ServerRoot #保存配置文件,二进制文件与其他服务器配置文件 DocumentRoot #保存web站点内容,包括HTML文件和图片等 ScripAlias #保存CGI脚本 Customlog #保存日志 Errorlog #保存错误日志
注:
下边是一个安全目录结构的事例: +-------/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
chown -R root.root /etc/logs chown -R 700 /etc/logs 五:web目录的访问策略
对于可以访问的web目录,要使用相对保守的途径进行访问,不要让用户查看任何目录索引列表 apache在接到用户对一个目录的访问时,会查找DirectoryIndex指令指定的目录索引文件,默认为index.html,如果该文件不存在,那么apache会创建动态列表为用户显示该目录的内容,这样就会暴露web站点结构,因此需要修改配置文件禁止显示动态目录索引,修改httpd.conf Options -Indexes 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是一个完整的文件名,不是***.htaccess或其他格式,在/abc目录下放置一个.htaccess文件,那么/abc与它的子目录都会被这个文件影响,但/index.html不会被影响. .htaccess的建立和使用比较复杂点,如果感兴趣的朋友可以回帖发问,这里就不具体写出来了,这种保护要比某些程序实现的保护安全,那种方法可以通过被猜测方法获取密码,用.htaccess很难被破解,但文本方式的验证会比较慢,对少量用户没影响,但对大量用户就必须使用带数据模块的验证了,这需要编译源代码时候开启模块,默认是不开启的. 八:让apache运行在"监牢"中
"监牢"的意思是指通过chroot机制来更改某个软件运行时所能看到的根目录,简单说,就是被限制在指定目录中,保证软件只能对该目录与子目录文件有所动作,从而保证整个服务器的安全,即使被破坏或侵入,损伤也不大. 为了进一步提高系统安全性,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服务器防范Dosapache服务经常会碰到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程序. 减少SSI脚本风险,如果用exec等SSI命令运行外部程序,也会存在类似CGI脚本风险,除了内部调试程序时,应使用: option命令禁止其使用: Option IncludesNOEXEC 十一:使用ssl加固Apache使用具有SSL功能的服务器,可以提高网站敏感页的安全性能,SSL工作与TCP/IP协议和HTTP协议之间,SSL可以加密互联网上传递的数据流,提供身份验证,在线购物而不必担心别人窃取信用卡信息,在基于电子商务和基于web邮件的地方非常重要.SSL的应用相对还是比较麻烦的,有需要的话,可以发贴或查看资料. (责任编辑:IT) |