如何部署安全的Apache服务器
作者:建中姿吟7523 | 来源:互联网 | 2014-05-28 10:53
Apache服务器走到那里,unix/linux就跟到那里,这足以说明在WEB服务器领域Apache的优良性能与市场占有率这今天互联网的大环境下,web服务已经成为公司企业必不可少的业务,大多数的安全问题也跟随而来,攻击重点也转移为web攻击,许多web与颇有价值的客户服
Apache服务器走到那里,unix/linux就跟到那里,这足以说明在WEB服务器领域Apache的优良性能与市场占有率
这今天互联网的大环境下,web服务已经成为公司企业必不可少的业务,大多数的安全问题也跟随而来,攻击重点也转移为web攻击,许多web与颇有价值的客户服务与电子商业活动结合在一起,这也是吸引恶意攻击重要原因。
先来了解下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攻击,通过将蠕虫散播到大量主机,大规模的点对点攻击得以进行,除非你不提供
服务,要不然几乎无法阻止这样的攻击,这种攻击通常会定位到大型的网站上。
缓冲区溢出,这种攻击很普遍,攻击者利用CGI程序编写一些缺陷程序偏离正常的流程,程序使用静态的内存分配,攻击者就可以发送一个超长的请求使缓冲区溢出,比如,一些perl编写的处理用户请求的网关脚本,一但缓冲区溢出,攻击者就可以执行恶意指令
非法获取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 PLATFORMWin32"
修改完成后,重新编译,安装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不会被影响
推荐阅读
本文详细介绍了如何在 Ubuntu 系统上安装和配置 LAMP(Linux、Apache、MySQL 和 PHP)服务器。包括 Apache 的安装、PHP 的配置以及 MySQL 数据库的设置,确保读者能够顺利搭建完整的 Web 开发环境。 ...
[详细]
蜡笔小新 2024-11-17 11:05:00
本文介绍了SIP(Session Initiation Protocol,会话发起协议)的基本概念、功能、消息格式及其实现机制。SIP是一种在IP网络上用于建立、管理和终止多媒体通信会话的应用层协议。 ...
[详细]
蜡笔小新 2024-11-21 17:42:08
本文探讨了在使用PHP进行后端开发时,遇到的一个常见问题:即在本地环境中能够正常通过CURL获取远程网页内容,但在服务器上却无法实现。我们将分析可能的原因并提供解决方案。 ...
[详细]
蜡笔小新 2024-11-21 10:31:32
本指南旨在帮助开发者在未使用CodeIgniter框架的情况下,如何独立使用其强大的图像处理功能,包括图像尺寸调整、创建缩略图、裁剪、旋转及添加水印等。 ...
[详细]
蜡笔小新 2024-11-20 19:57:35
本文探讨了在一个物理隔离的环境中构建数据交换平台所面临的挑战,包括但不限于数据加密、传输监控及确保文件交换的安全性和可靠性。同时,作者结合自身项目经验,分享了项目规划、实施过程中的关键决策及其背后的思考。 ...
[详细]
蜡笔小新 2024-11-20 18:18:23
本文详细探讨了AJAX的基本概念、工作原理及其在现代Web开发中的应用,旨在为初学者提供全面的学习资料。 ...
[详细]
蜡笔小新 2024-11-20 17:58:54
本文详细探讨了在Web开发中常见的UTF-8编码问题及其解决方案,包括HTML页面、PHP脚本、MySQL数据库以及JavaScript和Flash应用中的乱码问题。 ...
[详细]
蜡笔小新 2024-11-20 10:58:03
如题:2017年10月分析:还记得在没有智能手机的年代大概就是12年前吧,手机上都会有WAP浏览器。当时没接触网络原理,也不 ...
[详细]
蜡笔小新 2024-11-19 08:36:41
本文介绍了 PHP 的基本概念、服务器与客户端的工作原理,以及 PHP 如何与数据库交互。同时,还涵盖了常见的数据库操作和安全性问题。 ...
[详细]
蜡笔小新 2024-11-17 15:45:08
一、互联网协议连接两台计算机之间的Internet实际上就是一系列统一的标准,这些标准称之为互联网协议,互联网的本质就是一系列网络协议。二、为什么要有互联网协议互联网协议就相当于计 ...
[详细]
蜡笔小新 2024-11-16 12:20:00
本文为初学者提供了一条清晰的学习路线,帮助他们逐步成长为优秀的Web开发人员。通过十个关键步骤,涵盖从基础到高级的各个方面,确保每位学习者都能找到适合自己的学习方向。 ...
[详细]
蜡笔小新 2024-11-15 20:34:57
我的读书清单(持续更新)201705311.《一千零一夜》2006(四五年级)2.《中华上下五千年》2008(初一)3.《鲁滨孙漂流记》2008(初二)4.《钢铁是怎样炼成的》20 ...
[详细]
蜡笔小新 2024-11-21 13:01:23
在开发微信公众号或小程序的时候,由于微信平台规则的限制,部分接口需要通过线上域名才能正常访问。但我们一般都会在本地开发,因为这能快速的看到 ...
[详细]
蜡笔小新 2024-11-21 11:15:53
Windows操作系统提供了Encrypting File System (EFS)作为内置的数据加密工具,特别适用于对NTFS分区上的文件和文件夹进行加密处理。本文将详细介绍如何使用EFS加密文件夹,以及加密过程中的注意事项。 ...
[详细]
蜡笔小新 2024-11-20 18:57:46
本文详细介绍了如何在ARM架构的目标设备上部署SSH服务端,包括必要的软件包下载、交叉编译过程以及最终的服务配置与测试。适合嵌入式开发人员和系统集成工程师参考。 ...
[详细]
蜡笔小新 2024-11-20 14:13:38