最新文章:

首页 运维技术

linux下编译安装的Apache安全优化方案

发布时间:2016年03月17日 评论数:抢沙发 阅读数:4931

    今天我们讲解下lamp架构安全优化中的Apache服务的安全优化。在讲这节内容之前我说下,静态web请求的流程:

    当客户端访问一个静态网站的时候,网站上的Apache服务就会给他发送html文档给客户端浏览器,客户端浏览器会进行解析,然后就是我们看到的内容了。

    Web服务Apache的安全优化,首先我们要了解其原理,然后才能入手怎么安全优化。这里我简单说下他的原理:w_0001.gif

    Apache HTTP服务器是一个模块化的软件,他采用的是采用的MPMMulti -Processing Modules,多道处理模块)

    MPMApache的核心,它的作用是管理网络连接、调度请求。w_0022.gif

    Apache2.0MPM分为3种(perforkworkerevent)。

    perfork它采用的是进程管理方式,所以它可以提供更可靠的性能和更好的兼容性;

    workerApache2.0中新增加的方式,它采用了线程控制方法,可以比perfork更节约系统开销、处理更多的数据量,但同时兼容性并不是很好,很多旧的程序无法工作在worker下;

    event仍处于试验阶段,它为每个任务分配不同的进程池,目前不应该采用。


    通过命令 /application/apache/bin/apachectl -l可以获取目前Apache采用的是哪种MPM注意这里我是采用编译安装的

    本文仅针对perfork方式进行讨论

    wKiom1bn9WWBp7pwAADlezihhRA650.png


    现在我们开始修改我们的配置文件了。我们先回顾下Apache的文件有哪些?


    bin目录用于存放Apache的一些可执行程序

    cgi-bin目录用于存放cgi程序的相关程序

    conf目录存放Apache的主配置文件及其他扩展文件

    error目录用于存放一些错误信息

    lib目录用于存放Apache的库文件 

    logs目录用于存放Apache的程序日志包括访问日志和错误日志

    man目录用于存放 Apache的帮助文档

    modules目录用于存放各种模块文件

    htdocs目录用于存放网页文档

    从上们知道apache采用的是perfork模式。默认Apache的配置文件里没有开启调节进程参数的功能,我们要现在主配置文件里打开此项如下:

    wKiom1bn986C8uqsAAA4-EDVDGk968.png修改380行,去掉前面的#

    wKiom1bn9_KhZLlSAAAjIcAef94403.png


    修改为如下表示开启prefork.c进程管理


    wKioL1bn-J7Tf5LLAAAloR9MVgU084.png


    怎么改呢?我们知道那个目录,然后打开就可以看到相应的内容

    wKiom1bn-EjxZJ7lAABg2IKiyUY204.pngwKioL1bn-bKQNg7IAABXdd5HJvc321.png

    StartServers 5 #启动apache时启动的httpd进程个数。

    MinSpareServers 5#服务器保持的最小空闲进程数。

    MaxSpareServers 10#服务器保持的最大空闲进程数。

    MaxClients 150 #最大并发连接数。

    MaxRequestsPerChild1000 #每个子进程被请求服务多少次后被kill掉。0表示不限制,推荐设置为1000


    在该工作模式下,服务器启动后起动5httpd进程(加父进程共6个,通过ps -ax|grep httpd命令可以看到)。当有用户连接时,apache会使用一个空闲进程为该连接服务,同时父进程会fork一个子进程。直到内存中的空闲进程达到MaxSpareServers


    以上是Apache的进程优化了!这个是我们Apache优化的重点。w_0039.gif

    下面我们说下隐藏版本号,控制会话连接,禁止DNS。(这些我们只要在文件末尾添加即可)

    wKiom1boAXnBvDelAAA5w8zbRak434.png


    选项解释:

       Timeout:设置服务器在断定请求失败前等待的秒数。默认值300

        KeepAlive:设置是否启用HTTP持久链接,On 代表打开,Off 代表关闭。如果用于同一页面包含大量静态文件的应用,设置为On,以提高性能;如果用于主要为动态页面的应用,设置为Off,以节约内存资源;如果服务器前跑有squid或者其它七层设备,设置为On

        MaxKeepAliveRequests:限制当启用KeepAlive时,每个连接允许的请求数量。如果将此值设为"0",将不限制请求的数目。个人建议将此值设为100-500之间的一个值,以确保最优的服务器性能。

        KeepAliveTimeout:设置持久链接中服务器在两次请求之间等待的秒数。对于高负荷服务器来说,KeepAliveTimeout值较大会导致一些性能方面的问题:超时值越大,与空闲客户端保持连接的进程就越多。

        UseCanonicalName:配置服务器如何确定它自己的域名,可选值为On | Off | DNSDNS用于为大量基于IP的虚拟主机支持那些古老级的不提供"Host:"头的浏览器使用。笔者建议设置为Off

        AccessFileName:设置分布式配置文件的名字,默认为.htaccess。如果为某个目录启用了分布式配置文件功能,那么在向客户端返回其中的文档时,服务器将在这个文档所在的各级目录中查找此配置文件,因此会带来性能问题,个人建议关闭分布式配置文件功能。

        ServerTokens:控制服务器回应给客户端的"Server:"应答头是否包含关于服务器操作系统类型和编译进的模块描述信息,同时还控制着ServerSignature指令的显示内容。可选值为Full | OS | Minor | Minimal | Major | Prod。个人建议设置为显示最少信息的Prod

        ServerSignature:配置服务器生成页面的页脚,可选值为On | Off | EMail。采用On会简单的增加一行关于服务器版本和正在伺服的虚拟主机的ServerName,而EMail设置会额外创建一个指向ServerAdmin"mailto:"部分。建议使用默认值Off

        HostnameLookups:设置是否启用对客户端IPDNS查找,可选值为On | Off | DoubleDNS查询会造成明显的时间消耗,建议设置为Off

    大家不要忘记我们前面安装的时候,更改默认用户,这也是个优化点哦!

    这样我们就算给Apache做好优化了,是不是很简单啊!大家不用记优化内容,只要记住优化点即可。w_0014.gif




    本文出自 “乐乐快跑” 博客,请务必保留此出处http://10851431.blog.51cto.com/10841431/1751488

二维码加载中...
本文作者:Mr.linus      文章标题: linux下编译安装的Apache安全优化方案
本文地址:http://www.90qj.com/317.html  本文已经被百度收录,点击查看详情
版权声明:若无注明,本文皆为“挨踢 Blog”原创,转载请保留文章出处。
挤眼 亲亲 咆哮 开心 想想 可怜 糗大了 委屈 哈哈 小声点 右哼哼 左哼哼 疑问 坏笑 赚钱啦 悲伤 耍酷 勾引 厉害 握手 耶 嘻嘻 害羞 鼓掌 馋嘴 抓狂 抱抱 围观 威武 给力
提交评论

清空信息
关闭评论