设为首页 收藏本站
查看: 848|回复: 0

[经验分享] linux下编译安装的Apache安全优化方案

[复制链接]

尚未签到

发表于 2018-11-20 09:45:34 | 显示全部楼层 |阅读模式
上节我们学习了Linux的系统优化解决方案,我个人总结为18项,当然还有别的,例如系统内核裁剪这些我没讲到,为什么呢?大家不用太关心了,要记得我们学习的目的是能够胜任工作即可。我们对一个知识点不要讲的太深,避免钻进死胡同了,那就不好啦。
今天我们讲解下lamp架构安全优化中的Apache服务的安全优化。在讲这节内容之前我说下,静态web请求的流程:
当客户端访问一个静态网站的时候,网站上的Apache服务就会给他发送html文档给客户端浏览器,客户端浏览器会进行解析,然后就是我们看到的内容了。
Web服务Apache的安全优化,首先我们要了解其原理,然后才能入手怎么安全优化。这里我简单说下他的原理: DSC0000.gif
Apache HTTP服务器是一个模块化的软件,他采用的是采用的MPMMulti -Processing Modules,多道处理模块)
MPMApache的核心,它的作用是管理网络连接、调度请求。 DSC0001.gif
  Apache2.0MPM分为3种(perforkworkerevent)。
  perfork它采用的是进程管理方式,所以它可以提供更可靠的性能和更好的兼容性;
  workerApache2.0中新增加的方式,它采用了线程控制方法,可以比perfork更节约系统开销、处理更多的数据量,但同时兼容性并不是很好,很多旧的程序无法工作在worker下;
  event仍处于试验阶段,它为每个任务分配不同的进程池,目前不应该采用。
  

  通过命令 /application/apache/bin/apachectl -l可以获取目前Apache采用的是哪种MPM注意这里我是采用编译安装的
  本文仅针对perfork方式进行讨论
   DSC0002.png
  
现在我们开始修改我们的配置文件了。我们先回顾下
Apache的文件有哪些?
  

  bin目录用于存放Apache的一些可执行程序
  cgi-bin目录用于存放cgi程序的相关程序
  conf目录存放Apache的主配置文件及其他扩展文件
  error目录用于存放一些错误信息
  lib目录用于存放Apache的库文件
  logs目录用于存放Apache的程序日志包括访问日志和错误日志
  man目录用于存放 Apache的帮助文档
  modules目录用于存放各种模块文件
  htdocs目录用于存放网页文档
  从上们知道apache采用的是perfork模式。默认Apache的配置文件里没有开启调节进程参数的功能,我们要现在主配置文件里打开此项如下:
   DSC0003.png 修改380行,去掉前面的#
   DSC0004.png
  
  修改为如下表示开启prefork.c进程管理
  

   DSC0005.png

  
  怎么改呢?我们知道那个目录,然后打开就可以看到相应的内容
DSC0006.png DSC0007.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优化的重点。 DSC0008.gif

  下面我们说下隐藏版本号,控制会话连接,禁止DNS。(这些我们只要在文件末尾添加即可)
   DSC0009.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做好优化了,是不是很简单啊!大家不用记优化内容,只要记住优化点即可。 DSC00010.gif
  


  

  

  





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-637236-1-1.html 上篇帖子: apache+svn配置过程 下篇帖子: Apache 安装笔记
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表